ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

пробема с инсертом в бд через пхп, допотопный bchat
  #1  
Старый 22.12.2009, 18:18
Аватар для Dj Skeleton™
Dj Skeleton™
Участник форума
Регистрация: 01.06.2002
Сообщений: 225
Провел на форуме:
154966

Репутация: 40
По умолчанию пробема с инсертом в бд через пхп, допотопный bchat

есть скрипт добавления вопросов в викторину чата(стандартный распространенный "bchat"):

Код:
<?
$file=file("quest.txt");
for($i=0;$i<count($file);$i++) {
$ex=explode("::",$file[$i]);
$vop=trim($ex[0]);
$ans=trim($ex[1]);
$tran=strtr(trim($ans),array("а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"i","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ш"=>"w","щ"=>"w","ц"=>"c","ч"=>"4","ь"=>".","ъ"=>".","ы"=>"y","э"=>"e","ю"=>"yu","я"=>"ya","А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E","Ё"=>"E","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"I","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"H","Ш"=>"W","Щ"=>"W","Ц"=>"C","Ч"=>"4","Ь"=>".","Ъ"=>".","Ы"=>"Y","Э"=>"E","Ю"=>"Yu","Я"=>"Ya"));
$r=mysql_query("Select * from `vopros`");
$k = mysql_num_rows($r);
$k=$k+1;
$sql="INSERT INTO `vopros` (`klu4`,`number`,`time`,`question`,`answer`,`tran`) VALUES('$k','$k','','$vop','$ans','$tran');";
$r=mysql_query ($sql);
}
echo $k."<br/>";
print count($file);
?>
</p>
суть проблемы такова:
в файле quest.txt 1482 строки. скрипт выполняется секунд 10, потом почему-то выходит из цикла. значения счетчика $k и count($file) на момент прекращения работы скрипта составляют 128/1482.

вот 127, 128 и 129 строка файла quest.txt
Код:
Плоскостной или тонкий лепной орнамент со сложным - обычно симметричным - рисунком, стилизующим растительные побеги (иногда в сочетании с геометрическими фигурами, надписями, изображениями людей и животных).::арабески
Разрешение спорных вопросов не судебного характера с помощью арбитра.::арбитраж
Орган, создаваемый для разрешения имущественных споров между различными предприятиями, учреждениями, организациями.::арбитраж
в чем может быть проблема? почему цикл прерывается и завершается на 128 строке, хотя по условию был должен дойти до count($file), т.е. 1482.
 
Ответить с цитированием

  #2  
Старый 22.12.2009, 18:33
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Потому что вот так надо:

$count = count($file);
for($i=0;$i<$count;$i++) {
.....

просто не успевает считать, ты заставляешь его пересчитывать массив какждую итерацию, проблема становится очевидной только при большом объеме данных прогоняемых в цикле
 
Ответить с цитированием

  #3  
Старый 23.12.2009, 15:49
Аватар для Dj Skeleton™
Dj Skeleton™
Участник форума
Регистрация: 01.06.2002
Сообщений: 225
Провел на форуме:
154966

Репутация: 40
По умолчанию

так а почему тогда он из цикла то выходит? допустим, не успевает считать, но почему останавливается именно на 128?
сделал, как ты написал, проблема осталась та же.

задачу решил по-другому, просто полю ключ дал avto_increment и значение $k скрипт не считал. только вот в чем была проблема, я так и не разобрался :-/
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