Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Update nie przypisuje wartości i wysyła puste pole.
Forum PHP.pl > Forum > Przedszkole
saif3r
zwracam się do was z prośbą bo mi już ręce opadają...
chciałbym aby po kliknięciu "Uaktualnij" wykonywało się $zapytanie, które pobiera wartość "imię" z poniższego pola Select w wierszu gdzie id = id podanemu w $query. Niestety nie wychodzi mi.
z góry dzięki za pomoc, oto kod:

  1. <?php
  2. include ('index.php');
  3.  
  4.  
  5. if ($_POST['edycja']) {
  6.  
  7. $imie = $_POST['spis'];
  8. $id_box = $_GET["id"];
  9.  
  10. $zapytanie ="UPDATE boxy SET imie = '".$imie."' WHERE id=".$id_box;
  11. $wynik = mysql_query($zapytanie) or die('Query failed3: ' . mysql_error());
  12.  
  13. if ($wynik)
  14. echo "<p>Zaktualizowano!";
  15. else
  16. echo "Błąd: " . mysql_error() . "<p />\n";
  17.  
  18. }
  19. $query = 'SELECT id, imie FROM boxy WHERE id='.$_GET['id'];
  20. $result = mysql_query($query) or die('Query failed1: ' . mysql_error());
  21.  
  22. $query1 = 'SELECT name FROM horses WHERE box_number=0';
  23. $result1 = mysql_query($query1) or die('Query failed2: ' . mysql_error());
  24. $row = mysql_fetch_assoc($result);
  25.  
  26. echo '<table align="center"><tr><td>';
  27. echo 'Id boxu:</td><td><b>'.$row["id"].'</b></td></tr><br>';
  28. echo '<td>Obecny koń</td><td><b>'.$row["imie"].'</b></td></tr><br>';
  29. echo '<td>Przypisz box</td><td><select name="spis" size=1>';
  30. echo '<option value="0">PUSTY</option>';
  31.  
  32. while ($spis = mysql_fetch_assoc($result1)) {
  33. echo '<option value=\"'. $spis['box_number'] .'">'.$spis['name'] .'</option>';
  34. }
  35. echo '</table><br>';
  36.  
  37.  
  38. // $wyk_edycji ='UPDATE horses SET box_number = 0 WHERE name='.$row["imie"];
  39.  
  40. ?>
  41. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  42. <center><input type="submit" name="edycja" value="Uaktualnij"></center>
Rysh
  1. $zapytanie ="UPDATE boxy SET imie = '$imie' WHERE id='$id_box'";


Chociaż sekunda... To cały kod strony? Bo nie bardzo go rozumiem?
saif3r
nie, tu jeszcze jest box.php, który zawiera odnośnik do kodu który podałem w pierwszym poście.
  1. <?php
  2. include ('index.php');
  3.  
  4. <br>
  5. <table height="500" border="0" align="center">
  6. <tr align="center" valign="middle">
  7. <?
  8. while($row = mysql_fetch_array($result))
  9. {
  10.  
  11. echo "\t\t<td>BOX#$row[0]<br />$row[1]<br><br><a href=\"box_ed.php?id=$row[0]\">Edytuj</a></td>";
  12.  
  13. if ($row[0] == 6) echo "</tr> <tr>
  14. <td height='120' colspan='12' bgcolor='#ebebeb' style='border-style:hidden; background:#ebebeb'><div align='center'></div></td>
  15. </tr><tr>";
  16.  
  17. }
  18.  
  19. ?>
  20. </tr></table></body></html>
