<?php
header("Content-Type: text/html; charset=UTF-8");
$hostname = "...";
$username = "...";
$password = "...";
$dbname = "...";
if (!MYSQL_CONNECT($hostname,$username,$password)) {
echo "Ошибка при попытке соединения с MySQL <br />";
exit;
}
mysql_query("SET NAMES utf8");
mysql_select_db($dbname) or die ("Could not select database");
$sn = $_POST[surname];
$str = $_POST[street];
$h = $_POST[house];
$f = $_POST[flat];
$p = $_POST[porch];
$f = $_POST[floor];
$ph = $_POST[phone];
$tf = $_POST[tarif];
$dt=date('d-m-yy');
$q = mysql_query("INSERT INTO request (surname,street,house,flat,porch,floor,phone,tarif,date_z) VALUES ('$sn','$str','$h','$f','$p','$f','$ph','$tf','$dt')");
$street_count = mysql_query('SELECT street_name FROM streets');
echo '<select size=1 name=combo_street>';
while ($street_row = mysql_fetch_array($street_count)) {
echo '<option>'.$street_row['street_name'].'</option>';
}
echo "Проверка";
?>
Начало нас не интересует, ибо с базой все отрабатывается нормально. Проблема возникает с echo - не выводится сообщение echo "Проверка"; Не выводит после конструкции echo '<select size=1 name=combo_street>'; и ниже. До этой конструкции отрабатывает нормально. Подскажите, пожалуйста, в чем проблема. Не могу понять.
Спустя 15 минут, 32 секунды (16.08.2010 - 09:35) linker написал(а):
Все очень просто, тэг не закрыт
<select size=1 name=combo_street>...</select>
Спустя 9 минут, 11 секунд (16.08.2010 - 09:44) Alana написал(а):
Цитата (linker @ 16.08.2010 - 06:35) |
Все очень просто, тэг не закрыт <select size=1 name=combo_street>...</select> |
Вот я балда-то
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![laugh.gif](http://phpforum.ru/html/emoticons/laugh.gif)
А вообще есть какие-то замечания по самому коду? Может есть какие-то рекомендации? Я на php никогда не писала, а тут необходимость появилась.
Спустя 4 минуты, 39 секунд (16.08.2010 - 09:48) phz написал(а):
Замечания по безопасности. Вы как я понимаю данные получаете от юзера? Нет проверки
С датой у вас так и нужно?
В базе данные вносите через mysql_real_escape_string()
С датой у вас так и нужно?
$dt=date('d-m-yy');
В базе данные вносите через mysql_real_escape_string()
Спустя 1 час, 4 минуты, 39 секунд (16.08.2010 - 10:53) linker написал(а):
1. Секурити по нулям.
2. $_POST[tarif] - PHP конечно пофигу, но всетаки надо $_POST['tarif']
3. Негоже в одном скрипте делать INSERT в таблицу и тут же продолжать работу, т.е. если я 100 раз нажму F5, то в базу запишется сто раз одно и тоже.
2. $_POST[tarif] - PHP конечно пофигу, но всетаки надо $_POST['tarif']
3. Негоже в одном скрипте делать INSERT в таблицу и тут же продолжать работу, т.е. если я 100 раз нажму F5, то в базу запишется сто раз одно и тоже.
Спустя 4 часа, 30 минут, 26 секунд (16.08.2010 - 15:24) Alana написал(а):
Цитата (phz @ 16.08.2010 - 06:48) |
Замечания по безопасности. Вы как я понимаю данные получаете от юзера? Нет проверки С датой у вас так и нужно? $dt=date('d-m-yy'); В базе данные вносите через mysql_real_escape_string() |
Да, данные от юзера получаю. Да, знаю, безопасности пока никакой нет, не дошла до нее и пока не знаю как реализовать. Вообще должна стоять проверка на заполненность всех полей. Но это пока за гранью фантастки =)
Да, дата у меня так и должна. Я ее просто определяю и записываю в таблицу в соответствующее поле. А чем mysql_real_escape_string() лучше? Не знала про это.
Спустя 2 минуты (16.08.2010 - 15:26) Alana написал(а):
1. Секурити по нулям - ну да, с этим тоже проблемы....
2. $_POST[tarif] - PHP конечно пофигу, но всетаки надо $_POST['tarif'] - с кавычками я иной раз вообще не врубаюсь, где и когда надо ставить
Исправлю
3. Негоже в одном скрипте делать INSERT в таблицу и тут же продолжать работу, т.е. если я 100 раз нажму F5, то в базу запишется сто раз одно и тоже - а вот про это я даже не подумала...
Как этого избежать? Тем способом, что предложили выше?
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
2. $_POST[tarif] - PHP конечно пофигу, но всетаки надо $_POST['tarif'] - с кавычками я иной раз вообще не врубаюсь, где и когда надо ставить
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
3. Негоже в одном скрипте делать INSERT в таблицу и тут же продолжать работу, т.е. если я 100 раз нажму F5, то в базу запишется сто раз одно и тоже - а вот про это я даже не подумала...
![huh.gif](http://phpforum.ru/html/emoticons/huh.gif)
![dry.gif](http://phpforum.ru/html/emoticons/dry.gif)
Спустя 6 минут, 12 секунд (16.08.2010 - 15:32) Lenarfate написал(а):
про безопасность почитайте тут http://phpforum.ru/index.php?showtopic=21213 .
так же попробуйте решить вот эту задачку http://phpforum.ru/index.php?showtopic=19168
так же попробуйте решить вот эту задачку http://phpforum.ru/index.php?showtopic=19168
Спустя 2 минуты, 27 секунд (16.08.2010 - 15:34) Lenarfate написал(а):
что касается F5, можно делать перенаправление средствами функции header() непосредственно после запроса
Спустя 16 часов, 20 минут, 29 секунд (17.08.2010 - 07:55) Alana написал(а):
Про задачу.... Я такой чайник в php. Даже не чайник, а носик от чайника ![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
$tmp = mysql_query("SELECT id_street FROM streets");
while (mysql_fetch_array($tmp)) {
echo '<select>';
$tmp2 = mysql_query("SELECT id_street, house_name FROM house WHERE id_street=$tmp[id]");
while ($tmp3 = mysql_fetch_array($tmp2)) {
echo '<option>'.$tmp3['house_name'].'</option>';
}
echo '</select>';
}
Тут должен рисовать на страничке 37 выпадающих списков и заполнять каждый список определенными номерами домов в зависимости от значения переменной $tmp. Эта переменная берет id домов и подставляет их в запрос ("SELECT id_street, house_name FROM house WHERE id_street=$tmp[id]"). Но, судя по всему, с переменной не отрабатывает. Если поставить любое число, например 1, то все запрос отрабатывает (и выводит во всех 37 выпадающих списках одни и те же номера домов, которые имеют в таблице id_street = 1). - ой, сделала это =)
Я пока только экспериментирую, как можно решить задачу. Но пока не очень получается
А вообще мне нужно прикрутить на форму выпадающий список с наименованиями, данные в котором берутся из базы. И чтобы при выборе улицы в выпадающем списке с номерами домов отображались только номера выбранной улицы. Наверное, это можно реализовать с помощью Javascript, да?
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
$tmp = mysql_query("SELECT id_street FROM streets");
while (mysql_fetch_array($tmp)) {
echo '<select>';
$tmp2 = mysql_query("SELECT id_street, house_name FROM house WHERE id_street=$tmp[id]");
while ($tmp3 = mysql_fetch_array($tmp2)) {
echo '<option>'.$tmp3['house_name'].'</option>';
}
echo '</select>';
}
Тут должен рисовать на страничке 37 выпадающих списков и заполнять каждый список определенными номерами домов в зависимости от значения переменной $tmp. Эта переменная берет id домов и подставляет их в запрос ("SELECT id_street, house_name FROM house WHERE id_street=$tmp[id]"). Но, судя по всему, с переменной не отрабатывает. Если поставить любое число, например 1, то все запрос отрабатывает (и выводит во всех 37 выпадающих списках одни и те же номера домов, которые имеют в таблице id_street = 1). - ой, сделала это =)
Я пока только экспериментирую, как можно решить задачу. Но пока не очень получается
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
А вообще мне нужно прикрутить на форму выпадающий список с наименованиями, данные в котором берутся из базы. И чтобы при выборе улицы в выпадающем списке с номерами домов отображались только номера выбранной улицы. Наверное, это можно реализовать с помощью Javascript, да?