Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z dodaniem nowego rekordu
Forum PHP.pl > Forum > Przedszkole
Turech
Witam.
Jestem trochę zielony w php, aczkolwiek jakieś tam podstawy znam. Jednakże podczas pisania strony projektu na zaliczenie napotkałem się na pewien bardzo uciążliwy błąd, mianowicie skrypt, który napisałem (prawdopodobnie jest źle zrobiony) nie dodaje rekordów do mysql, a takie ma zadanie. Ogólnie cała koncepcja polega na tym, że mam parę tabel i za pomocą <select> wybieram tabele, do której ma być dodany nowy rekord (dynamiczne divy + formularze). Serwer nie pokazuje żadnych błędów (prócz "undefind index"). Proszę o pomoc, bo ja już nie mam siły :<
  1. <div>
  2. <form action="" method="post">
  3. <select name="kategorie" action="value">
  4. <option value="">Wybierz kategorie</option>
  5. <option value="karty_graficzne">Karty graficzne</option>
  6. <option value="nosniki_danych">Nośniki danych</option>
  7. <option value="procesory">Procesory</option>
  8. <option value="pamiec_ram">Pamięć RAM</option>
  9. <option value="plyty_glowne">Płyty główne</option>
  10. <option value="laptopy">Laptopy</option>
  11. </select>
  12. <input type="submit" name="akcept" value="Akceptuj">
  13. </form>
  14. </div>
  15. <div id="new">
  16. <?php
  17. $serwer = 'localhost';
  18. $login = '******';
  19. $haslo = '******';
  20. $baza = '******';
  21. $kategorie=$_POST['kategorie'];
  22. if(isset($kategorie))
  23. {
  24. if (@mysql_connect($serwer, $login, $haslo) && @mysql_select_db($baza))
  25. {
  26. $zawartosc = @mysql_query("SELECT * FROM $kategorie") or die("Błąd w zapytaniu!");
  27. switch($kategorie)
  28. {
  29. case "karty_graficzne":
  30. echo "<form action=\"\" method=\"post\">
  31. <label for=\"kg1\">Układ graficzny</label><input type=\"text\" value=\"\" name=\"kg1\"><br />
  32. <label for=\"kg2\">Nazwa</label><input type=\"text\" value=\"\" name=\"kg2\"><br />
  33. <label for=\"kg3\">Producent</label><input type=\"text\" value=\"\" name=\"kg3\"><br />
  34. <label for=\"kg4\">Rodzaj pamięci</label><input type=\"text\" value=\"\" name=\"kg4\"><br />
  35. <label for=\"kg5\">Pamięć</label><input type=\"text\" value=\"\" name=\"kg5\"><br />
  36. <label for=\"kg6\">Taktowanie pamięci</label><input type=\"text\" value=\"\" name=\"kg6\"><br />
  37. <label for=\"kg7\">Szyna pamięci</label><input type=\"text\" value=\"\" name=\"kg7\"><br />
  38. <label for=\"kg8\">Taktowanie rdzenia</label><input type=\"text\" value=\"\" name=\"kg8\"><br />
  39. <label for=\"kg9\">Cena</label><input type=\"text\" value=\"\" name=\"kg9\"><br />
  40. <input type=\"submit\" value=\"Wyślij\" name=\"dodaj\">
  41. </form>";
  42. $kg1=$_POST["kg1"]; $kg2=$_POST["kg2"]; $kg3=$_POST["kg3"]; $kg4=$_POST["kg4"]; $kg5=$_POST["kg5"];
  43. $kg6=$_POST["kg6"]; $kg7=$_POST["kg7"]; $kg8=$_POST["kg8"]; $kg9=$_POST["kg9"];
  44. if(isset($_POST["dodaj"]))
  45. {
  46. $dodaj = @mysql_query("INSERT INTO karty_graficzne (`ID`, `uklad_graficzny`, `nazwa`
  47. ,`producent` ,`rodzaj_pamieci` ,`pamiec` ,`taktowanie_pamieci` ,`szyna_pamieci`,`taktowanie_rdzenia`,`cena`)
  48. VALUES ('','$kg1','$kg2','$kg3','$kg4','$kg5','$kg6','$kg7','$kg8','$kg9')");
  49. }
  50. break;
  51. }
  52. }
  53. }
  54. ?>

PS. Proszę nie krytykować za bardzo za jakieś nie estetyczne formy, czy coś tego rodzaju, nie jest to środowisko, w którym się na co dzień poruszam. Z góry dziękuję za każda pomoc wink.gif
Rysh
Nie:
  1. $dodaj = @mysql_query("INSERT INTO karty_graficzne (`ID`, `uklad_graficzny`, `nazwa` ,`producent` ,`rodzaj_pamieci` ,`pamiec` ,`taktowanie_pamieci` ,`szyna_pamieci`,`taktowanie_rdzenia`,`cena`) VALUES ('','$kg1','$kg2','$kg3','$kg4','$kg5','$kg6','$kg7','$kg8','$kg9')");

