Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodanei rekordu do bazy danych + lista rozwijana
Forum PHP.pl > Forum > Przedszkole
Kosaa
Witam dopiero zaczynam przygode z PHP dlatego prosze o pomoc, sam nie potrafie znalezc bledu... z góry przepraszam za bałagan wizualny wink.gif

Jak widnieje w temacie mam baze danych w MySQL i chcialbym dodac do tabeli Zawodnik, łączenie z baza działa samo zapytanie INSERT wpisane w PHPMyAdmin takze, ale podczas gdy naciskam przycisk "Dodaj" to odświeża mi strone czysci dane, nie wyswetla ani komunikatu o dodaniu zawodnika ani o błedzie np nie podanie nazwiska albo podaniu juz istniejacego, tak jakby wogole tego nie wykonywalo. W bazie w tez nie zaszły żadne zmiany. Oto mój kod

  1. require('conn.php');
  2.  
  3. if (isset($_POST['Preferowana_noga']) and isset($_POST['kontrakt']) and isset($_POST['Pozycja']) and isset($_POST['Klub'])
  4. and isset($_POST['imie']) and isset($_POST['Nazwisko']) and isset($_POST['NUMER_KOSZULKI']) and isset($_POST['NARODOWOSC'])
  5. and isset($_POST['WARTOSC']) and isset($_POST['WYCHOWANEK']) and isset($_POST['WAGA']) and isset($_POST['WZROST'])
  6. and isset($_POST['TYGODNIOWY_ZAROBKI']))
  7.  
  8. {
  9.  
  10. $Preferowana_noga = $_POST['Preferowana_noga'];
  11. $kontrakt = $_POST['kontrakt'];
  12. $Pozycja = $_POST['Pozycja'];
  13. $Klub = $_POST['Klub'];
  14. $imie = $_POST['imie'];
  15. $Nazwisko = $_POST['Nazwisko'];
  16. $NUMER_KOSZULKI = $_POST['NUMER_KOSZULKI'];
  17. $NARODOWOSC = $_POST['NARODOWOSC'];
  18. $WARTOSC = $_POST['WARTOSC'];
  19. $WYCHOWANEK = $_POST['WYCHOWANEK'];
  20. $WAGA = $_POST['WAGA'];
  21. $WZROST = $_POST['WZROST'];
  22. $TYGODNIOWY_ZAROBKI = $_POST['TYGODNIOWY_ZAROBKI'];
  23.  
  24. if ($imie!="")
  25.  
  26. {
  27.  
  28.  
  29. $ile =mysql_query("SELECT * FROM `pilka`.`zawodnik` WHERE imie = '$imie' and nazwisko= '$Nazwisko' ");
  30.  
  31. $ile = mysql_num_rows($ile);
  32.  
  33. if ($ile==0) {
  34.  
  35. $zapytanie="INSERT INTO `pilka`.`zawodnik` (`ID_ZAWODNIK`, `ID_PREFEROWANA_NOGA`, `ID_KONTRAKT`,
  36. `ID_POZYCJA`, `ID_KLUB`, `IMIE`, `NAZWISKO`, `NUMER_KOSZULKI`, `NARODOWOSC`, `WARTOSC`, `WYCHOWANEK`,
  37. `WAGA`, `WZROST`, `TYGODNIOWY_ZAROBKI`) VALUES (NULL, '$ID_PREFEROWANA_NOGA', '$ID_KONTRAKT', '$ID_POZYCJA',
  38. '$ID_KLUB', '$IMIE', '$NAZWISKO', '$NUMER_KOSZULKI',
  39. '$NARODOWOSC', '$WARTOSC', '$WYCHOWANEK', '$WAGA', '$WZROST', '$TYGODNIOWY_ZAROBKI')";
  40.  
  41. mysql_query($zapytanie) or die("Wystąpił błąd" );
  42.  
  43.  
  44.  
  45. echo('Zawodnik '.$imie.' '.$Nazwisko.' zostal dodany');
  46. echo" Za chwile zostaniesz, automatycznie przeniesiony na stronę edycji zawodników ";
  47. header("Refresh:5; Zawodnicy2.php");
  48.  
  49. }
  50.  
  51. else
  52.  
  53. {
  54.  
  55. echo("Zawodnik o takim imieniu juz istnieje. Kliknij wstecz aby dodac ponownie");
  56.  
  57. }
  58.  
  59. }
  60. else
  61. {
  62. echo ('Podales niepełne dane. Kliknij wstecz aby sprobowac ponownie.');
  63. }
  64.  
  65. }
  66.  
  67. else{
  68.  
  69. ?>
  70.  
  71.  
  72. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  73. <html xmlns="http://www.w3.org/1999/xhtml">
  74. <head>
  75. <fieldset>
  76. <meta http-equiv="Thoma" content="text/html; charset=iso-8859-2" />
  77. <meta http-equiv="reply-to" content="Adres_e-mail" />
  78. <meta name="generator" content="WebSite PRO 4.3" />
  79. <meta name="author" content="Kosaa" />
  80. <meta name="description" content="Manager" />
  81. <title>Manager </title>
  82. <link rel="Stylesheet" type="text/css" href="style/style.css" />
  83.  
  84. <style type="text/css">
  85.  
  86. BODY { background-color: darkgreen; }
  87. .style4 {font-size: 12pt}
  88.  
  89. </style>
  90.  
  91.  
  92. </head>
  93. <body>
  94. <center>
  95. <table width="1041" border="0" cellspacing="0" cellpadding="0">
  96.  
  97. <tr>
  98. <td height="200" colspan="2"><img src="grafika/ttelko.jpg" width="1240" height="200" /></td>
  99. </tr>
  100. </table>
  101.  
  102.  
  103.  
  104. <form action="dodawanieZawodnika.php" method="post">
  105.  
  106. <strong>Kontrakt</strong>
  107. <select name="Kontrakt">
  108. <?php
  109. $zapytanie1 = "SELECT `RODZAJ` FROM `pilka`.`kontrakt`";
  110. $idzapytania1 = mysql_query($zapytanie1);
  111. while ($wiersz1 = mysql_fetch_row($idzapytania1))
  112. echo '<option>('.$wiersz1[0].') '.$wiersz1[1].'</option>';
  113. ?>
  114. </select>
  115. <br />
  116.  
  117. <strong>Pozycja</strong>
  118. <select name="Pozycja">
  119. <?php
  120. $zapytanie2 = "SELECT `PREFEROWANA_POZYCJA` FROM `pilka`.`pozycja`";
  121. $idzapytania2 = mysql_query($zapytanie2);
  122. while ($wiersz2 = mysql_fetch_row($idzapytania2))
  123. echo '<option>('.$wiersz2[0].') '.$wiersz2[1].'</option>';
  124. ?>
  125. </select>
  126. <br />
  127.  
  128. <strong>Klub:</strong><input name="Klub" type="text" value="" /><br/>
  129.  
  130. <strong>Imie:</strong><input name="imie" type="text" value="" /><br/>
  131.  
  132. <strong>Nazwisko:</strong><input name="Nazwisko" type="text" value="" /><br/>
  133.  
  134. <strong>Numer koszulki:</strong><input name="NUMER_KOSZULKI" type="text" value="" /><br/>
  135.  
  136. <strong>Narodowość:</strong><input name="NARODOWOSC" type="text" value="" /><br/>
  137.  
  138. <strong>Wartość:</strong><input name="WARTOSC" type="text" value="" /><br/>
  139.  
  140. <strong>Wychowanek:</strong><input name="WYCHOWANEK" type="text" value="" /><br/>
  141.  
  142. <strong>Waga:</strong><input name="WAGA" type="text" value="" /><br/>
  143.  
  144. <strong>Wzrost:</strong><input name="WZROST" type="text" value="" /><br/>
  145.  
  146. <strong>Tygodniowe zarobki:</strong><input name="TYGODNIOWY_ZAROBKI" type="text" value="" /><br/>
  147.  
  148. <div>
  149. <TD><BR><input type="RESET" name="Reset" value="Wyczyść"/></TD>
  150. <TD><BR><input type="SUBMIT" name="Submit" value="Dodaj"/></TD>
  151. </div>
  152.  
  153.  
  154. </form>
  155.  
  156.  
  157. <?php
  158.  
  159. }
  160.  
  161.  
  162.  
  163. ?>
  164.  
  165. <?php
  166. include('include\stopka.php');
  167. ?>


