Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > работа со строками


Автор: Vidocq 14.4.2005, 10:52
Обратившись к БД с запросом, обработав результат, получаю ассоциативный массив. В ключе
Код

$assoc_array['TE']

содержится 10-значное число. Так вот мне надо "откусить" от него первые две цифры. Пробовал
Код

$first_2_digits = substr($assoc_array['TE'], 0, 2);


почему-то не работает smile

Как будет правильно? smile

Автор: Mal Hack 14.4.2005, 11:15
Цитата(Vidocq @ 14.4.2005, 11:52)
почему-то не работает smile

А что не так выдает?
Код-то правильный.

Автор: TicTak 14.4.2005, 11:22
Так тебе надо от ключа откусить или от значения? Ты откусываеш от значения.

Автор: Vidocq 14.4.2005, 11:24
Mal Hack
ну я потом делаю рабочую печать
Код

print $first_2_digits;

так оно печатает пустую строку - то есть ничего не печатает smile
Может его надо сперва как-то сконвертить? Типа применить strval?
Добавлено @ 11:25
TicTak
От _значения_, ессно smile
на кой пень мне ключ smile smile

Автор: Mal Hack 14.4.2005, 11:29
Значит в $assoc_array['TE'] пустая строка или $first_2_digits апосля обнуляется

Автор: Vidocq 14.4.2005, 11:40
Mal Hack
Цитата

Значит в $assoc_array['TE'] пустая строка или $first_2_digits апосля обнуляется

да нет же, я его перед тем в таблицу вывожу smile
Там всё печатается намана smile ФФак

Автор: IZ@TOP 14.4.2005, 14:23
А у тебя $assoc_array['TE'] случаем не еще один массив? И дай поглядеть весь код.

Автор: Vidocq 14.4.2005, 14:37
IZ@TOP
да я тоже так сначала думал - но нет. Код смогу только вечером запостить.

Автор: Vidocq 14.4.2005, 20:11
Постю код

Код

<?php
include("connect.php");

$user_region = $_REQUEST["region"];
if ($user_region != "")
   {
    //$user_region = htmlspecialchars($user_region);
    $user_region = trim($user_region);

    //indeed this is REALLY  a magical string :)///////////////////////////////
    //it converts ukrainian 'i' into latin 'i' making the search possible :))))
    $user_region = strtr($user_region, "і", "i");
    $user_region = strtr($user_region, "Ї", "Ї");
    //$user_region = strtr($user_region, "'", "'");
    ///////////////////////////////////////////////////////////////////////////

    //print($user_region);
    print("<br>");
    $user_region = $user_region."%";
    //print($user_region);
    print("<br>");
    $SqlText = "Select * FROM dov_koatuu WHERE NU LIKE '$user_region'";
    print($SqlText);
    print("<br>");
    $result = mysql_query($SqlText) or die("Error occurred in query request :(  " . mysql_error());

?>

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
<table border=1>
       <tr>
           <td>КОАТУУ</td>
           <td>Название</td>
       </tr>

           <?php
                 while ($array = mysql_fetch_array($result))
                 {
                  print("<tr>");

                  print("<td>");
                  print($array['TE']);
                  print("</td>");

                  print("<td>");
                  print($array['NU']);
                  print("</td>");

                  print("</tr>");
                 }

print substr($array['TE'], 0, 2);
?>
</table>
<br>
<a href='sort.php'>Назад</a>
<?php
}//if
else{
     print("Вкажіть критерій пошуку!");
?>

<br>
<a href='sort.php'>Назад</a>

<?php }//else?>
</body>
</html>


Фляга! smile
В натуре $array['TE'] пустая. Почему?

Автор: Irokez 14.4.2005, 20:24
попробуй print_r($array);
и посмотри что тебе выдаст

Автор: Mal Hack 14.4.2005, 20:51
проблемы с областью фидимости. Т.е.
Код
<?php 
$a = 5;
?>
<?php
// ТУТ $a видна не будет.
?>

Автор: IZ@TOP 14.4.2005, 20:55
Код
  while ($array = mysql_fetch_array($result))
                 {
                  print("<tr>");

                  print("<td>");
                  print($array['TE']);
                  print("</td>");

                  print("<td>");
                  print($array['NU']);
                  print("</td>");

                  print("</tr>");
                 }

print substr($array['TE'], 0, 2);

