Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переменная как индекс массива в запросе к MYSQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Максим21
Отправлено: 04 Мая, 2011 - 00:28:40
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




Добрый день.
Подскажите
Во общем ставлю индекс в массиве с помощью переменной а echo и в бд этот индекс просто не принимается,просто пусто, если вписываю цифры в индекс массива, все в порядке.

PHP:
скопировать код в буфер обмена
  1.         $handle=fopen("files\\ask.txt",'r');
  2. $a=0;
  3.  
  4. $x=5;
  5. $db = mysql_connect( "localhost", "maxim", "maxim" );
  6. mysql_errno() . ": " . mysql_error() . "\n";
  7. mysql_select_db( "Vic", $db );
  8. while(!feof($handle)) {
  9.         $b[$a]=fgets($handle);
  10.         $a++;
  11. if($a==$x){
  12.             $x+=5;  
  13.  
  14. echo $x."</br>";
  15.         $f=$a+1;
  16.         $c=$a+2;
  17.         $d=$a+3;
  18.         $e=$a+4;
  19.        
  20. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;
  21. $result = mysql_query( "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[0]','$b[1]','$b[2]','$b[3]','$b[4]')");
  22. }


Спасибо

(Отредактировано автором: 04 Мая, 2011 - 00:33:10)

 
 Top
DlTA
Отправлено: 04 Мая, 2011 - 00:33:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Максим21 пишет:
echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;

перепишите код так:
PHP:
скопировать код в буфер обмена
  1. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('{$b[$a]}','{$b[$f]}','{$b[$c]}','{$b[$d]}','{$b[$e]}')" ;

(Отредактировано автором: 04 Мая, 2011 - 00:34:41)

 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 00:37:49
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




DlTA пишет:
Максим21 пишет:
echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$b[$a]','$b[$f]','$b[$c]','$b[$d]','$b[$e]')" ;

перепишите код так:
PHP:
скопировать код в буфер обмена
  1. echo  "INSERT INTO Otveti (Vopros, Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('{$b[$a]}','{$b[$f]}','{$b[$c]}','{$b[$d]}','{$b[$e]}')" ;



Все равно не видит.
 
 Top
DlTA
Отправлено: 04 Мая, 2011 - 00:44:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




значит индексы указывают в несуществующую область
простой вывод
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
и сразу будет видно что и куда указывает.
 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 00:48:25
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




DlTA пишет:
значит индексы указывают в несуществующую область
простой вывод
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
и сразу будет видно что и куда указывает.

Если просто ввожу вручную значение переменной как индекс в массив то все впорядке.
Или я не правильно понял?.
10=','11=','12=','13=','14='
echo "$a={$b[$a]}','$f={$b[$f]}','$c={$b[$c]}','$d={$b[$d]}','$e={$b[$e]}'";
видит переменные но теже что внутри фигурных уже не видет.
(Добавление)
То есть такое впечатление что нужен какой то синтакис SQL внутри запроса потому что вне его переменные в индексе нормально работают.
Буду искать

(Отредактировано автором: 04 Мая, 2011 - 00:51:39)

 
 Top
OrmaJever Модератор
Отправлено: 04 Мая, 2011 - 00:56:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




мне кажется просто нету таких индексов Растерялся


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
evgenijj
Отправлено: 04 Мая, 2011 - 00:57:08
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Бредокод в чистом виде. Можно структуру файла? Тогда можно написать и скрипт интеграции файла в БД. fgets() использовать можно, но эта функция уже лет десять как устарела.
 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 00:58:37
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




OrmaJever пишет:
мне кажется просто нету таких индексов Растерялся

Улыбка
Может я действительно устал и не вижу очевидного, но я уже десять проверил, утро вечера мудреней, буду с утра долбить)
Спасибо всем.
(Добавление)
evgenijj пишет:
Бредокод в чистом виде. Можно структуру файла? Тогда можно написать и скрипт интеграции файла в БД. fgets() использовать можно, но эта функция уже лет десять как устарела.




А какой же функцией пользуются у Вас на сайте под черпнул?

1.Письмо от Вашего сотрудника. Скорее всего это:
a.Совет
b.Злостный прикол
c.Свежая порция сплетен
d.Веселая пародия на руководителя
2.Атмосфера в офисе:
a.Бывает разная
b.Творческая
c.Консервативная
d.Тяжелая
3.Утро понедельника. Ваш коллега:
a.Бойкий и болтливый
b.Истощенный и грустный
c.Игнорирует меня
d.Все время работает
4.Начало совещания. Ваш коллега:
a.Будет повторять монолог Гамлета
b.Сделает комплимент боссу по поводу его выбора туфель
c.Смущенно подойдет на 15 минут позже
d.Заклеймит презентацию нового проекта
e.Пожалуется на отсутствие бесплатного кофе[/quote]

(Отредактировано автором: 04 Мая, 2011 - 01:05:45)

 
 Top
evgenijj
Отправлено: 04 Мая, 2011 - 01:14:41
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?