Najlepsze jest to, ze mam juz dodawanie klubów tylko, ze tam nie mam listy rozwijanej tylko same pola do wpisywania i tamta strona działa mi poprawnie wiec tym bardziej nie rozumiem gdzie sie pomylilem.

Dziekuje za pomoc
Kosaa
Przez te ostatnie pare minut zrobiłem pewną rzecz, do tej mojej stronki gdzie mi wszystko ladnie smigało dodałem jedna warotsc (ktora wczesniej była null) i chcialem ja dodać za pomoca listy rozwijanej i okazało się, ze po jej wprowadzeniu równiez mi tylko odsieza strone i nic nie dodaje (tak jak w opisanym problemie), tak wiec problemem na 99% sa te listy, moze troszke pomoglem tym co beda chcieli pomoc mi smile.gif

mam dwie wersje wyswietlania tych list nie wiem czy obie sa zle czy jaki gwint
1 wersja
  1. <select name="Kontrakt">
  2. <?php
  3. $zapytanie1 = "SELECT * FROM `pilka`.`kontrakt`";
  4. $idzapytania1 = mysql_query($zapytanie1);
  5. while ($wiersz1 = mysql_fetch_array($idzapytania1))
  6. echo "<option value=\"$wiersz1[ID_KONTRAKT]\">$wiersz1[RODZAJ]</option>\n";
  7. ?>
  8. </select>
  9. <br />


2 wersja
  1. <strong>Pozycja</strong>
  2. <select name="Pozycja">
  3. <?php
  4. $zapytanie2 = "SELECT `PREFEROWANA_POZYCJA` FROM `pilka`.`pozycja`";
  5. $idzapytania2 = mysql_query($zapytanie2);
  6. while ($wiersz2 = mysql_fetch_row($idzapytania2))
  7. echo '<option>('.$wiersz2[0].') '.$wiersz2[1].'</option>';
  8. ?>
  9. </select>
  10. <br />
Aqu
Dodaj na początku var_dump($_POST) o zobacz co dostajesz.

  1. if (isset($_POST['Preferowana_noga']) and isset($_POST['kontrakt']) and isset($_POST['Pozycja']) and isset($_POST['Klub'])
  2. and isset($_POST['imie']) and isset($_POST['Nazwisko']) and isset($_POST['NUMER_KOSZULKI']) and isset($_POST['NARODOWOSC'])
  3. and isset($_POST['WARTOSC']) and isset($_POST['WYCHOWANEK']) and isset($_POST['WAGA']) and isset($_POST['WZROST'])
  4. and isset($_POST['TYGODNIOWY_ZAROBKI']))
  5.  
  6. // lepiej tak
  7.  
  8. if(isset($_POST['a'], $_POST['b'] itd.))
  9.  


dalej...

  1. $Preferowana_noga = $_POST['Preferowana_noga'];
  2. $kontrakt = $_POST['kontrakt'];
  3. $Pozycja = $_POST['Pozycja'];
  4. $Klub = $_POST['Klub'];
  5. $imie = $_POST['imie'];
  6. $Nazwisko = $_POST['Nazwisko'];
  7. $NUMER_KOSZULKI = $_POST['NUMER_KOSZULKI'];
  8. $NARODOWOSC = $_POST['NARODOWOSC'];
  9. $WARTOSC = $_POST['WARTOSC'];
  10. $WYCHOWANEK = $_POST['WYCHOWANEK'];
  11. $WAGA = $_POST['WAGA'];
  12. $WZROST = $_POST['WZROST'];
  13. $TYGODNIOWY_ZAROBKI = $_POST['TYGODNIOWY_ZAROBKI'];

Dlaczego jedna zmienna zaczyna się duża, druga jest napisana tylko małymi a trzecia tylko dużymi? ;p I po co tu w ogóle?
Kosaa
Po wpisaniu przykladowych danych var_dump($_POST); wyswietliło mi :
array(12) { ["Kontrakt"]=> string(1) "1" ["Pozycja"]=> string(10) "(bramkarz)" ["Klub"]=> string(11) "Real Madryt" ["imie"]=> string(9) "Cristiano" ["Nazwisko"]=> string(7) "Ronaldo" ["NUMER_KOSZULKI"]=> string(1) "7" ["NARODOWOSC"]=> string(12) "Portugalczyk" ["WARTOSC"]=> string(9) "100000000" ["WYCHOWANEK"]=> string(16) "Sporting Lisbona" ["WAGA"]=> string(2) "88" ["WZROST"]=> string(3) "190" ["TYGODNIOWY_ZAROBKI"]=> string(6) "200000" }

Bez wprowadzenia jakich kolwiek danych var_dump($_POST); wyswietla mi :
array(12) { ["Kontrakt"]=> string(1) "1" ["Pozycja"]=> string(10) "(bramkarz)" ["Klub"]=> string(0) "" ["imie"]=> string(0) "" ["Nazwisko"]=> string(0) "" ["NUMER_KOSZULKI"]=> string(0) "" ["NARODOWOSC"]=> string(0) "" ["WARTOSC"]=> string(0) "" ["WYCHOWANEK"]=> string(0) "" ["WAGA"]=> string(0) "" ["WZROST"]=> string(0) "" ["TYGODNIOWY_ZAROBKI"]=> string(0) "" }

Tak jak pisalem troszke balaganu jest np z tymi wielkosciami liter, jeszcze to poprawie (lecz nie sa one problemem błedów), ale nie za bardzo rozumiem Twoje pytanie "po co tu w ogole" smile.gif mozesz jaśniej ?

faktycznie Twoj sposob wpisywanie jest mega lepszy wink.gif
Aqu
Chodzi mi o to, że to przypisywanie $_POST['x'] do $x jest niepotrzebne. Rozumiem jak używałbyś tego $x kilka razy ale tutaj używasz tych zmiennych tylko raz. wink.gif
isset($_POST['kontrakt']) zamień na isset($_POST['Kontrakt']) i nie wysyłasz $_POST['Preferowana_noga']
Kosaa
A wiec problem tkwil w takim malym szczegole, ktory sam przez swoj balagan stworzylem. Stronka mi sie juz laduje, ale teraz wyskakuje blad, i jak wpisalem echo($zapytanie) i to co wyswietlilo na stronie wbilem do PHPMyAdmin to wyswietlilo mi to :
#1452 - Cannot add or update a child row: a foreign key constraint fails (`pilka`.`zawodnik`, CONSTRAINT `zawodnik_ibfk_3` FOREIGN KEY (`ID_POZYCJA`) REFERENCES `pozycja` (`ID_POZYCJA`))

a tak wygladał insert
INSERT INTO `pilka`.`zawodnik` (`ID_ZAWODNIK`, `ID_PREFEROWANA_NOGA`, `ID_KONTRAKT`, `ID_POZYCJA`, `ID_KLUB`, `IMIE`, `NAZWISKO`, `NUMER_KOSZULKI`, `NARODOWOSC`, `WARTOSC`, `WYCHOWANEK`, `WAGA`, `WZROST`, `TYGODNIOWY_ZAROBKI`) VALUES (NULL, NULL, '1', '(Napastnik)', 'Real Madryt', 'Cristiano', 'Ronaldo', '7', 'Portugalczyk', '100000000', 'Sporting Lisbona', '88', '190', '200000')

Czy mogłbyś mi jeszcze z tym pomoc, chociaż może samemu uda mi sie dojsc do przyczyny awarii.

Dzieki
Kosaa
Ok problem rozwiązany, chodzi o to, że jak mam FOREIGN KEY to znaczy, że dane pole odnosi się do istniejącego w innej tabeli. I jeśli tam nie masz nic wpisanego, to nie możesz też dodać do tabeli, która się łączy z nią. Zatem wpierw dodajesz dane do tych tabel, które nie mają pól z FOREIGN KEY, a następnie do tych, w których te pola występują, już z wartościami wpisanymi w te wcześneijsze. A w przypadku zwracania wartosci z lisy musi to byc id (tzn to z czym jest polaczone z tabela do ktorej bedzie dopisaywane) a ja mialem nazwe.

Ale teraz mam inne pytanie
W chwili gdy dodam rekord wyswietla mi sie "Za chwile zostaniesz, automatycznie przeniesiony na stronę edycji zawodników" i po 5 sek przelogowywuje na strone edycji zawodnikow, ale napis ten wyskakuje mi w nowo otwartym oknie ktore jest cale biale i brzydkie, a chcialbym by otworzylo mi sie nowe okienko w ktorym widnieje ta sama wiadomosc i tak samo przelogowywuje na jakas tam strone (oczywiscie po przelogowaniu znika) Czy jest to proste do zrobienia w PHP ?

Sebapgd
Mam listę rozwijaną ale chciałbym utworzyć formularz w tabeli zamowienie:
Produkt : rozwijają się produkty z tabeli"produkty"
Nazwa firmy: rozwijają się nawy firm z tabeli"klient"
i żeby zapisywało do tabeli "zamowienie"

Jak to zrobić na razie udało mi się coś takiego tylko zrobić?

  1. <form action="" method="post">
  2. <select name="zamowienie" onchange="this.form.submit()">
  3. <option value="">Wybierz dział</option>
  4. <option value="nazwa">Nazwa</option>
  5. <option value="produkty">Produkty</option>
  6. <option value="magazyn">Magazyn</option>
  7. </select>
  8. </form>
  9.  
  10. <?php
  11.  
  12. // parametry serwera
  13. $serwer = "127.0.0.1"; // nazwa serwera mysql
  14. $login = "root"; // login do bazy
  15. $haslo = ""; // haslo do bazy
  16. $baza = "sebastian"; // nazwa bazy
  17. $tabela = "zamowienie"; // nazwa tabeli
  18.  
  19. $dzial = $_POST['produkty'];
  20.  
  21. if($dzial) {
  22.  
  23. // łączymy się z bazą danych
  24. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  25.  
  26. // zapytanie do bazy danych
  27. $wynik = mysql_query("SELECT * FROM zamowienie WHERE produkty='$dzial'")
  28. or die("Błąd w zapytaniu!");
  29.  
  30. }
  31. else echo "Nie mogę połączyć się z bazą danych!";
  32.  
  33. // wyświetlany wyniki zapytania
  34. while($rek = mysql_fetch_array($wynik)) {
  35. echo $rek['nazwisko']."<br />";
  36. }
  37. }


Wszystkie moje pytania usunąłem to jest jedyne;]
Turson
Cytat
Mam listę rozwijaną ale chciałbym utworzyć formularz w tabeli zamowienie:
Produkt : rozwijają się produkty z tabeli"produkty"
Nazwa firmy: rozwijają się nawy firm z tabeli"klient"
i żeby zapisywało do tabeli "zamowienie"


Na tej zasadzie
  1. $query = //pobierasz w zapytaniu nazwy produktów+id (najlepiej)
  2. echo '<select name="produkt">
  3. while($produkty = mysql_fetch_assoc($query)){
  4. echo '<option value="'.$produkty['id']">'.$produkty['nazwa'].'</option>';
  5. }
  6. echo '</select>';
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.