Rysh
Nie wiem czy wiesz ale <option> również powinien być w <form>.
saif3r
ok, zrobiłem coś takiego... i teraz kiedy z listy wybieram jakaś opcję, do bazy wysyłana jest tylko pierwsza litera z pola 'imie', czyli np zamiast "Pusty" wysyła "P"
  1. <?php
  2. include ('index.php');
  3.  
  4.  
  5. if ($_POST['edycja']) {
  6.  
  7. $imie = $spis['name'];
  8. $id_box = $_GET["id"];
  9.  
  10. $zapytanie ="UPDATE boxy SET imie = '".$imie."' WHERE id=4";
  11. $wynik = mysql_query($zapytanie) or die('Query failed3: ' . mysql_error());
  12.  
  13. if ($wynik)
  14. echo "<p>Zaktualizowano!";
  15. else
  16. echo "B??d: " . mysql_error() . "<p />\n";
  17.  
  18. }
  19. $query = 'SELECT id, imie FROM boxy WHERE id='.$_GET['id'];
  20. $result = mysql_query($query) or die('Query failed1: ' . mysql_error());
  21.  
  22. $query1 = 'SELECT name FROM horses WHERE box_number=0';
  23. $result1 = mysql_query($query1) or die('Query failed2: ' . mysql_error());
  24. $row = mysql_fetch_assoc($result);
  25.  
  26. echo '<table align="center"><tr><td>';
  27. echo 'Id boxu:</td><td><b>'.$row["id"].'</b></td></tr><br>';
  28. echo '<td>Obecny ko?</td><td><b>'.$row["imie"].'</b></td></tr><br>';
  29. echo '<td>Przypisz box</td><td>'
  30. ?>
  31. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  32. <select name="spis" size=1>';
  33. <option value="Pusty">PUSTY</option>';
  34. <?php
  35. while ($spis = mysql_fetch_assoc($result1)) {
  36. echo '<option value="'. $spis['box_number'] .'">'.$spis['name'] .'</option>';
  37. }
  38. echo '</table><br>';
  39.  
  40. ?>
  41. <center><input type="submit" name="edycja" value="Uaktualnij"></center>
Rysh
A w bazie imie nie siedzi przypadkiem jako varchar(1) ?
Ewentualnie usuń jeszcze size=1
saif3r
mam varchar(20).
usunąłem parametr size, ale to nic nie pomogło.
Rysh
7 linijka, $_POST['spis'] a nie $spis['name'] oraz w dalszym ciągu nie masz zamkniętego <select> oraz <form>.
DiH
Ani <form> nie zamknąłeś, ani <select>. Zacznij od tego.

Dane z formularza pobierasz tylko i wyłącznie poprzez $_POST, natomiast d- wartości pól formularza możesz odwoływać się dopiero po wykonaniu zapytania, które je pobierze. W tym wypadku twoja 7 linijka jest bez sensu.

Jeżeli potrzebujesz odwołać się do jakiegoś pola (imię), to przekaż je w samym formularzu:
  1. <input type="hidden" value="<?php echo $spis['imie']; ?>" name="imie" id="imie">

Aby pobrać wartość tego pola używasz po prostu $_POST['imie']; Pozmieniaj nazwy textfieldów, tak by różniły się od nazw pól w bazie, a unikniesz pomyłek jak ta.
saif3r
takie głupie błędy a tyle straconego czasu...
dzięki panowie.

a powiedzcie mi jeszcze, bo będąc w tym dokumencie jestem w linku: /projekt/box_ed.php?id=5 i w 10 linijce mam :
$zapytanie ="UPDATE boxy SET imie = '".$imie."' WHERE id=4";
to jak zmienić, aby zamiast to WHERE id=4 dane wpisywało do id z linka?
z góry dzięki za odpowiedź.
DiH
Tak samo jak napisałem powyżej. Z bazy pobierz także id i umieść go w ukrytym polu formularza.
  1. <input type="hidden" name="id_pola" id="id_pola" value="<?php echo $spis[
  2. 'id']?>"

Odwołanie: $_POST['id_pola'];

  1. $zapytanie ="UPDATE boxy SET imie = '".$_POST['imie']."' WHERE id=".$_POST['id_pola'];
saif3r
OK wszystko działa, dzięki jeszcze raz.
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.