Вроде оба по-русски говорим, но взаимопонимания нет.
Что означает Ваша фраза? (Русский язык богат, жаль, что Вы им не владеете)
А какой же функцией пользуются у Вас?
А какой же функцией пользуются у Вас на сайте?
А какой же функцией пользуются? У Вас на сайте почерпнул.
Если верно последнее утверждение - на каком сайте почерпнули? Что почерпнули? Почерпнули что-то полезное?
 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 01:14:54
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




Наверно что то с циклом связано, что действительно индекса такого не существует.
(Добавление)
evgenijj пишет:
Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?

Вроде оба по-русски говорим, но взаимопонимания нет.
Что означает Ваша фраза? (Русский язык богат, жаль, что Вы им не владеете)
А какой же функцией пользуются у Вас?
А какой же функцией пользуются у Вас на сайте?
А какой же функцией пользуются? У Вас на сайте почерпнул.
Если верно последнее утверждение - на каком сайте почерпнули? Что почерпнули? Почерпнули что-то полезное?


Я имел ввиду функцию про которую Вы говорили, что она устарела. Да почерпнул вот эту самую функцию fgets)
 
 Top
evgenijj
Отправлено: 04 Мая, 2011 - 01:29:19
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Мы здесь долго можем говорить "ни о чем". Чтобы сказать что-то мудрое, нужно посмотреть на файл ask.txt.
 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 01:43:45
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




[quote=evgenijj]
Максим21 пишет:
А какой же функцией пользуются у Вас на сайте под черпнул?


Извините, если я что то не так сказал, русским не владею, стыдно.

А дело все таки в цикле, так как запрос не успевает менять индексы,и в итоге берутся максимальные значение, которых в массиве кстати почему то не оказывается, в итоге пусты строки.
Вот странно почему fgets присваивает еще несколько пустых строк возможно нужен символ конца файла.
 
 Top
DlTA
Отправлено: 04 Мая, 2011 - 03:02:44
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




вообще посоветовал бы более наглядно оформлять код, скорее всего только из за этого и не заметили ошибку в этом месте
Максим21 пишет:
if($a==$x)
{
$x+=5;  
echo $x."</br>";
 $f=$a+1;
 $c=$a+2;
 $d=$a+3;
 $e=$a+4;
ошибка заключается в том что когда прочитан набор "1 вопрос и 4 ответа" ваш код пытается это дело записать НО индексы просчитываются не в ту сторону

пытаюсь объяснить наглядно
в $b[0]-вопрос $b[1]-$b[4] - ответы.
а после того как вы заполнили эти поля происходит обращение в поля начиная с 5
тоесть $b[5]-вопрос $b[6]-$b[9] - ответы. которые еще не определены.

надо было писать чет типа:
 $f=$a-4;
 $c=$a-3;
 $d=$a-2;
 $e=$a-1;
ну и для вопроса использовать не $a а какой нить $aa=$a-5;
и усе)
 
 Top
Максим21
Отправлено: 04 Мая, 2011 - 13:14:30
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




DlTA пишет:
вообще посоветовал бы более наглядно оформлять код, скорее всего только из за этого и не заметили ошибку в этом месте
Максим21 пишет:
if($a==$x)
{
$x+=5;  
echo $x."</br>";
 $f=$a+1;
 $c=$a+2;
 $d=$a+3;
 $e=$a+4;
ошибка заключается в том что когда прочитан набор "1 вопрос и 4 ответа" ваш код пытается это дело записать НО индексы просчитываются не в ту сторону

пытаюсь объяснить наглядно
в $b[0]-вопрос $b[1]-$b[4] - ответы.
а после того как вы заполнили эти поля происходит обращение в поля начиная с 5
тоесть $b[5]-вопрос $b[6]-$b[9] - ответы. которые еще не определены.

надо было писать чет типа:
 $f=$a-4;
 $c=$a-3;
 $d=$a-2;
 $e=$a-1;
ну и для вопроса использовать не $a а какой нить $aa=$a-5;
и усе)


Спасибо за помощь.
Во общем сделал так, может бредо код но в силу моих возможностей.
PHP:
скопировать код в буфер обмена
  1. $handle=file("files\\ask.txt");
  2. $a=0;
  3. $db = mysql_connect( "localhost", "maxim", "maxim" );
  4. mysql_errno() . ": " . mysql_error() . "\n";
  5. mysql_select_db( "Victorina", $db );
  6.  
  7. $mass=array_chunk($handle,5);
  8.  
  9. while($a<=3) {
  10. $massask[$a]=$mass[$a][0];
  11. $vv=next($massask);
  12. $massv1[$a]=$mass[$a][1];
  13. $massv2[$a]=$mass[$a][2];
  14. $massv3[$a]=$mass[$a][3];
  15. $massv4[$a]=$mass[$a][4];
  16. $result = mysql_query( "INSERT INTO Otveti (Vopros,Otvet1,Otvet2,Otvet3,Otvet4)  VALUES ('$massask[$a]','$massv1[$a]','$massv2[$a]','$massv3[$a]','$massv4[$a]')",$db);
  17. mysql_errno() . ": " . mysql_error() . "\n";
  18. $a++;
  19. }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB