Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z dodawaniem rekordów z rozwijanej listy
Forum PHP.pl > Forum > Przedszkole
dawids2411
WItam na początek pokaże skrypty z formularza:

  1. <?php
  2.  
  3. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  4. or die('Brak połączenia z serwerem MySQL');
  5. $db = @mysql_select_db('db592591', $connection)
  6. or die('Brak połączenia z serwerem MySQL');
  7.  
  8. $kat = mysql_query (" Select `ID`, `kategoria` From `kategorie` ORDER BY `kategoria` ASC ");
  9.  
  10. while ( $rkat = mysql_fetch_array ( $kat, MYSQL_ASSOC )) {
  11.  
  12.  
  13. $w_kat .= '<option value = "'.$rkat['ID'].'">'.$rkat['kategoria'].'</option>'."\n";
  14.  
  15. $w_id .= $rkat['kategoria'];
  16.  
  17. }
  18. echo '<form action="dodajsql.php" method="post">';
  19. echo'Wybierz Kategorie';
  20. echo "<select>";
  21. echo '<option>--- wybierz z listy ---</option>';
  22. echo $w_kat;
  23. echo '</select><br />';
  24. echo '<tr> <td>Nazwa</td> <td>
  25. <input type="text" name="nazwa" /><br />';
  26. echo '<tr> <td>Cena Zakupu</td> <td>
  27. <input type="text" name="cena_zakupu" /><br />
  28. </td><br><br></tr>';
  29. echo '<tr><td><input type=submit name="wyslij" value="Wyślij"/></td></tr>';
  30. ?>
  31.  