Tylko:
  1. $dodaj = mysql_query("INSERT INTO karty_graficzne (`ID`, `uklad_graficzny`, `nazwa` ,`producent` ,`rodzaj_pamieci` ,`pamiec` ,`taktowanie_pamieci` ,`szyna_pamieci`,`taktowanie_rdzenia`,`cena`) VALUES ('','$kg1','$kg2','$kg3','$kg4','$kg5','$kg6','$kg7','$kg8','$kg9')") or die(mysql_error());

Turech
Wprowadziłem to już.
Hmm, bez <select> i switch działa bez problemu, schody się zaczynają jak dodam te funkcje. Chyba rzuciłem się na zbyt głęboką wodę :<
Turson
  1. $kategorie=$_POST['kategorie'];
  2. if(isset($kategorie))

Warunek zawsze będzie spełniony bo definiujesz $kategorie. Powinieneń mieć warunek if(isset($_POST['kategorie']))

$_POST["kg1"] - skąd to bierzesz? Znikąd się to bierze.

Usuń wszystkie @ jakie masz
Turech
Okej, wszystkie @ usunięte, warning $kategorie już nie występuje (trywialny błąd). Domyślałem się właśnie, że skrypt nie czyta żadnych zmiennych z formularza, tylko nie mam pomysłu jak zrobić, żeby to działało.

Wprowadziłem lekkie poprawki:

  1. nowy.php
  2. <?php
  3. if(isset($_POST['kategorie']))
  4. {
  5. $kategorie=$_POST['kategorie'];
  6. switch($kategorie)
  7. {
  8. case "karty_graficzne":
  9. ?>
  10. <form action="nowyfunkcja.php" method="post">
  11. <label for="kg1">Układ graficzny</label><input type="text" value="" name="kg1"><br />
  12. <label for="kg2">Nazwa</label><input type="text" value="" name="kg2"><br />
  13. <label for="kg3">Producent</label><input type="text" value="" name="kg3"><br />
  14. <label for="kg4">Rodzaj pamięci</label><input type="text" value="" name="kg4"><br />
  15. <label for="kg5">Pamięć</label><input type="text" value="" name="kg5"><br />
  16. <label for="kg6">Taktowanie pamięci</label><input type="text" value="" name="kg6"><br />
  17. <label for="kg7">Szyna pamięci</label><input type="text" value="" name="kg7"><br />
  18. <label for="kg8">Taktowanie rdzenia</label><input type="text" value="" name="kg8"><br />
  19. <label for="kg9">Cena</label><input type="text" value="" name="kg9"><br />
  20. <input type="submit" value="Wyslij_1" name="dodaj"><br />
  21. </form>
  22. <?php ... dalsze opjce


  1. nowyfunkcja.php
  2. <?php
  3. $switch=$_POST['dodaj'];
  4. include('config.php');
  5. switch($switch)
  6. {
  7. case 'Wyslij_1':
  8. if(!empty($_POST['kg1']) && !empty($_POST['kg2']) && !empty($_POST['kg3']) && !empty($_POST['kg4']) && !empty($_POST['kg5']) && !empty($_POST['kg6']) && !empty($_POST['kg7']) && !empty($_POST['kg8']) && !empty($_POST['kg9']))
  9. {
  10. $kg1=$_POST['kg1']; $kg2=$_POST['kg2']; $kg3=$_POST['kg3']; $kg4=$_POST['kg4']; $kg5=$_POST['kg5']; $kg6=$_POST['kg6']; $kg7=$_POST['kg7']; $kg8=$_POST['kg8']; $kg9=$_POST['kg9'];
  11. $dodaj = mysql_query("INSERT INTO karty_graficzne (`id`, `uklad_graficzny`, `nazwa`,`producent`,`rodzaj_pamieci`,`pamiec`,`taktowanie_pamieci`,`szyna_pamiec
    i`,`taktowanie_rdzenia`,`cena`) VALUES ('','$kg1','$kg2','$kg3','$kg4','$kg5','$kg6','$kg7','$kg8','$kg9')"
    ) or die(mysql_error());
  12. echo '<meta http-equiv="refresh" content="1; URL=nowy.php">';
  13. }
  14. else
  15. echo "Error";
  16. break;
  17. }
  18. }
  19. ?>


Skrypt działa w pełni, jednakże wykonanie jego jest tragiczne. Jak ktoś ma pomysł jak jakoś estetyczniej to rozwiązać to może śmiało pisać biggrin.gif
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.