Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Przypisanie zmiennej z listy rozwijanej
Forum PHP.pl > Forum > Przedszkole
golinek
Mam problem z przypisaniem zmiennej z listy rozwijanej. Chodzi o to że w liscie rozwijanej mam wpisane wartości i chciałbym aby były one przypisane do zmiennej $tabela która była by w zapytaniu SELECT nazwą tabeli z której ma wybierać dane. Narazie mam coś takiego i nie chce mi to działać. Jestem początkującym w tym temacie i dopiero się ucze więc proszę o wyrozumiałość.
Poniżej zamieszczam kod.
Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rozliczenie Rozmów Telefonicznych</title>
</head>
<body>
<center><tr><b><font size="5">Rozliczenie Rozmów Telefonicznych </font></b></tr></center><br>
<form method="POST" wybierz="">
<tr>
<td>
<Select type="text" name="tabela" value="$tabela">
<option>tabela</option>
<option>Rachunki</option>
<option>Aktywne</option>
</select>
</td>
<td>
<input type="submit" name="wybierz" value="wybierz">
</td>
</tr>
</form>
<?php
if (!$db_lnk = @mysql_connect("******", "****", "********")){
  echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  exit;
}

if(!@mysql_select_db('Telefony')){
  echo('Wystąpił błąd podczas wyboru bazy danych: Telefony<BR>');
  @mysql_close();
  exit;
}

$query = "SELECT * FROM '$tabela'";
$sum = "SELECT sum(impulsy) FROM '$tabela' AS Impulsik";

if(isSet($_POST['wybierz'])){
   $tabela = $_POST['tabela'];


if(!$result = mysql_query($query, $db_lnk)){
  echo('Wystąpił błąd: nieprawidłowe zapytanie1...$tabela<BR>');
  @mysql_close();
  exit;
}

if(!$result2 = mysql_query($sum, $db_lnk)){
  echo('Wystąpił błąd: nieprawidłowe zapytanie2...<BR>');
  @mysql_close();
  exit;
}
}

?>
<center><tr><b><font size="5">Rozliczenie Rozmów Telefonicznych</font></b></tr></center><br>
<table border="3" align="center">
<tr>
<td><center>Id</center></td>
<td><center>Telefon</center></td>
<td><center>Abonament</center></td>
<td><center>Połaczenia</center></td>
<td><center>Inne</center></td>
<td><center>Korekta</center></td>
<td><center>Impulsy</center></td>
<td><center>DSL</center></td>
<td><center>Suma</center></td>
</tr>


<?php
  while($row2 = mysql_fetch_row($result2)){
  /*echo("<tr>");*/
  $wynik = 500 / $row2[0];
  $wynik = sprintf("%01.2f", $wynik);
  /*echo("<td>$row2[0]</td>");*/
  /*echo("<td>$wynik</td>");*/
  /*echo("</tr>");*/
}
  
  while($row = mysql_fetch_row($result)){
  echo("<tr>");
  echo("<td><center>$row[0]</center></td>");
  echo("<td><center>$row[1]</center></td>");
  echo("<td><center>$row[2]</center></td>");
  echo("<td><center>$row[3]</center></td>");
  echo("<td><center>$row[4]</center></td>");
  echo("<td><center>$row[5]</center></td>");
  echo("<td><center>$row[6]</center></td>");
  echo("<td><center>$row[7]</center></td>");
  $suma = ($row[2] + $row[3] + $row[4] + $row[7]) * $wynik;
  echo("<td><center>$suma</center></td>");
  echo("</tr>");
}
?>
</table><?php
if(!@mysql_close()){
  echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<BR>');
}
?>
</body>
</html>
varez
początkującego prosze o kod php w tagach
"php", nie "code"
smile.gif
ty w miedzyczasie poprawiaj, ja probuje zrozumiec Twoj problem

edit:
wskazówka na przyszłość (poza tematem):
poczytaj o
mysql_fetch_assoc
tehaha
html:
  1. <Select type="text" name="tabela" value="$tabela">
  2. <option value='tabela'>tabela</option>
  3. <option value='Rachunki'>Rachunki</option>
  4. <option value='Aktywne'>Aktywne</option>

php:
  1. $tabela = $_POST['tabela'];
  2. echo $tabela;