Formularz ten działa prawidłowo w liście rozwijanej w tym formularzu pokazuje mi wszystkie nazwy kategori z wszystkich rekordów z tabeli kategorie
ALE problem zaczyna się po próbie wysłania do bazy danych kot realizujący zapytanie do bazy z formularza wygląda tak:

  1. $kat = $_POST['"'.$w_kat.'"'];
  2. $nazwa = $_POST['nazwa'];
  3. $cena_zakupu = $_POST['cena_zakupu'];
  4. if($nazwa AND $cena_zakupu AND $kat ) {
  5.  
  6.  
  7. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  8. or die('Brak połączenia z serwerem MySQL');
  9. $db = @mysql_select_db('db592591', $connection)
  10. or die('Brak połączenia z serwerem MySQL');
  11.  
  12. $ins = mysql_query ('INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES("", "'.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');
  13. if($ins) echo "Rekord zostal dodany poprawnie";
  14. else echo"Błąd nie udało dodac się nowego rekordu";
  15. mysql_close($connection);
  16.  
  17. }


Po wykonaniu tego nie ma żadnego błędu jednak rekord nie zostaje dodany inne formularze oparte na tym samym kodzie dzialają tylko formularz wygląda tak ze są same text area i nie próbuje dodac relacji między innymi tabelami tylko poprostu dodac rekordy

help
Dominator
12.

  1. $ins = mysql_query (' INSERT INTO zakup(nazwa, cena_zakupu, id_kategorie) VALUES ("'.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');


Bynajmniej ja gdy mam kolumnę id to nie insertuję za pomocą skryptu następnego id tylko baza MySQL automatycznie mi tworzy.
dawids2411
To nic nie dalo mam w
  1. $ins = mysql_query (' INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES ("", '.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');

id = "" poniewaz jest to auto increment i automatycznie dodaje ale nie robi to różnicy w wykonywanym zapytaniu i tak jest biala strona nic nie pisze a rekordu nie dodalo moze zle zmienne przypisalem w

  1. $kat = $_POST['"'.$w_kat.'"'];


heh jestem zeielony w tym wiec nie mam pojęcia gdzie jest blad
Dominator
Każdy <option> musi mieć przypisane name. Jakoś tutaj tego nie widzę.

Bynajmniej ja w swoim CMS'ie przy <option> mam wszędzie name

Np: <option name="kategoria">Schabowe</option>
dawids2411
  1. <?php
  2.  
  3. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  4. or die('Brak połączenia z serwerem MySQL');
  5. $db = @mysql_select_db('db592591', $connection)
  6. or die('Brak połączenia z serwerem MySQL');
  7.  
  8. $kat = mysql_query (" Select `ID`, `kategoria` From `kategorie` ORDER BY `kategoria` ASC ");
  9.  
  10. while ( $rkat = mysql_fetch_array ( $kat, MYSQL_ASSOC )) {
  11.  
  12.  
  13. $w_kat .= '<option value = "'.$rkat['ID'].'">'.$rkat['kategoria'].'</option>'."\n";
  14.  
  15. $w_id .= $rkat['kategoria'];
  16.  
  17. }
  18. echo '<form action="dodajsql.php" method="post">';
  19. echo'Wybierz Kategorie';
  20. echo "<select>";
  21. echo '<option name="kategoria1">--- wybierz z listy ---</option>';
  22. echo $w_kat;
  23. echo '</select><br />';
  24. echo '<tr> <td>Nazwa</td> <td>
  25. <input type="text" name="nazwa" /><br />';
  26. echo '<tr> <td>Cena Zakupu</td> <td>
  27. <input type="text" name="cena_zakupu" /><br />
  28. </td><br><br></tr>';
  29. echo '<tr><td><input type=submit name="wyslij" value="Wyślij"/></td></tr>';
  30. ?>


  1. $kat = $_POST['kategoria1'];
  2. $nazwa = $_POST['nazwa'];
  3. $cena_zakupu = $_POST['cena_zakupu'];
  4. if($nazwa AND $cena_zakupu AND $kat ) {
  5.  
  6.  
  7. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  8. or die('Brak połączenia z serwerem MySQL');
  9. $db = @mysql_select_db('db592591', $connection)
  10. or die('Brak połączenia z serwerem MySQL');
  11.  
  12. $ins = mysql_query ('INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES("", "'.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');
  13. if($ins) echo "Rekord zostal dodany poprawnie";
  14. else echo"Błąd nie udało dodac się nowego rekordu";
  15. mysql_close($connection);
  16.  
  17. }


Tez nic nie dalo sad.gif
Damonsson
  1. $kat = $_POST['"'.$w_kat.'"'];
  2.  
  3. $nazwa = $_POST['nazwa'];
  4.  
  5. $cena_zakupu = $_POST['cena_zakupu'];
  6.  
  7. if($nazwa AND $cena_zakupu AND $kat ) {
  8.  
  9.  
  10.  
  11.  
  12.  
  13. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  14.  
  15. or die('Brak połączenia z serwerem MySQL');
  16.  
  17. $db = @mysql_select_db('db592591', $connection)
  18.  
  19. or die('Brak połączenia z serwerem MySQL');
  20.  
  21.  
  22.  
  23. $ins = mysql_query ('INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES("", "'.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');
  24.  
  25. if($ins) echo "Rekord zostal dodany poprawnie";
  26.  
  27. else echo"Błąd nie udało dodac się nowego rekordu";
  28.  
  29. mysql_close($connection);
  30.  
  31.  
  32.  
  33. } else {
  34.  
  35. echo "Błąd";
  36.  
  37. }


zamień na taki wink.gif
i powiedz co teraz Ci się wyświetla
Dominator
  1. echo '<option name="kategoria1">--- wybierz z listy ---</option>';


Według tego kodu kategoria1 jest przypisana do --- wybierz z listy ---. Twoim zadaniem jest przypisać name do każdego $w_kat.
dawids2411
wyświetla się "Błąd"

To jak mam to sformulowac
  1. echo "<select>";
  2. echo '<option>--- wybierz z listy ---</option>';
  3. echo $w_kat;
  4. echo '</select><br />';
Damonsson
Więc już chyba wiesz, gdzie tkwi błąd smile.gif
dawids2411
ehh no wlasnie nie wiem haha.gif
Damonsson
  1.  
  2. $kat = $_POST['"'.$w_kat.'"'];
  3. var_dump($kat);
  4.  
  5.  
  6. $nazwa = $_POST['nazwa'];
  7. var_dump($nazwa);
  8.  
  9.  
  10. $cena_zakupu = $_POST['cena_zakupu'];
  11. var_dump($cena_zakupu);
  12.  
  13.  
  14. if($nazwa AND $cena_zakupu AND $kat ) {
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  27.  
  28.  
  29.  
  30. or die('Brak połączenia z serwerem MySQL');
  31.  
  32.  
  33.  
  34. $db = @mysql_select_db('db592591', $connection)
  35.  
  36.  
  37.  
  38. or die('Brak połączenia z serwerem MySQL');
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. $ins = mysql_query ('INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES("", "'.$nazwa.'", "'.$cena_zakupu.'", "'.$kat.'") ');
  47.  
  48.  
  49.  
  50. if($ins) echo "Rekord zostal dodany poprawnie";
  51.  
  52.  
  53.  
  54. else echo"Błąd nie udało dodac się nowego rekordu";
  55.  
  56.  
  57.  
  58. mysql_close($connection);
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66. } else {
  67.  
  68.  
  69.  
  70. echo "Błąd";
  71.  
  72.  
  73.  
  74. }


No to bawimy się dalej wink.gif Zamień na to ^
Dominator
Spójrz kolego.

  1. $kat = $_POST['"'.$w_kat.'"'];
  2. $nazwa = $_POST['nazwa'];
  3. $cena_zakupu = $_POST['cena_zakupu'];
  4. if($nazwa AND $cena_zakupu AND $kat )
  5. {
  6. echo "Działa"
  7. } else {
  8. echo "Błąd";
  9. }


Jeśli te 3 zmienne ( $kat, $nazwa i $cena_zakupu ) się spełnią to wyświetli się informacja, że działa. Tobie natomiast wyświetla się błąd - czyli warunki się nie spełniły.
dawids2411
Taki błąd

NULL string(6) "router" string(2) "20" Błąd
rzeczywiscie się nie spełniają.. Kurde chyba za wysokie progi na moje nogi ;/
Dopiero zaczynam przygode więc jestem zielony .

TO jak to powinno wyglądac? i caly formularz i zapytanie. Jesli mi to zadziala to sobie przestudiuje ten skrypt

edit: usunalem zmienną $kat i zapytanie z nią i skrypt działa
  1. <?php
  2. /* $kat = $_POST['"'.$w_kat.'"'];
  3. var_dump($kat); */
  4.  
  5.  
  6. $nazwa = $_POST['nazwa'];
  7. var_dump($nazwa);
  8.  
  9.  
  10. $cena_zakupu = $_POST['cena_zakupu'];
  11. var_dump($cena_zakupu);
  12.  
  13.  
  14. if($nazwa AND $cena_zakupu) {
  15.  
  16.  
  17.  
  18.  
  19.  
  20. $connection = @mysql_connect('localhost', 'db5', 'alamakota')
  21.  
  22.  
  23.  
  24. or die('Brak połączenia z serwerem MySQL');
  25. $db = @mysql_select_db('db592591', $connection)
  26. or die('Brak połączenia z serwerem MySQL');
  27. $ins = mysql_query ('INSERT INTO zakup(id, nazwa, cena_zakupu, id_kategorie) VALUES("", "'.$nazwa.'", "'.$cena_zakupu.'", "") ');
  28. if($ins) echo "Rekord zostal dodany poprawnie";
  29. else echo"Błąd nie udało dodac się nowego rekordu";
  30. mysql_close($connection);
  31.  
  32. } else {
  33.  
  34.  
  35.  
  36. echo "Błąd";
  37.  
  38.  
  39.  
  40. }
  41. ?>

JEDNAK CHCIAŁBYM ABY Z ROZWIJANEJ LISTY JEZELI WYBIORĘ KATEGORIE TO ID TEJ KATEGORI ZAPISYWALO SIE W ZAKUPACH W KOLUMNIE ID_KATEGORIA JAK TEGO DOKONAC questionmark.gif
Dominator
Nie ma </form>

Najlepiej napisz od nowa i przestudiuj dokładnie każdą linijkę kodu.

Zastosuj się do tego, co pisałem wcześniej.
dawids2411
Probowalem pisac ale mi nie wychodzilo jedynie co mi wyszlo to to
jak probowalem pisac to nawet mi sie rozwijana lista z kategoriami nie wyswietlala
ehh
udalo sie POPRAWIC I DZIALA WSZYSTKO OK DZIEKI FOR ALL
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.