0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
1

Запрос на вывод данных из базы

21.06.2015, 11:11. Показов 1613. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Есть бд на MySQL сервере. Хочу сделать форму, на которой при выборе кабинета, отображался бы в окошке перечень оборудования, который в нем находится.

При вставке php-скрипта форма перестает отображаться и в браузере пишет, что не удается отобразить страницу.

Не могу понять в чем ошибка. Может в синтаксисе скрипта ошибся?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
 
 
    $cabinet = $_POST['cabinet']
 
    mysql_connect("localhost", "root", "2222") or die (mysql_error ());
 
    mysql_select_db("db_network_equipment") or die(mysql_error());
 
    $strSQL = "SELECT CP, ip FROM pc_university WHERE cabinet=$cabinet";
 
    $rs = mysql_query($strSQL);
    
    while($row = mysql_fetch_array($rs)) {
    echo $row['CP'] . " " . $row['ip'] . "<br />";
    }
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2015, 11:11
Ответы с готовыми решениями:

Запрос из базы данных mysql на вывод части текста
Привет Всем. Есть таблица в БД id, name, text. В text помещён текст: '12 212 5 5842 84 88 42'...

Запрос на вывод из базы PostgreSQL, PgAdmin III)
Здравствуйте, пытаюсь подключиться к базе и получить все данные по запросу, но ничего не...

Запрос базы данных
Здравствуйте,выдаёт проблему на 27 строке файла при запросе базе данных,в чём...

Базы данных , запрос
Кому не сложно , помогите с запросами , уже просто какой раз пробую все через одно место идет . ...

22
Заблокирован
21.06.2015, 11:52 2
Номер кабинета лучше передавать методом GET, а если кабинет выбирается из списка путем перехода по ссылке, то можно совсем без параметров обойтись.

Если выложите дамп таблицы (ну, или хотя бы небольшой ее фрагмент), могу протестировать ваш скрипт.
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 11:57  [ТС] 3
еще не разобрался как вывести в окно, пока что вывожу результат запроса просто на страницу.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<head>
    <title>Запрос данных из БД</title>
 
</head>
 
<body>
 
    <p><b>Укажите кабинет</b></p>
 
    <p></p>
 
    <p><select name="cabinet" size="1">
    <optgroup label="Первый этаж">
    <option selected value="s1">101</option>
    </optgroup>
    <optgroup label="Второй этаж">
    <option value="s2">201</option>
    <option value="s3">207</option>
    </optgroup>
    <optgroup label="Третий этаж">
    <option value="s4">303</option>
    </optgroup>
    </select></p>
 
    <p></p>
 
    <p><b>Перечень устройств в кабинете</b></p>
 
    <p></p>
 
    <p><textarea name="pere4en" readonly rows="15" cols="100"></textarea></p>
    
<?php
 
 
 
    $cabinet = $_POST['cabinet']
 
    mysql_connect("localhost", "root", "2222") or die (mysql_error ());
 
    mysql_select_db("db_network_equipment") or die(mysql_error());
 
    $strSQL = "SELECT CP, ip FROM pc_university WHERE cabinet=$cabinet";
 
    $rs = mysql_query($strSQL);
    
    while($row = mysql_fetch_array($rs)) {
    echo $row['CP'] . " " . $row['ip'] . "<br />";
    }
?>
 
 
</body>
0
Заблокирован
21.06.2015, 12:00 4
У вас нету тега FORM. Я просила дамп таблицы с данными (sql-файл), чтобы было на чем тестировать.
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 12:04  [ТС] 5
дамп таблицы нет возможности выложить. на работе закрыт доступ для выгрузки в сеть данных с компа. могу дамп выложить вечером.
0
Заблокирован
21.06.2015, 12:18 6
Нет точки с запятой после первой команды.

Добавлено через 7 минут
Нет кнопки submit. Зачем нужна textarea?

Добавлено через 2 минуты
Вместо формы можно было просто сделать список кабинетов со ссылками на страницы кабинетов.
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 12:21  [ТС] 7
я позже добавлю кусок кода, чтобы выводить запрошенные данные в textarea. пока что просто через echo.

