Как соеденить выпадающий список с mysql

v-v

Новичок
Как соеденить выпадающий список с mysql

Есть файл index.html:
PHP:
<form method="post"
          action="http://localhost/test/b.php">
  <select name=ch>
       <option value="sravnenie">Табл. 1-1</option>
       <option value="sootv">Табл. 1-2</option>
  </select>
  <input type="submit" value="Просмотреть">
</form>
и файл b.php
PHP:
$ch = $_request["ch"];
$conn=mysql_connect("localhost","root","");
mysql_select_db("test",$conn); 

$sql= "select * from '$ch'";

$result=mysql_query($sql,$conn);
print "<table border=1\n>";
print "<tr>\n";
while ($field=mysql_fetch_field($result)){
   print "<th>$field->name</th>\n";
}
 print "<tr>\n\n";
while ($row = mysql_fetch_assoc($result)){
 print "<tr>\n";
 foreach ($row as $col=>$val){
  print "<td>$val</td>\n";
}
 print "<tr>\n\n";
}
print "</table>\n";
Идея: запрос обращается к той таблице, которая выбирается из выпадающего списка, ток почему-то не работает... :-((( А если в запросе вместо
PHP:
'$ch'
пишу название таблицы, то все ок..... Помогите разобраться в чем дело, как правильно сделать????
 

v-v

Новичок
даже если пишу просто
PHP:
$ch
PHP:
'$ch'
и
PHP:
`$ch`
это одно и то же) выдает
PHP:
Warning: mysql_fetch_field(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\test\b.php on line 14
 

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\test\b.php on line 18
но опять же если напрямую задаю название таблицы то все выдает нормально
 

Фанат

oncle terrible
Команда форума
v-v
сначала тебе надо прочитать PHP FAQ: Ничего не работает! Что делать???
и разобраться со своим скриптом. потому что твои проблемы описаны именно там.

и только после того, как разберёшься, переходить ко второй ссылке.
из которой тебе всего лишь надо узнать, что ПОДСТАВЛЯТЬ $ch в запрос НЕЛЬЗЯ!
 

v-v

Новичок
сделал как написано...........выдается все время 1-ая таблица, даже если в списке выбираю вторую...

Правда не учел что Параметры оператора LIMIT следует принудительно приводить к целочисленному типу с помощью арифметических операций или функции intval().

не понятно??????
 

v-v

Новичок
PHP FAQ: \"Кавычки \". SQL Injection написано:
Мне сложно представить себе случай, когда имя таблицы может подставляться в запрос динамически, но если такое случится, то имя тоже надо вставлять только из заранее прописанного в скрипте набора. (прописал:
PHP:
$ch = $_request["ch"];

$chpr=array("sravnenie","sootv");         //
$key=array_search($_GET['ch'],$chpr); //добавил
$chprby=$chpr[$key];                           //

$conn=mysql_connect("localhost","root","");
mysql_select_db("test",$conn); 
$sql= "select * from $chprby";
$result=mysql_query($sql,$conn);
)
Параметры оператора LIMIT следует принудительно приводить к целочисленному типу с помощью арифметических операций или функции intval().
 

Фанат

oncle terrible
Команда форума
сначала тебе надо прочитать PHP FAQ: Ничего не работает! Что делать???
и разобраться со своим скриптом. потому что твои проблемы описаны именно там.

и только после того, как разберёшься, переходить ко второй ссылке.

Как понял меня? приём.
 

v-v

Новичок
Автор оригинала: Фанат
сначала тебе надо прочитать PHP FAQ: Ничего не работает! Что делать???
и разобраться со своим скриптом. потому что твои проблемы описаны именно там.

и только после того, как разберёшься, переходить ко второй ссылке.

Как понял меня? приём.
Прочитал уже....ничего интересного там нет..........ошибка не в синтаксисе а в самой программе....раз 100 проверил

-~{}~ 11.10.06 16:53:

аааааааааааааа........голова уже кипит.................мне может кто-нить написать как правильно делается????????????
 

Фанат

oncle terrible
Команда форума
ну давай, как маленького, по ложечке кормить будем.
за папу, за маму...

По ссылке написано, что ты должен сделать. прямо на первой же странице. посмотри повнимательнее - там ничего про mysql не написано? может быть, знакомые слова, похожие на те сообщения об ошибке, которые ты здесь процитировал?

-~{}~ 11.10.06 17:01:

ничего интересного там нет
люблю я вас, ребятки...
такое ощущение, что тебя в цирк послали. или в кинотеатр. интересное он захотел. ага. клоунов с анекдотами =)
 

bgm

&nbsp;
А что за переменная с именем _request:
PHP:
$ch = $_request["ch"];
?

Плюс, раз у тебя отсутствует вообще понимание о процессе отладки, то вставь после строчки
PHP:
$sql= "select * from $chprby";
следующее:
PHP:
 echo "<hr> sql:= ".$sql."<hr>";
и задумайся над результатом.
 

v-v

Новичок
Автор оригинала: bgm
А что за переменная с именем _request:
PHP:
$ch = $_request["ch"];
?

Плюс, раз у тебя отсутствует вообще понимание о процессе отладки, то вставь после строчки
PHP:
$sql= "select * from $chprby";
следующее:
PHP:
 echo "<hr> sql:= ".$sql."<hr>";
и задумайся над результатом.
я эт изучаю второй день и у меня пока вообще толком какие-либо понятия отсутствуют.......
про переменную......вычитал в учебнике что этот код получает значения из поля с именем ch (это поле в файле index.html)

вставил я эту штуку.........но эт и так понятно было......что он все время одну таблицу грузит...даже если в выпадающем списке я выбираю 2-ую....

Неужели никто никогда это не делал...............ПОМОГИТЕ...............где ошибка-то
PHP:
$conn=mysql_connect("localhost","root","");
mysql_select_db("test",$conn); 

$chpr=array("sravnenie","sootv");
$key=array_search($_GET['ch'],$chpr);
$chprby=$chpr[$key];

$sql= "select * from $chprby";

$result=mysql_query($sql,$conn);
файл index.html не менялся
 
Сверху