golinek
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>Rozliczenie Rozmów Telefonicznych</title>
  5. </head>
  6. <body>
  7. <center><tr><b><font size="5">Rozliczenie Rozmów Telefonicznych</font></b></tr></center><br>
  8. <form method="POST" wybierz="">
  9. <tr>
  10. <td>
  11. <Select type="text" name="tabela" value="$tabela">
  12. <option value='tabela'>tabela</option>
  13. <option value='Rachunki'>Rachunki</option>
  14. <option value='Aktywne'>Aktywne</option>
  15. </select>
  16. </td>
  17. <td>
  18. <input type="submit" name="wybierz" value="wybierz">
  19. </td>
  20. </tr>
  21. </form>
  22. <?php
  23. if (!$db_lnk = @mysql_connect("localhost", "root", "@nulk@19*%")){
  24. echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  25. }
  26.  
  27. if(!@mysql_select_db('Telefony')){
  28. echo('Wystąpił błąd podczas wyboru bazy danych: Telefony<BR>');
  29. }
  30.  
  31. $query = "SELECT * FROM '$tabela'";
  32. $sum = "SELECT sum(impulsy) FROM '$tabela' AS Impulsik";
  33.  
  34. if(isSet($_POST['wybierz'])){
  35. $tabela = $_POST['tabela'];
  36. echo $tabela;
  37.  
  38.  
  39. if(!$result = mysql_query($query, $db_lnk)){
  40. echo('Wystąpił błąd: nieprawidłowe zapytanie1...$tabela<BR>');
  41. }
  42.  
  43. if(!$result2 = mysql_query($sum, $db_lnk)){
  44. echo('Wystąpił błąd: nieprawidłowe zapytanie2...<BR>');
  45. }
  46. }
  47.  
  48. ?>
  49. <center><tr><b><font size="5">Rozliczenie Rozmów Telefonicznych </font></b></tr></center><br>
  50. <table border="3" align="center">
  51. <tr>
  52. <td><center>Id</center></td>
  53. <td><center>Telefon</center></td>
  54. <td><center>Abonament</center></td>
  55. <td><center>Połaczenia</center></td>
  56. <td><center>Inne</center></td>
  57. <td><center>Korekta</center></td>
  58. <td><center>Impulsy</center></td>
  59. <td><center>DSL</center></td>
  60. <td><center>Suma</center></td>
  61. </tr>
  62.  
  63.  
  64. <?php
  65. while($row2 = mysql_fetch_row($result2)){
  66. /*echo("<tr>");*/
  67. $wynik = 500 / $row2[0];
  68. $wynik = sprintf("%01.2f", $wynik);
  69. /*echo("<td>$row2[0]</td>");*/
  70. /*echo("<td>$wynik</td>");*/
  71. /*echo("</tr>");*/
  72. }
  73.  
  74. while($row = mysql_fetch_row($result)){
  75. echo("<tr>");
  76. echo("<td><center>$row[0]</center></td>");
  77. echo("<td><center>$row[1]</center></td>");
  78. echo("<td><center>$row[2]</center></td>");
  79. echo("<td><center>$row[3]</center></td>");
  80. echo("<td><center>$row[4]</center></td>");
  81. echo("<td><center>$row[5]</center></td>");
  82. echo("<td><center>$row[6]</center></td>");
  83. echo("<td><center>$row[7]</center></td>");
  84. $suma = ($row[2] + $row[3] + $row[4] + $row[7]) * $wynik;
  85. echo("<td><center>$suma</center></td>");
  86. echo("</tr>");
  87. }
  88. ?>
  89. </table><?php
  90. if(!@mysql_close()){
  91. echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<BR>');
  92. }
  93. ?>
  94. </body>
  95. </html>


Poprawiłem ale dalej to samo - wyskakuje bład zapytanie1
tehaha
no to sprawdź jaki to błąd daj:
  1. $result = mysql_query($query, $db_lnk) or die(mysql_error())
golinek
  1. if(!$result = mysql_query($query, $db_lnk)){
  2. echo('Wystąpił błąd: nieprawidłowe zapytanie1...$tabela<BR>');
  3. }


Wywala błąd z tej lini, że nieprawidłowe zapytanie

