Ayola.net
Новости: В связи с обилием спама, постинг на форуме временно закрыт.

Для связи с поддержкой используйте тикеты в панели управления.
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь. Август 23, 2017, 17:06:25


Войти


Страниц: [1] 2
  Печать  
Автор Тема: Классный журнал  (Прочитано 11951 раз)
0 Пользователей и 1 Гость смотрят эту тему.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« : Декабрь 06, 2007, 20:39:51 »

Кто-нибудь в курсе, что не так в этой строке? Я вроде ничего плохого не вижу, а сервер пишет, что не правильно. Вот строка:

mysql_query("INSERT INTO `$base` VALUES(\"$subject\", \"$_POST['$i*$w+1']\", \"$_POST['$i*$w+$j+1']\", \"$_POST['$j+1']\", \"$_POST['$j+52']\", \"0\")",$connect);

А вот сообщение об ошибке:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\Apache Group\Apache\htdocs\livemarks\update.php on line 29

А это и есть 29 строка.
« Последнее редактирование: Декабрь 07, 2007, 01:14:44 от popov654 » Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #1 : Декабрь 06, 2007, 20:47:37 »

mysql_query("INSERT INTO `$base` VALUES(\"$subject\", \"$_POST['$i*$w+1']\", \"$_POST['$i*$w+$j+1']\", \"$_POST['$j+1']\", \"$_POST['$j+52']\", \"0\")",$connect);
mysql_query("INSERT INTO `$base` VALUES('".$subject."', '".$_POST['$i*$w+1']."', '".$_POST['$i*$w+$j+1']."', '".$_POST['$j+1']."', '".$_POST['$j+52']."', ".0.")",$connect);

Зачем было ставить столько слешей? Тут нужно ставить объединение строк...
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #2 : Декабрь 06, 2007, 21:12:39 »

Спасибо, уже лучше.  Веселый
Но всё равно не работает. Этот скрипт должен записывать значения в базу данных. Я там ещё вставил кусок кода, который сообщает об ошибке при записи:
if (!$db) echo "Ошибка записи";
Ну вот, он это и пишет при запуске. Значит, на этот раз что-то не нравится SQL-серверу? Может, что-то ещё не так в этой строке?
P.S. $db-это то, что вернула mysql_query
Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #3 : Декабрь 06, 2007, 21:24:41 »

mysql_query("INSERT INTO `$base` VALUES(\"$subject\", \"$_POST['$i*$w+1']\", \"$_POST['$i*$w+$j+1']\", \"$_POST['$j+1']\", \"$_POST['$j+52']\", \"0\")",$connect);
mysql_query("INSERT INTO `$base` VALUES('".$subject."', '".$_POST['$i*$w+1']."', '".$_POST['$i*$w+$j+1']."', '".$_POST['$j+1']."', '".$_POST['$j+52']."', ".0.")",$connect);

Но всё равно не работает.
Ну еще бы. Я и не заметил, что и имя базы у вас идет как переменная.

mysql_query("INSERT INTO `".$base."` VALUES('".$subject."', '".$_POST['$i*$w+1']."', '".$_POST['$i*$w+$j+1']."', '".$_POST['$j+1']."', '".$_POST['$j+52']."', ".0.")",$connect);

Да, кстати. Этот запрос будет работать только с нашего хоста, с домашней машины вы не подключитесь к БД.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #4 : Декабрь 06, 2007, 21:33:47 »

А почему когда я делал выборку, оно работало и без этого?
$db=mysql_query("SELECT DISTINCT name FROM `$base` ORDER BY name",$connect);
Здесь же хватило обратных кавычек...
Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #5 : Декабрь 06, 2007, 21:36:07 »

Этот запрос сейчас работает? Или нет?

Почему работало? - Не знаю, но правильно писать с объединением строк.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #6 : Декабрь 06, 2007, 21:48:34 »

Нет, я проверил. Не работает. А как он может работать, если переменная $base не определена? Я сделал проверку, и понял что она не задана. Поэтому, я полагаю, не так важно, поставил я там объединение, или нет. А вот почему она не задана, если я в предыдущем скрипте записал её в массив $_POST-этого я не понимаю. Просто чудеса. Грустный
Записан
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #7 : Декабрь 06, 2007, 21:52:31 »

Предыдущий скрипт был устроен примерно так: там выводилась веб-форма, обработчиком которой является вот этот скрипт, и в самом конце вывода, после вывода тэга </form>, в массив $_POST помещались два значения. Я не очень понимаю, почему скрипт-обработчик этой формы их не видит. Метод формы-POST. Она что, стерла эти данные из массива когда я нажал Submit?
Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #8 : Декабрь 06, 2007, 21:55:25 »

В массив $_POST нельзя дописать. Нужно создавать элемент типа hidden, которому нужно присвоить необходимые имя и значение.
Это единственно правильный метод передачи каких то скрытых данных.

А потом в этом скрипте ее нужно из $_POST'а и вытащить.

И вообще желательно не привыкать к использованию register_globals.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #9 : Декабрь 06, 2007, 22:00:10 »

В смысле не привыкать? А я их разве использовал? Ведь суперглобальные массивы и глобальные переменные-это разные вещи. Скрипты, написанные с использованием этих массивов, прекрасно работали на хостингах, где rigister_globals было отключено. И потом, а как ещё можно передавать данные?
P.S. Насчёт элемента я догадывался, просто это был самый неудобный вариант, поскольку надо было редактировать предыдущий скрипт. Я надеялся, что есть другой выход...
Записан
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #10 : Декабрь 06, 2007, 22:01:26 »