Попробуйте догадайтесь как цикл закончится smile Правильно, mysql_fetch_array вернет false, переменная array будет равна логическому нет smile Какие мы умницы smile
Добавлено @ 20:56
Mal Hack, а при чем тут это?

Автор: Irokez 14.4.2005, 21:05
Цитата(Mal @ 14.4.2005, 20:51)
проблемы с областью фидимости. Т.е.

что то ты тут напутал?
Добавлено @ 21:06
Цитата(IZ @ 14.4.2005, 20:55)
Попробуйте догадайтесь как цикл закончится smile Правильно, mysql_fetch_array вернет false, переменная array будет равна логическому нет smile Какие мы умницы smile

не понял, почему?

Автор: Mal Hack 14.4.2005, 21:29
Код
    $result = mysql_query($SqlText) or die("Error occurred in query request :(  " . mysql_error());
?>
......
           <?php
                 while ($array = mysql_fetch_array($result))

$result не будет виден дя mysql_fetch_array.

Автор: Irokez 14.4.2005, 21:44
Цитата(Mal @ 14.4.2005, 21:29)
$result не будет виден дя mysql_fetch_array.

так это же в одном файле находится... не пойму ...

Автор: Mal Hack 14.4.2005, 21:49
Цитата(Irokez @ 14.4.2005, 22:44)
так это же в одном файле находится... не пойму ...

Звиняйте... Что-то меня проглючило... Али голова не варит...

Автор: Irokez 14.4.2005, 21:51
ниче, бывает ... а вот то что IZ@TOP сказал я до сих пор не пойму ..

Автор: IZ@TOP 14.4.2005, 22:01
да чего тут непонятного то???
Есть цикл -
Код

while($var = mysql_fetch_array($result)) {

 echo $var['my_filed'];

}


Когда цикл прерыввается знаете? Когда условие равно логическомцу нет, или проще говоря функция mysql_fetch_array вернет false в силу того что ей будет больше нечего возвращать! А если после цикла сделать var_dump($var['my_filed']) увидем bool false! smile

Или я здесь один трезвый? smile

Автор: Irokez 14.4.2005, 22:10
Цитата(IZ @ 14.4.2005, 22:01)
Чего непонятно то???!!! smile

дошло ... smile пойду повешусь ...

Автор: IZ@TOP 14.4.2005, 22:11
Irokez, лучше ненадо smile просто запомни - алкоголь вредит еще и мозгу smile
PS Шутка smile

Автор: Vidocq 15.4.2005, 00:26
IZ@TOP
Irokez
Mal Hack
Всё, так как говорит IZ@TOP!

Я теперь разобрался. Всё пашет. Короче окончательный вид кода, сдаваемого в производство:
Код

<?php
include("connect.php");

$user_region = $_REQUEST["region"];
if ($user_region != "")
   {


    $user_region = $user_region."%";
    print("<br>");
    $SqlText = "Select * FROM dov_koatuu WHERE NU LIKE '$user_region'";
    $result = mysql_query($SqlText) or die("Error occurred in query request :(  " . mysql_error());

?>

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</head>
<body>
<FORM action='display_specific.php' method='POST'>
<table border=1>
       <tr>
           <td>КОАТУУ</td>
           <td>Назва</td>
       </tr>

           <?php
                 while ($array = mysql_fetch_array($result))
                 {
                  $table =  "<tr>";

                  $table = $table . "<td>";
                  $table = $table . $array['TE'];

if ($array['TE']!= NULL) $region_TE = $array['TE'];// вот где был баг

                  $table = $table . "</td>";

                  $table = $table . "<td>";
                  $table = $table . $array['NU'];
                  $table = $table . "</td>";

                  $table = $table . "</tr>";
                 }
                 print $table;
$first_2_digits = substr($region_TE, 0, 2);
?>
  <tr>
      <td>Вкажіть місто, район, селище</td>
      <td><input type=text name=specific_location></td>
      <td><input type="hidden" name="first_2_digits" value="<?=$first_2_digits?>"> </td>
  </tr>
</table>
<input type=submit value=Пошук>
</FORM>
<br>
<a href='sort.php'>Назад</a>



<?php
}//if
else{
     print("Вкажіть критерій пошуку!");
?>

<br>
<a href='sort.php'>Назад</a>

<?php }//else?>

</body>
</html>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)