Вот такой нехитрый код: PHP: <?php define( "DATABASE_SERVER", "" ); define( "DATABASE_USERNAME", "" ); define( "DATABASE_PASSWORD", "" ); define( "DATABASE_NAME", "" ); $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD); mysql_select_db( DATABASE_NAME ); $dir = '/files'; dirlist($dir); function dirlist($dir) { foreach(scandir($dir) as $entry) if($entry != '.' && $entry != '..') { mysql_query("INSERT INTO tbl_categories (`category_id`, `subcatENG_label`) VALUES ('', '$entry')"); } } ?> В результате в базу данных заноситься имена директорий и поддиректорий. По какой-то непонятной мне причине в базе данных создается двойной список - например, если есть две директории А и Б, то в базе данных создаетсья 4 строчки - А Б А Б. если сделать PHP: echo"INSERT INTO tbl_categories (`category_id`, `subcatENG_label`) VALUES ('', '$entry')<br>"; в таких случаях, в случаях непосредственного вывода результатов на страничку, все нормально - т.е. записи создаються как и полагаеться в единственном числе (на страничке в единственном, в базе данных - все так же в двойном, или тройном, варианте). Т.е. я так понимаю, что должно быть что-то с самой базой данных. НО даже не придумаю, что именно. Кто может объяснить в чем проблема? С другиим вариантами php-кода, который тоже создавал список директорий, в базе данных оказывался тройной список.. Спасибо за помощь.
скрипт рабочий. твой наверное тоже. значит дело в базе. попробуй чистить таблицу перед записью? в базу заносится каждый раз как ты скрипт дергаешь. http://440hz.ru/trash/dirlist/ PHP: <? function dirlist($dir) { foreach(scandir($dir) as $entry) { if($entry != '.' && $entry != '..') { print('<br />'.$entry); } } } $dir = './'; dirlist($dir); ?>
В этом-то и дело - я как раз очищаю базу данных перед каждым тестированием этого кода. Фишка в том, что в пустую таблицу только за одно выполнение скрипта вносяться двойные значения. Я уже даже полностью базу данных удалял и создавал новую, и все равно тоже самое. Я тоже думаю, что это дело именно в базе данных, но где искать причину, хоть приблизительно.
да, именно его я тестирую. т.е. тот код, только естественно со вставленными именами базы данных, таблиц и прочее, тестирую на своем хостинге. И вот такое получаеться. Кстати, рыская интернетом, я на каком-то форуме нашел такую же ошыбку, только там так ответ никто и не дал.
А возможно, что дело все таки и в пхп - у меня на этом же mysql сервере и другие базы данных (блог и все такое), но там записи н едублируються.
вынеси scandir($dir) из цикла $tmp = scandir($dir) foreach($tmp as $entry) но это тупизм. если при выводе echo выдает правильно, то и записывать должна правильно. чаще всего ошибки в {} скобках и нарушении логики. причина - неформатированный код.
1)Вынес - не помогло; 2)Код, который я привожу в самом начале - абсолютно реальный, именно его я исспользую - буковка в буковку (все, что я убрал из него, это конкретные названия базы данных, пароля, сервера); 3)Попробовал создать таблицу через пхп (новую) (обычно я их создавал в phpmyadmin) и уже туда вставлять значения - все тоже, дублируются
Да уж, я как бы причину нашел, но вот как ее решить. Оказалось, что когда страничку запускать в опере - значения дублируются, в IE - все нормально. Только вот по какой причине это происходит.
html там нет, тот код, который приведен в самом начале - это единственный код на странице. Как я уже написал, оказалось, что такое происходит только в Opera, при этом в IE and Firefox все работает нормально.
С удовольствием, если ты скажешь, где их найти. И чего именно логи. Уж прости, если вопрос глупый, но я не знаю.
Те же яйца. Как показало вскрытие все дело в браузере.И в сессиях.У меня при include файла который содержит seesion_start()