Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] wybieranie tabeli
Forum PHP.pl > Forum > Przedszkole
Roguś
  1. $zapytanie = mysql_query("INSERT INTO ".$przedmiot." SET id='$id' (i tak dalej)


Chodzi mi o zmienna przedmiot. chce zeby dane były wsadzane do tabeli określonej w formularzu. Nie zabardzo wiem jak to zrobić
Darti
Wcześniej zrób:
$przedmiot = $_POST['przedmiot'];
bo prawdopodobnie jest wyłączone register_globals
Roguś
Juz to mam w skrypcie.
Darti
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."` SET `id`='$id'")// (i tak dalej)
  3. ?>
jeśli to nie pomoże to już nie wiem co innego Ci przeszkadza (może coś źle przekazujesz z formularza, np złą nazwę tabeli?)
Roguś
<?

$id = $_POST['id'];
$test1 = $_POST['test1'];
$test2 = $_POST['test2'];
$test3 = $_POST['test3'];
$test4 = $_POST['test4'];
$przedmiot = $_POST['przedmiot'];

$join = mysql_connect('xx','xxx','xxx')
or die ('błąd mysql');

$db = mysql_select_db('xxx',$join)
or die ('błąd db');

$zapytanie = mysql_query("INSERT INTO `.$przedmiot.` SET id='$id', test1='$test1', test2='$test2', test3='$test3', test4='$test4'");



?>

To cały skrypt
Void
Cytat(Roguś @ 8.06.2007, 13:51:30 ) *
"INSERT INTO `.$przedmiot.` SET [...]"

ty chyba nie wiesz do czego w php służą kropki ;] są to operatory łączenia łancuchów znaków, więc wypadałoby najpierw zamknąć pierwszy łańcuch, za pomocą kropki dołączyć zmienną $przedmiot, i później rozpocząć kolejny łańcuch (tak jak pokazał Darti).

są więc dwie możliwości:
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."` SET id='$id', test1='$test1', test2='$test2', test3='$test3', test4='$test4'");
  3. ?>

albo
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO `$przedmiot` SET id='$id', test1='$test1', test2='$test2', test3='$test3', test4='$test4'");
  3. ?>
Darti
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."`(`id`, `test1`, `test2`, `test3`, `test4`) VALUES ('$id', '$test1', '$test2', '$test3', '$test4'");
  3. ?>
Roguś
Chłopaki nie wiem dlaczego ale mnie to nie hula. Zaden z nich. Może podam cały plik

  1. <form aciton="ocenymata.php" method=post>
  2. id :<input type=text size=3 name=id>
  3. test1 :<input type=text size=3 name=test1>
  4. test2 :<input type=text size=3 name=test2>
  5. test3 :<input type=text size=3 name=test3>
  6. test4 :<input type=text size=3 name=test4>
  7. <select name="przedmiot">
  8. <option name="ocenypolak">J.polski</option>
  9. <option name="ocenymata">mata</option>
  10. <input type=submit>
  11. <? 
  12.  
  13. $id = $_POST['id'];
  14. $test1 = $_POST['test1'];
  15. $test2 = $_POST['test2'];
  16. $test3 = $_POST['test3'];
  17. $test4 = $_POST['test4'];
  18. $przedmiot = $_POST['przedmiot'];
  19.  
  20. $join = mysql_connect('xx','xx','xx')
  21. or die ('błąd mysql');
  22.  
  23. $db = mysql_select_db('xxx',$join) 
  24. or die ('błąd db');
  25.  
  26. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."`(`id`, `test1`, `test2`, `test3`, `test4`) VALUES ('$id', '$test1', '$test2', '$test3', '$test4'");
  27. if ($zapytanie) {
  28. echo "ok"; }
  29. else { echo "błąd rekordu"; }
  30.  
  31.  
  32. ?>
Void
Cytat(Roguś)
<form aciton="ocenymata.php" method=post>

a może action ? biggrin.gif

Poza tym nie dziwie się, że w zmiennej przedmiot nie ma żadnej wartości, skoro używasz złych atrybutów.
Zamiast
  1. <select name="przedmiot">
  2. <option name="ocenypolak">J.polski</option>
  3. <option name="ocenymata">mata</option>

powinno być
  1. <select name="przedmiot">
  2. <option value="ocenypolak">J.polski</option>
  3. <option value="ocenymata">mata</option>
  4. </select> <!-- pamiętaj o znaczniku zamykającym -->


edit: a tak btw, to używaj raczej znaczników <?php ?> zamiast <? ?>, bo niektóre konfiguracje serwerów nie przetwarzają poprawnie <? ?>.
Roguś
Chłopaki ja nie wiem czemu nie działa :/ Po prostu masakra :/
aktualny kod
  1. <form action="ocenydod.php" method=post>
  2. id :<input type=text size=3 name=id>
  3. test1 :<input type=text size=3 name=test1>
  4. test2 :<input type=text size=3 name=test2>
  5. test3 :<input type=text size=3 name=test3>
  6. test4 :<input type=text size=3 name=test4>
  7. <select name="przedmiot">
  8. <option value="ocenypolak">J.polski</option>
  9. <option value="ocenymata">mata</option>
  10. </select>
  11. <input type=submit>
  12. <? 
  13.  
  14. $id = $_POST['id'];
  15. $test1 = $_POST['test1'];
  16. $test2 = $_POST['test2'];
  17. $test3 = $_POST['test3'];
  18. $test4 = $_POST['test4'];
  19. $przedmiot = $_POST['przedmiot'];
  20.  
  21. $join = mysql_connect('x','x','x')
  22. or die ('błąd mysql');
  23.  
  24. $db = mysql_select_db('x',$join) 
  25. or die ('błąd db');
  26.  
  27. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."`(`id`, `test1`, `test2`, `test3`, `test4`) VALUES ('$id', '$test1', '$test2', '$test3', '$test4'");
  28. if ($zapytanie) {
  29. echo "ok"; }
  30. else { echo "błąd rekordu"; }
  31.  
  32.  
  33. ?>
Void
Teraz zauważyłem że brakuje znacznika zamykającego formularz (</form>). poza tym daj jeszcze <?php zamiast <? (a dlaczego to pisałem post wcześniej :])
Roguś
To również nie pomogło :/ Jak wpisze zamiast '".$przedmiot."' np ocenymata (nazwa tabeli) wszytsko gra.
Void
a daj po prostu
  1. <?php
  2. echo $przedmiot;
  3. ?>
i zobacz czy wyświetla poprawną wartość. Jeśli tak, to nie mam pojęcia czemu nie podstawia tego w zapytaniu, a jeśli nie to znaczy że jest jakiś problem z pobieraniem danych z formularza i musisz jeszcze raz wszystko sprawdzić smile.gif
Roguś
wyświetla : ocenypolak czyli niby wszytsko ok
webdice
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO `".$przedmiot."`(`id`, `test1`, `test2`, `test3`, `test4`) VALUES ('$id', '$test1', '$test2', '$test3', '$test4'") or die (mysql_error ())
  3. ?>


Jęśli wyświetla Ci się jakiś błąd to go skopiuj.
Roguś
dostałem coś takiego....

Niedozwolona nazwa tabeli ''...
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.