Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Заполнение таблицы БД (mysql+php) - прошу вашей помощи (http://forum.oszone.net/showthread.php?t=101795)

xkornx 01-03-2008 05:21 751107

Заполнение таблицы БД (mysql+php) - прошу вашей помощи
 
Здравствуйте, я новичек в PHP и MySQL. Прошу вашей помощи.
Создана база данных "anibase", в которой есть таблица "anime_company", состоящая из 3 полей (id (int), name (varchar(60)), image (text)). Необходимо написать скрипт, заполняющий данную таблицу. Данные для поля "name" хранятся в текстовом файле "company.txt". Всего 120 компаний. Каждой компании соответствует свой логотип. Имена логотипов пронумерованы от 1 до 120.
Вот код скрипта:

Никаких ошибок не выдается. При выводе на экран (в конце цикла) все данные отображаются правильно. Однако в саму таблицу запись не добавляется, т.е. таблица остается пустой. Может быть кто-нибудь сможет помочь разобраться, в чем тут дело?

bruder 01-03-2008 11:20 751190

можно посмотреть ошибку которую выдает mysql-пример из мануала

PHP код:

<?php 
mysql_connect
("localhost""mysql_user""mysql_password"); mysql_select_db("nonexistentdb"); 
echo 
mysql_errno() . ": " mysql_error(). "\n"mysql_select_db("kossu"); mysql_query("SELECT 
* FROM nonexistenttable"
); echo mysql_errno() . ": " mysql_error() . "\n"?>

а лучше выдать эхом request и вывести его в вашем mysql едиторе, мне например кажется что в таблице anime_company первый столбец должен быть уникальным а вы суете одну и ту же переменную $z.

потом если записей в файле меньше чем 120 заносится будет пустое значение. Если стоит NOT NULL в таблице тоже не прокатит. Надо длинну массива брать count($l) или foreach. И интересно для чего нужна $t?

P.S. Переменным не мешало бы дать нормальные имена, а то путаешься

Coutty 01-03-2008 12:01 751197

Обалдеть... Скрипт в bmp... Полтора метра... Используйте тэг [php]

Что-то я не понял - зачем открывается файл с изображением, если данные из него не используются? Если это проверка на наличие, то надо использовать функцию file_exists().
Также напрасно открывается и текстовый файл.

Цикл построен как-то странно... Можно проще:
PHP код:

// делаем всякие там коннекты и переход в нужный каталог, а потом (после chdir()):
$nameArr file("company.txt"); // читаем файл в массив
foreach ($nameArr as $name// в цикле помещаем каждый элемент массива в переменную и выполняем след.операции:
  
{
  
$i++; // счётчик. Начинаем с единицы, получается...
  
if (file_exists($i ".jpg")) // если файл присутствует
    
$filePath "d:/anibase/site/bd/company/" $i ".jpg"// присваиваем переменной полный путь
  
else // если отсутствует
    
die("Файл под номером $i соизволит не присутствовать в каталоге"); // завершаем цикл. Хотя я бы тут обработчик другой поставил. Типа $filePath = "d:/anibase/site/bd/company/nofile.jpg";
  //составляем sql-запрос: 
  
$sql "INSERT INTO anime_company (name, image) VALUES ('$name', '$filePath');"
  
// мы же не забудем поставить точку с запятой в конце sql-запроса? Без неё, кажись, не будет работать. Идентификатор id по идее должен генерироваться автоматически, если ему поставили автоинкремент при создании таблицы.
  
mysql_query($sql); // собственно, сам sql-запроc делаем
  
echo "id = $i; name = $name; imagePath = $filePath<br />"// выводим на экран, раз уж хочется.
  

mysql_close($msconnect); // а остальные файлы закрывать и не требуется. 

Кажись, так должно работать.

xkornx 01-03-2008 16:04 751260

bruder, Coutty, искренне благодарю за оказанную помощь.
Цитата:

Цитата bruder
мне например кажется что в таблице anime_company первый столбец должен быть уникальным а вы суете одну и ту же переменную $z. »

Первый столбец уникальный (но я не указывал автоинкремент). Переменная $z изменяется от 1 до 120.
Цитата:

Цитата bruder
потом если записей в файле меньше чем 120 заносится будет пустое значение »

Да, конечно, Вы правы. Однако я писал этот скрипт для конкретной ситуации. В файле ровно 120 записей.
Цитата:

Цитата bruder
И интересно для чего нужна $t? »

Благодарю, уже понял, что данная строка совсем не нужна.

Цитата:

Цитата Coutty
зачем открывается файл с изображением, если данные из него не используются? Если это проверка на наличие, то надо использовать функцию file_exists().
Также напрасно открывается и текстовый файл. »

Спасибо, снова глупость написал ^__^
Цитата:

Цитата Coutty
Цикл построен как-то странно... Можно проще.
Кажись, так должно работать. »

Спасибо, все работает. Понял свои ошибки и принял к сведению ваши советы.
Еще раз благодарю.


Время: 07:08.

Время: 07:08.
© OSzone.net 2001-