скажите, пожалуйста, при таком запросе в результате выведутся все таблицы, которые есть в базе, или лишь первая что будет найдена?

PHP
1
2
3
4
5
6
7
  $ver = mysql_query("show tables");   
  if(!$ver)   
  {   
    echo "<p>Ошибка в запросе</p>";   
    exit();   
  }   
  echo mysql_result($ver, 0);
0
Заблокирован
21.06.2015, 12:24 8
https://yandex.ru/search/?lr=3... w%20tables
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 12:31  [ТС] 9
я понимаю, что команда show tables; покажет все таблицы в выбранной базе. мне интересно при выводе переменной $ver покажутся все таблицы или только первая?
0
Заблокирован
21.06.2015, 12:43 10
С такими вопросами обратитесь к документации. Данная функция возвращает одно значение из одного поля. Если нужен список пройдитесь циклом по записям.
0
Заблокирован
21.06.2015, 13:54 11
Я проверила, скрипт рабочий. У вас проблема с передачей номера кабинета. Я заменила первую команду на
PHP
1
$cabinet = $page['id'];
и вот что получилось
Миниатюры
Запрос на вывод данных из базы  
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 14:00  [ТС] 12
добавил форму и кнопку отправку формы. теперь, как я понимаю, мы выбираем кабинет, нажимаем кнопку, и наша форма передается в скрипт. скрипт в этой форме вытаскивает из поля cabinet введенное нами значение и подставляет в переменную $cabinet.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</head>
 
<body>
 
    <form method="get" action="C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\zapros.php"
    
    <p><b>Укажите кабинет</b></p>
 
    <p></p>
 
    <p><select name="cabinet" size="1">
    <optgroup label="Первый этаж">
    <option selected value="s1">101</option>
    </optgroup>
    <optgroup label="Второй этаж">
    <option value="s2">201</option>
    <option value="s2">202</option>
    <option value="s3">207</option>
    </optgroup>
    <optgroup label="Третий этаж">
    <option value="s4">303</option>
    </optgroup>
    </select></p>
 
    <p></p>
 
    <p><b>Перечень устройств в кабинете</b></p>
 
    <p></p>
 
    <p><textarea name="pere4en" readonly rows="15" cols="100"><?php echo $row; ?></textarea></p>
    
    <p><input type="submit" value="отправить запрос"></p>
 
    </form>
 
<?php
 
    $cabinet = $_GET['cabinet'];
 
    mysql_connect("localhost", "root", "2222") or die (mysql_error ());
 
    mysql_select_db("mydb") or die(mysql_error());
 
    $strSQL = "SELECT cp FROM pc_university where cabinet=$'cabinet'";
 
    $rs = mysql_query($strSQL);
    
    while($row = mysql_fetch_array($rs)) {
    echo $row['cp']  . "<br />";
    }
    echo mysql_result($row, 0);
 
?>
 
</body>
два вопроса:
в правильно ли указан вывод в texarea?
если в запросе указывается условие: where cabinet=$'cabinet', то переменная $row пустая. Если же убрать условие, то в переменной $row будет полный перечень компов. я не правильно использовал метод get?

прошу прощения, только сейчас увидел ваш ответ. остался вопрос на счет поля textarea.
0
Заблокирован
21.06.2015, 14:12 13
Вы изменили не только первую строку. Появилась новая ошибка (лишние апострофы): where cabinet=$'cabinet'

Вывод в textarea сделан неправильно.
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 14:26  [ТС] 14
при указании в запросе переменной апострофов вообще быть не должно? или должно быть так cabinet='$cabinet'? в интернете в разных примерах по разному указывается.
0
Заблокирован
21.06.2015, 14:38 15
Это зависит от типа поля cabinet. Для числового типа апострофы не нужны. Я же вам написала, что ваш первоначальный скрипт рабочий, нужно изменить только первую команду:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
 
 
    $cabinet = $page['id'];
 
    mysql_connect("localhost", "gdrive_db", "gdrive") or die (mysql_error ());
 
    mysql_select_db("gdrive_db") or die(mysql_error());
 
    $strSQL = "SELECT CP, ip FROM pc_university WHERE cabinet=$cabinet";
 
    $rs = mysql_query($strSQL);
    
    while($row = mysql_fetch_array($rs)) {
    echo $row['CP'] . " " . $row['ip'] . "<br />";
    }