И потом, а как ещё можно передавать данные?
Сессии only! ИМХО!
Записан

Гамлета здесь больше нет. Осталась только тень.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #11 : Декабрь 06, 2007, 22:07:05 »

То есть $_SESSION? Я просто не очень в этом разбираюсь, Вы уж извините...
Кстати, добавить два скрытых элемента в форму оказалось не так уж сложно, зря я говорил...
Записан
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #12 : Декабрь 06, 2007, 22:45:02 »

То есть $_SESSION? Я просто не очень в этом разбираюсь, Вы уж извините...
Кстати, добавить два скрытых элемента в форму оказалось не так уж сложно, зря я говорил...
Именно - $_SESSION один из немногих масивов которые можно напрямую дополнять.
Записан

Гамлета здесь больше нет. Осталась только тень.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #13 : Декабрь 07, 2007, 00:10:48 »

Теперь совсем странные дела происходят. Похоже опять что-то не так с той самой строкой. Дело в том, что она записывает в базу только первый элемент списка VALUES($subject) и последний (0)-это уникальный идентификатор, id. А всё остальное вроде $_POST['$i*$w+1'], хоть оно и записано с объединением строк как положено, она знать не желает и пишет пустые строки. Это случайно не от того, что у меня в квадратных скобках после слова POST стоят выражения в несколько уровней? И если да, то что можно сделать, чтобы это исправить?
Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #14 : Декабрь 07, 2007, 00:23:23 »

Т.е. $_POST['А_здесь_результат_математического_уравнения']? Если так, то опять таки приведение к строке.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #15 : Декабрь 07, 2007, 00:25:21 »

Да, похоже так и есть-попробовал вывести эти значения в браузер, прежде чем писать их в базу-так там появился чистый лист, а в сгенерированном коде источника только сплошное "<br> <br>", вместо ожидаемого "<br>значение1 значение2 значение3 значение4<br>"...грустно.
Записан
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #16 : Декабрь 07, 2007, 00:27:41 »

А это как? В смысле, посчитать его в какую-нибудь переменную, а потом сказать $_POST['$переменная']?
Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #17 : Декабрь 07, 2007, 00:32:54 »

Что то вроде

$temp=$i*$w+1;
$temp.=""; //Приводим к строке
$_POST[$temp];
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #18 : Декабрь 07, 2007, 00:42:58 »

ТОлько в голову пришло... $_POST - это ассоциативный массив переменных. Имя переменной не может быть числом, поэтому запись вида $_POST['Математическая_операция'] всегда будет возвращать пустое значение.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #19 : Декабрь 07, 2007, 00:48:50 »

Имя переменной не может быть числом, поэтому запись вида $_POST['Математическая_операция'] всегда будет возвращать пустое значение.
Дело в том что код:
$w=1;$q=2;
$_POST['$w+$q']
будет эквивалентен
$_POST['1+2']
а никак не
$_POST['3']
Улыбающийся

PS Топикстартер - изложите задачу целиком - найдём решение.
Записан

Гамлета здесь больше нет. Осталась только тень.
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #20 : Декабрь 07, 2007, 00:56:04 »

будет эквивалентен
$_POST['1+2']
а никак не
$_POST['3']
Да, факт. Но обе эти записи синтаксически верные, но при этом вернут пустой результат.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
Astraller™
Маэстро
*****

Карма: 151
Сообщений: 1389

Вселенское зло


Просмотр профиля WWW
« Ответ #21 : Декабрь 07, 2007, 00:59:10 »

Да, факт. Но обе эти записи синтаксически верные, но при этом вернут пустой результат.
Синтаксически - да, но если элемента с таким именем не окажется оно и error_reporting стоит в значение E_ERRORS & E_ALL то вернётся ошибка - неопределенный индекс Улыбающийся

К стати $_POST вполне можно перебирать и по индексам Улыбающийся
Записан

Гамлета здесь больше нет. Осталась только тень.
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #22 : Декабрь 07, 2007, 01:13:38 »

Ну надо же, счастье продолжается...я исправил, и теперь вроде данные записываются, всё бы хорошо, но вот неудобство:
Последний id в таблице равен 29. Я ему присваиваю 0 (он auto increment), и он должен становиться 30. Раньше так и было (когда ничего не записывалось). А теперь он бабах - 5648! И дальше по возрастающей. Это он с чего так?
« Последнее редактирование: Декабрь 07, 2007, 01:27:18 от popov654 » Записан
popov654
Старший Новичёк
**

Карма: -1
Сообщений: 83


Просмотр профиля
« Ответ #23 : Декабрь 07, 2007, 01:26:31 »

Да, и ещё вопрос: кто-нибудь в курсе, какое максимальное количество разрядов для числа, хранящегося в базе MySQL? Просто есть желание хранить в таблице дату в виде временной метки, не прибегая к средствам MySQL для работы с датой и временем, а форматирую эту метку средствами PHP на входе и на выходе.
Записан
Argentum@ayola.ru
Модератор
Просветлённый
*****

Карма: 66
Сообщений: 581


Truth is out there...


Просмотр профиля
« Ответ #24 : Декабрь 07, 2007, 01:35:38 »

Посмотри на MySQLru.
Записан

Будем взаимовежливы.
Все вопросы пишите в тикеты
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006, Simple Machines LLC

2003-2008 © ООО "Инфотур" - Бесплатный хостинг Ayola.net
Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Страница сгенерирована за 0.104 секунд. Запросов: 17.