Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Update nie przypisuje wartości i wysyła puste pole.
saif3r
post 28.02.2010, 21:58:57
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


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>


Ten post edytował saif3r 28.02.2010, 22:34:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Rysh
post 28.02.2010, 22:04:13
Post #2





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


  1. $zapytanie ="UPDATE boxy SET imie = '$imie' WHERE id='$id_box'";


Chociaż sekunda... To cały kod strony? Bo nie bardzo go rozumiem?

Ten post edytował Rysh 28.02.2010, 22:08:56


--------------------
Go to the top of the page
+Quote Post
saif3r
post 28.02.2010, 22:30:11
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


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>


Ten post edytował saif3r 28.02.2010, 22:33:27
Go to the top of the page
+Quote Post
Rysh
post 28.02.2010, 22:40:06
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Nie wiem czy wiesz ale <option> również powinien być w <form>.


--------------------
Go to the top of the page
+Quote Post
saif3r
post 1.03.2010, 00:47:13
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


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>


Ten post edytował saif3r 1.03.2010, 00:49:29
Go to the top of the page
+Quote Post
Rysh
post 1.03.2010, 01:09:19
Post #6





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


A w bazie imie nie siedzi przypadkiem jako varchar(1) ?
Ewentualnie usuń jeszcze size=1

Ten post edytował Rysh 1.03.2010, 01:11:26


--------------------
Go to the top of the page
+Quote Post
saif3r
post 1.03.2010, 01:15:10
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


mam varchar(20).
usunąłem parametr size, ale to nic nie pomogło.
Go to the top of the page
+Quote Post
Rysh
post 1.03.2010, 01:30:50
Post #8





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


7 linijka, $_POST['spis'] a nie $spis['name'] oraz w dalszym ciągu nie masz zamkniętego <select> oraz <form>.


--------------------
Go to the top of the page
+Quote Post
DiH
post 1.03.2010, 01:31:53
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował DiH 1.03.2010, 01:42:26
Go to the top of the page
+Quote Post
saif3r
post 1.03.2010, 01:39:06
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


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ź.
Go to the top of the page
+Quote Post
DiH
post 1.03.2010, 01:45:02
Post #11





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


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'];


Ten post edytował DiH 1.03.2010, 01:48:24
Go to the top of the page
+Quote Post
saif3r
post 1.03.2010, 02:32:26
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.02.2010

Ostrzeżenie: (0%)
-----


OK wszystko działa, dzięki jeszcze raz.

Ten post edytował saif3r 1.03.2010, 11:01:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:45