Добавлено через 1 минуту
В вашем случае:
PHP
1
$cabinet = $_GET['cabinet'];
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 14:45  [ТС] 16
у меня поле cabinet имеет формат varchar, потому что есть кабинеты с номером 201а, 201б и т.д.
0
Заблокирован
21.06.2015, 14:49 17
Тогда лучше взять в апострофы: '$cabinet'. Вы же не показали мне вашу таблицу, поэтому я сделала это поле числового типа, опираясь на то, что увидела в вашем запросе.
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 16:20  [ТС] 18
даже с вашим исправлением переменная $row остается пустой. это может быть из-за того, что у меня формат поля стоит varchar?

Добавлено через 23 минуты
и подскажите на счет вывода в поле textarea.
я нашел 2 варианта. первый:
PHP
1
2
3
4
5
<p><textarea name="pere4en" rows="15" cols="100" value="<?php
    while($row = mysql_fetch_array($rs)) {
            echo $row['cp'] . " " . $row['ip'] . "<br />";
        }
    ?>"></textarea></p>
второй:
PHP
1
2
3
4
5
<p><textarea name="pere4en" rows="15" cols="100"><?php
    while($row = mysql_fetch_array($rs)) {
            echo $row['cp'] . " " . $row['ip'] . "<br />";
        }
    ?></textarea></p>
Добавлено через 11 минут
понял почему не получалось в переменную $cabinet взять значение из поля cabinet. я создал многострочный список, в котором нужно было в выпадающем списке выбрать кабинет. видимо, при передаче данных из поля cabinet брались сразу номера всех кабинетов, а не того, что был выбран.

создал поле с типом text, руками ввел туда кабинет и все заработало.

есть возможность как-то взять из многострочного списка только 1 значение?

Добавлено через 10 минут
когда тестировал поле типа text, я ввел кабинет 201, но если ввести кабинет с буквой 201а, то запрос не находит ничего. есть варианты пофиксить это?
0
Заблокирован
21.06.2015, 16:33 19
Изменила у себя тип поля на varchar. Все по-прежнему работает, причем и с апострофами, и без (но лучше оставить с апострофами).

Насчет textarea ничего подсказать не могу, потому что не понимаю, зачем она нужна.

Цитата Сообщение от Grafitchic Посмотреть сообщение
есть возможность как-то взять из многострочного списка только 1 значение?
Если бы было нельзя, зачем тогда этот список нужен.

Добавлено через 9 минут
Цитата Сообщение от Grafitchic Посмотреть сообщение
когда тестировал поле типа text, я ввел кабинет 201, но если ввести кабинет с буквой 201а, то запрос не находит ничего. есть варианты пофиксить это?
У меня работает
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 30
21.06.2015, 16:36  [ТС] 20
а как же тогда красиво вывести данные? допустим модель центрального процессора на компах разные. если название будет короткое, то ip будет залезать под название центрального процессора, который был указан раньше.
0
21.06.2015, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2015, 16:36
Помогаю со студенческими работами здесь

Вывод данных из базы данных MySQL в PHP в виде дерева.
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую...

Вывод данных из базы данных в выпадающее поле в форме
Создаю выпадающее поле в форме, само поле появляется, но данные из базы данных почему-то не...

Вывод данных с базы данных через компоненты Interbase
Здравствуйте, пытаюсь вывести данные с базы данных с помощью компонентов Interbase, но не выходит....

Вывод данных из базы данных в определенные строки таблицы
Имеется страница на которую необходимо из бд с названием opis вывести данные названия ЖК из столбца...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru