Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вытянуть название из select (https://javascript.ru/forum/misc/70704-vytyanut-nazvanie-iz-select.html)

laimas 28.09.2017 17:34

Цитата:

Сообщение от Dan922
Да и вот вы говорите регион не указывать.

А зачем? Пусть, кратко, в базе имеются города и регионы

id_city, название города, id_region

1, А, 1
2, Б, 1
3, В, 2
4, Г, 1
5, Д, 1
....

Когда клиент запрашивает горда региона 1 для получения всех городов его, то в этом случае в условии запроса нужно искать по ID указанного региона:

..... WHERE id_region = 1

И запрос вернет записи с городами А, Б, Г, Д.

А выбор пользователя города, например Г, это найти один конкретный город, а значит искать нужно по ID города:

..... WHERE id_city = 4

И запрос вернет одну запись и именно этого города, так как городов с таким же ID в базе нет, и он принадлежит региону 1.

Собственно ваши связанные списки в форме не для красоты, а для выбора, а выбор будет регион->район->город->улица. И в почтовом отправлении не только название города нужно вставить, а у остального выбранного ID будут, а всего же набора, поэтому запрос нужно делать также один, но с вложенными запросами для получения всех названий для выбранного в списках, и этот запрос будет сложнее.

Цитата:

Сообщение от Dan922
$q = mysql_query('SELECT `name` FROM `city` WHERE `city_id` = ' . $id);
возвращает почему-то 0

Этот запрос не может вернуть 0, он может вернуть либо ошибку, либо NULL, либо ресурс в случае успеха. А количество записей можно получить из ресурса функцией, я писал, смотрите.

Цитата:

Сообщение от Dan922
Судя по всему концепция , предложенная вами, не совсем подходит для моего ресурса.

Чушь полнейшая, вы просто ничего не понимаете.

Цитата:

Сообщение от Dan922
Почему он ругается на строку где
if(mysql_num_rows($q))


Значит запрос вернул ошибку, сделайте вывод ее, узнаете причину:

$q = mysql_query('SELECT `name` FROM `city` WHERE `city_id` = ' . $id) or die (mysql_error());

Цитата:

Сообщение от Dan922
сколько вам дать денег чтобы вы написали мне эти пару запросов?

Я уже сказал, я не буду писать только запросы, когда все в целом полная лажа. Обращайтесь в раздел Работа, вполне возможно что кто-то другой напишет.

Dan922 28.09.2017 17:42

Блин, подождите.
Он возвращал мне ресурс ранее.
И я даже написал функцию типа
$num = mysql_num_rows($regs);
для количества записей.
А нужную запись то как достать?

laimas 28.09.2017 17:46

Цитата:

Сообщение от Dan922
А нужную запись то как достать?

Все написано тут https://javascript.ru/forum/misc/707...tml#post465826

Dan922 28.09.2017 18:03

mysql_num_rows() expects parameter 1 to be resource, boolean

Выскочила такая ошибка, что булев тип у меня там.
Проверил на ошибки вот результат:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Dan922 28.09.2017 18:18

С булианам разобрался, сменил тип.
Но что-то с запросами.

laimas 28.09.2017 18:31

$sql = 'SELECT `name` FROM `city` WHERE `city_id` = ' . $id;

echo $sql . '<br>'; 

$q = mysql_query($sql) or die (__FILE__ .'/'. __LINE__ .' '. mysql_error());

Dan922 28.09.2017 19:25

SELECT `name` FROM `city` WHERE `city_id` =

52 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

mysql_num_rows() expects parameter 1 to be resource, null given

laimas 28.09.2017 23:08

Цитата:

Сообщение от Dan922
SELECT `name` FROM `city` WHERE `city_id` =

И после этого стоит спрашивать почему You have an error in your SQL syntax .... и т.д.?

Dan922 29.09.2017 22:33

В общем ничего нормально вывести не удалось так вы написали.
Максимально выводится Resource:#8 Что в ресурсе-не понятно.
Потому что ни через while ни через вашу конструкцию данные не выходят из него.
Например пробовал вариант как было в примере :
$result = mysql_query("SELECT * FROM `products`         
                        WHERE companyid = $companyid;");
mysql_query возвращает ресурс
это указатель на выборку данных из БД в памяти
потом по нему нужно пройти
while($row = mysql_fetch_assoc($result)){
      $product = array();
      $product["pid"] = $row["pid"];
      $product["productname"] = $row["productname"];        
    }

Все работает по другим таблицас, я даже таблицу создал такую же как в этом примере.

А с вашей конструкцией он перестает работать после вывода ресурса.
Ошибок в запросе нет.
Проверка показала, что в name[0] кроме 0 нет ничего.

Уже все варианты перебрал.
После каждой операции писал проверку, чтобы видеть на каком этапе косяк.
И вот получается, что по запросу ресурс выводит, но вот что в нем-не понятно.
Работал по учебникам, по примерам в них.
Прочитал полностью обработку полученных ресурсов, написал как в примере. И ни фига!

laimas 30.09.2017 00:18

Я не знаю что вы там делаете и что за проблемы, но я вам своих конструкций не мог написать. Все что я писал, это стандартные функции для работы с базой MySQL взятые из руководства РНР.

Я лишь оперировал "условной переменной", которую назвал $id, ибо говоря о том, что данные извне сервер обязан проверять, и самое простое в данном контексте, это привести их к Integer. Какое имя в вашем случае после всех операций получит ваша переменная я не знаю, поэтому и "условная". Вы ее добросовестно копируете себе, а таковой у вас и близко нет, делаете запрос и естественно получаете ошибку.

Вы чего хотите, чтобы я и далее писал примеры, а вы их копировали и задавали вопросы "почем"? Смысла нет - открывайте и читайте руководство, по каждым функциям есть примеры. Забудьте о своем Ajax и просто отдельным сркиптом обращайтесь к своей базе за конкретными записями. Как поймете что к чему, несложно будет понятое перенести и в реальный скрипт.


Часовой пояс GMT +3, время: 00:05.