[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с циклом
opalaman
Всем добрый вечер,

помогите с циклом... Цикл надо выполнять до тех пор пока $chars[$i] не станет равной пустой записи. Какой вариант правильный, первый или второй?

1.
while ($chars[$i]='');

2.
while ($chars[$i]!='');


п.с. заранее спасибо...

п.с.с. мне кажется что первый вариант правильный... но т.к. не сплю уже 2 день, голова не варит и начали терзать сомнения :/



Спустя 2 минуты, 5 секунд (12.02.2012 - 21:06) inpost написал(а):
= - это присваивание(!). smile.gif
while - выполняется, пока TRUE smile.gif

Спустя 1 минута, 41 секунда (12.02.2012 - 21:07) php-down написал(а):
может NULL лучше исользнуть ?

Спустя 3 минуты, 21 секунда (12.02.2012 - 21:11) inpost написал(а):
0 is null smile.gif

Спустя 2 минуты, 19 секунд (12.02.2012 - 21:13) opalaman написал(а):
Цитата (inpost @ 12.02.2012 - 18:06)
= - это присваивание(!). smile.gif
while - выполняется, пока TRUE smile.gif


а кодом не поможете, как лучше это отобразить?
мб так:
while ($chars[$i]=='');

Спустя 4 минуты, 53 секунды (12.02.2012 - 21:18) inpost написал(а):
а смысл прогонять цикл в пустую? smile.gif

Спустя 2 минуты, 11 секунд (12.02.2012 - 21:20) walerus написал(а):

while ( trim( $chars[$i] ) == '' )
{
// Выполнять пока $chars[$i] равно пустоте и остановиться когда в $chars[$i] хоть что то будет
}

while ( trim( $chars[$i] ) != '' )
{
// Выполнять пока в $chars[$i] хоть что то есть, и остановиться когда $chars[$i] пусто
}


Спустя 4 минуты, 4 секунды (12.02.2012 - 21:24) opalaman написал(а):
Цитата (inpost @ 12.02.2012 - 18:18)
а смысл прогонять цикл в пустую? smile.gif

Вы наверное думаете что это весь код?) Если да, то это не так...)

Вот весь код:

    if (isset($_REQUEST["tags"])) 
{
$tags = $_REQUEST["tags"];
$chars = explode(",", $tags);
$i=0;

do
{
$result_chars = trim($chars[$i]);
$result_choice_up = mysql_query("SELECT tag_name, count
FROM tags WHERE tag_name='
$result_chars'");

if (mysql_num_rows($result_choice_up)>0)
{
$myrow_choice_up = mysql_fetch_assoc($result_choice_up);
$new_count = $myrow_choice_up['count']+1;
$result = mysql_query ("UPDATE tags SET count='$new_count'
WHERE tag_name='
$result_chars'");
$i++;
}

else
{
$result = mysql_query("INSERT INTO tags (tag_name, count)
VALUES ('
$result_chars', 1)",$db);
$i++;
}
}


while ($chars[$i]!='');

}

else $tags = '';


Всё вроде хорошо, даже работает... но выдает "Notice: Undefined offset: 1 in D:\www\site\add_article.php on line 100". Line 100 это вот эта строчка "while ($chars[$i]!='');" Вот и решил спросить совета как лучше завершить цикл.

Спустя 20 минут, 47 секунд (12.02.2012 - 21:45) walerus написал(а):
while (isset( $chars[$i] ) && $chars[$i] != '' );

Спустя 3 минуты, 40 секунд (12.02.2012 - 21:49) opalaman написал(а):
Цитата (walerus @ 12.02.2012 - 18:45)
while (isset( $chars[$i] ) && $chars[$i] != '' );


разве это и будет означать "цикл выполняем до тех пор пока $chars[$i] не станет равной пустой записи"?

Спустя 3 минуты (12.02.2012 - 21:52) walerus написал(а):
while ( isset( $chars[$i] ) ||  $chars[$i] != '' );
- вот так вернее

Спустя 2 минуты, 42 секунды (12.02.2012 - 21:54) opalaman написал(а):
С этим вариантом не выдает "Notice: Undefined offset: 1 in D:\www\site\add_article.php on line 100"
while (isset( $chars[$i] ) && $chars[$i] != '' );



а с этим:
while ( isset( $chars[$i] ) ||  $chars[$i] != '' );
выдает... :(

Спустя 6 минут, 38 секунд (12.02.2012 - 22:01) walerus написал(а):
Перед do поставить
 $update_table = true;


вместо while ()...


if ( isset( $chars[$i] ) )
{
if ( trim( $chars[$i] ) == '' )
$update_table = false;
}
else
$update_table = false;

while ($update_table);

Спустя 59 минут, 43 секунды (12.02.2012 - 23:01) opalaman написал(а):
Цитата (walerus @ 12.02.2012 - 19:01)
Перед do поставить

$update_table = true;



вместо while ()...


if ( isset( $chars[$i] ) )
  {
    if ( trim( $chars[$i] ) == '' )
      $update_table = false;
  }
else
  $update_table = false;

while ($update_table);


что-то не то... сплошные ошибки пошли.

Спустя 1 час, 33 минуты, 55 секунд (13.02.2012 - 00:34) walerus написал(а):
opalaman покажи полностью код, как ты исправил.

Спустя 11 минут, 37 секунд (13.02.2012 - 00:46) walerus написал(а):
Вообще перепиши так
<?php 
if ( isset( $_REQUEST["tags"] ) )
{
$tags = $_REQUEST["tags"];
$chars = explode(",", $tags);
$i = 0;

$update_or_insert = true; // По умолчанию запускаем обновление или добавление
while( $update_or_insert )
{
$result_chars = trim( $chars[$i] );
$result_choice_up = mysql_query( "SELECT tag_name, count FROM tags WHERE tag_name='$result_chars'" );

if ( mysql_num_rows( $result_choice_up ) > 0 )
{
$myrow_choice_up = mysql_fetch_assoc( $result_choice_up );
$new_count = $myrow_choice_up['count']+1;
$result = mysql_query ( "UPDATE tags SET count='$new_count' WHERE tag_name='$result_chars'" );
$i++;
}

else
{
$result = mysql_query( "INSERT INTO tags (tag_name, count) VALUES ('$result_chars', 1)", $db );
$i++;
}

if ( isset( $chars[$i] ) ) // Если $chars[$i] существует, переходим к проверке - "что внутри"
{
if ( trim( $chars[$i] ) == '' )
$update_or_insert = false; // Если внутри пусто, то заканчиваем цикл
}
else
$update_or_insert = false;// Если $chars[$i] НЕ существует, то заканчиваем цикл
}

else $tags = '';
}
else
echo "Теги не введены.";

Спустя 25 минут, 58 секунд (13.02.2012 - 01:12) opalaman написал(а):
Цитата (walerus @ 12.02.2012 - 21:34)
opalaman покажи полностью код, как ты исправил.


заработало =) не там скобку закрыл... получалось что DO закончилася и начался сразу IF...

а можешь в кратце объяснить что за манипуляции мы сделали?

Спустя 2 минуты, 36 секунд (13.02.2012 - 01:15) opalaman написал(а):
walerus
Спасибо за помощь.

Спустя 10 часов, 11 минут, 46 секунд (13.02.2012 - 11:26) walerus написал(а):
opalaman - Ну я как бы подробно оставил комментарии по коду, что именно тебе непонятно ? )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.