ale po dodaniu tego:
  1. if(isSet($_POST['wybierz'])){
  2. $tabela = $_POST['tabela'];
  3. echo $tabela


Teraz za każdym razem po wybraniu opcji z listy otrzymuje komikat

tabelaWystąpił błąd: nieprawidłowe zapytanie1...$tabela

lub

RachunkiWystąpił błąd: nieprawidłowe zapytanie1...$tabela

lub

AktywneWystąpił błąd: nieprawidłowe zapytanie1...$tabela

w zależności od opcji wybranej z listy. Czyli wygląda na to że zmienną dobrze przypisuje, tylko nie chce wykonać zapytania.
tehaha
wklej po każdym zapytaniu or die(mysql_error());tak jak Ci napisałem wyżej, to się dowiesz jaki to błąd a nie jakiś nic nie mówiący własny komunikat że nie prawidłowe zapytanie
golinek
Błąd jaki się pojawia :
Cytat
RachunkiYou 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

nospor
pierwszy blad:
nie: $query = "SELECT * FROM '$tabela'";
a: $query = "SELECT * FROM $tabela";

Zanim zadasz kolejne pytanie:
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie

Nie będziemy ci co kazdy post pisac bys zrobil mysql_error() bys wlaczyl wyswietlanie wszystkich bledow. Tam masz wszystko napisane - zastosuj się do tego dokladnie.
golinek
Cytat
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


To samo, dalej nie wybiera.
nospor
Ostatnia szansa - później zamykam temat:
Prosilem bys sie zastosowal do porad - zrob to. Tam masz napisane jak masze debugowac skrypt. Jak tobie się to nie przyda to nam sie przyda przy pomocy Tobie. Tam jest napisane po polsku, nie po chinsku.
golinek
Dodałem to co było w instrukcji na temat postu i otrzymałem takie wyniki.
Cytat
Notice: Undefined variable: tabela in /var/www/Piotr/Projekt/tel.php on line 102 Notice: Undefined variable: tabela in /var/www/Piotr/Projekt/tel.php on line 103 RachunkiYou 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


linia 102 zawiera:
  1. $query = "SELECT * FROM $tabela";



nospor
NIe zastosowales sie do wszystkiego. Jest jeszcze bys wyswietllal sobie wszystko, miedzy innymi
echo $query;
Czy polska język trudna język? winksmiley.jpg

No ale do rzeczy: juz widać po komunikacie bledu, ze uzywasz zmiennej $tabela która nie istnieje. No to juz chyba wiesz gdzie szukac bledu? Twoim bledem jest to ze nie ustawiasz zmiennej $tabela tam gdzie trzeba.
golinek
We wczesniejszej odpowiedzi napisałem:
Cytat
Teraz za każdym razem po wybraniu opcji z listy otrzymuje komikat

tabelaWystąpił błąd: nieprawidłowe zapytanie1...$tabela

lub

RachunkiWystąpił błąd: nieprawidłowe zapytanie1...$tabela

lub

AktywneWystąpił błąd: nieprawidłowe zapytanie1...$tabela

w zależności od opcji wybranej z listy. Czyli wygląda na to że zmienną dobrze przypisuje, tylko nie chce wykonać zapytania.


tak zaczął mi wyświetlac błąd jak dodałem
  1. echo $tabela
zmienną

Dopiero potem zmieniłem sposób raportowania błędu tak aby wyrzucał co jest błędem a nie moje komunikaty. Z tego co widać to zmienną przypisuje prawidłowo skoro wyświetla ją po wybraniu z formularza. Problem leży raczej w zapytaniu SQL i tym że nazwa tabeli z której ma wybierać dane jest zmienną, która w zależności od wyboru z formularza ma być inna.
nospor
Masz taki kod:
$query = "SELECT * FROM $tabela";

I php ci mowi, ze uzywasz zmiennej $tabela, ktorej nie ma. A skoro ci php to mówi to znaczy ze jej nie ma. Moze ją zadeklarowales gdzies indziej i w tym miejscu, w której jej uzywasz to jej nie ma.
PHP nie daje ci losowych komunikatów.
Jak mowi ze czegos nie ma to znaczy ze tego nie ma.
Zrob sobie echo $query a zobaczysz ze nie ma.....


  1. $tabela = '';
  2. if(isSet($_POST['wybierz'])){
  3. $tabela = $_POST['tabela'];
  4. //...
golinek
Rozwiązany Problem dzięki serdeczne za pomoc i to był mój głupi błąd
Najpierw miałem zapytanie do SQL a potem wybierałem zmienną i tak to nie mialo prawa działać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.