Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] UPDATE w pętli
Forum PHP.pl > Forum > Przedszkole
funky_beat
Utworzyłem dwie tabele:

tMaterialy:
idmaterialu
iloscwmagazynie

tZamowienie:
idzamowienia
idmaterialu
ilosc

Stworzyłem skrypt, który powinien wg moich założeń wyświetlić rekordy tabeli tZamowienie a następnie po naciśnięciu przycisku Dodaj wykonać w pętli UPDATE kolumny iloscwmagazynie do tych kolumn idmaterialu ktore wystąpiły w tabeli tZamowienia.

Tak wygląda ten skrypt:

  1. <?php
  2.  
  3.  
  4. if (isset($_POST['dodaj'])) {
  5.  
  6. require_once ('baza.php');
  7. function escape_data ($data) {
  8. global $dbc;  
  9. if (ini_get('magic_quotes_gpc')) {
  10. $data = stripslashes($data);
  11. }
  12. return mysql_real_escape_string($data, $dbc);
  13. }  
  14. $message = NULL;
  15.  
  16.  
  17.  
  18. $IDz=escape_data($_POST['IDzamowienia']);
  19.  
  20. $query = mysql_query("SELECT tZamowienia.* FROM tZamowienia WHERE tZamowienia.idzamowienia='".$IDz."'")or die("Error SQL: tZamowienia");
  21.  
  22.  
  23. while ($row = mysql_fetch_array($query))
  24.  
  25. {
  26.  
  27. $sm=$row[3];
  28. $idmaterialu=$row[1];
  29. $query = "UPDATE materialy SET iloscwmagazynie='".$sm."' WHERE idmaterialu='".$IDmaterialu."'";
  30.  
  31. }
  32. echo 'Dodane';
  33.  
  34. exit();
  35. }
  36.  
  37.  
  38.  
  39. require_once ('baza.php');
  40.  
  41.  
  42. $IDzamowienia = intval($_REQUEST['id']);
  43.  
  44. $sql = "SET CHARSET latin2";
  45.  
  46.  
  47. $query = "SELECT tZamowienia.* FROM tZamowienia WHERE tZamowienia.IDzamowienia='".$IDzamowienia."'";
  48. $result = @mysql_query ($query);
  49. $num = mysql_num_rows ($result);
  50.  
  51. if ($num > 0) {
  52. echo '<h4 align="center"><p>Zamówione materiały</h4>';
  53. echo '<p><table align="center" cellspacing="2" cellpadding="6">
  54. <tr align="center" bgcolor="rgb(240,250,255)"><td ><b>ID materiału</b></td><td><b>Ilość</b></td></tr>';
  55.  
  56. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  57.  
  58.  
  59.  
  60. echo '<tr><td >'.$row[1].'</td><td align="right">'.$row[2].'</td></tr>';
  61. }
  62. echo '</table>';
  63.  
  64.  
  65.  
  66. mysql_free_result ($result);
  67.  
  68. }
  69.  
  70.  
  71.  
  72.  
  73. ?>
  74.  
  75.  
  76.  
  77. <form action="wiecej_przychod.php?id=<?php echo $IDzamowienia?>" method="post">
  78.  
  79. <input type="hidden" name="IDzamowienia" value="<?php echo $IDzamowienia; ?>">
  80. <p align="center"><input type="submit" name="dodaj" value="Dodaj">
  81.  
  82. </form>



Skrypt poprawnie wyświetla rekordy z tabeli tZamowienia ale po nacisnieciu przycisku Dodaj wyskakuje mi ostrzezenie

  1. Warning: mysql_fetch_array(): supplied argument IS NOT a valid MySQL result resource IN skrypt.php ON line 24

czyli UPDATE nie zostaje wykonany tylko ten komunikat

Co w tym skrypcie jest wykonanie niepoprawnie?
Grzyw
Nie wiem, czy dobrze widzę, ale wygląda na to, że połączenie z bazą uzyskujesz w linijce 40:
  1. <?php
  2. require_once ('baza.php');
  3. ?>

Czyli górna część skryptu nie nawiązała jeszcze połączenia z bazą.
funky_beat
połączenie z bazą występuje w dwóch miejscach w linijce 40 oraz wczesniej w odsłudze formularza czyli w linijce 5Ok juz nie trzeba, udalo mi sie naprawic smile.gif brakowalo paru zmiennych i tyle
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.