Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Przekazywanie zmiennych- Pewnie banalny błąd, ale nie ogarniam
Forum PHP.pl > Forum > Przedszkole
mario_7
Witam ponownie. Pewnie mój problem będzie dla was śmieszny, ale siedzę nad tym gównem od 7 rano i nadal zero, pomimo prób.
Tym razem chce zaktualizować bazę danych przez przycisk edytuj.
Wszystko fajnie, tylko w katalogu muszę odjąć to, co wcześniej było dodane i teraz dodać nowy rekord, który doda wartości do katalogu. Przykład:
Dodałem 5 jabłek
Pomyliłem się! Chciałem dodać 7 Gruszek!
i teraz najpierw muszę odjąć 5 jabłek z katalogu, potem zedytować przyjecie towaru na 7 gruszek no i do stanu w katalogu dodać 7 gruszek.
Wszystko fajnie, dodaje mi stan Gruszek, ale nie chce odjąć stanu jabłek, czyli jakbym poprostu dodał nowy rekord. Podaję trzy pliki:

tabelka produktów z getem do edycji:
zmianaprzyjecia.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. mysql_connect("localhost", "root", "");
  7. mysql_select_db("magazyn");
  8. $sql = "SELECT przyjecie.idp, przyjecie.szyba, przyjecie.ilosc_szyb, przyjecie.dataprzyjecia, katalog.nazwaszyby, katalog.ids FROM przyjecie, katalog where przyjecie.szyba = katalog.ids and przyjecie.dataprzyjecia = CURDATE()";
  9. $result=mysql_query($sql);
  10.  
  11. echo '<table border="1" bgcolor="white"><tr><th>Numer przyjecia</th><th>Nazwa szyby</th><th>ilosc</th><th>data przyjecia</th><th>Edycja</th></tr>';
  12. while($row = mysql_fetch_array($result)) {
  13. echo "<tr><td>{$row['idp']}</td><td>{$row['nazwaszyby']}</td><td>{$row['ilosc_szyb']}</td><td>{$row['dataprzyjecia']}</td><td><a href=\"edycjaprzyjecia.php?a=edit&amp;idp={$row['idp']}\">EDIT</a> </td></tr>";
  14. }
  15. echo '</table>';
  16.  
  17. ?>
  18.  
  19. </body>
  20. </html>


Teraz plik który wyświetla edytowany plik i daje możliwość zmiany danych:
edycjaprzyjecia.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. mysql_connect("localhost", "root", "");
  7. mysql_select_db("magazyn");
  8. $idp=$_GET['idp'];
  9. $sql = "SELECT przyjecie.idp, przyjecie.szyba, przyjecie.ilosc_szyb, przyjecie.dataprzyjecia, katalog.nazwaszyby, katalog.ids FROM przyjecie, katalog where przyjecie.szyba = katalog.ids and idp=$idp";
  10. $result=mysql_query($sql);
  11.  
  12. echo '<table border="1" bgcolor="white"><tr><th>Numer przyjecia</th><th>Nazwa szyby</th><th>ilosc</th><th>data przyjecia</th></tr>';
  13. while($row = mysql_fetch_array($result)) {
  14. echo "<tr><td>{$row['idp']}</td><td>{$row['nazwaszyby']}</td><td>{$row['ilosc_szyb']}</td><td>{$row['dataprzyjecia']}</td></tr>";
  15. }
  16. echo '</table>';
  17.  
  18. $dupa = mysql_query("SELECT * FROM przyjecie WHERE idp=$idp ORDER BY ilosc_szyb DESC LIMIT 1") or die (mysql_error());
  19. $rowa= mysql_fetch_array ($dupa);
  20. $iloscpoprzednia=$rowa["ilosc_szyb"];
  21.  
  22. echo '<form action="upprzyjecie.php" method="post">
  23. ilosc: <input type="text" name="iloscup"><input type="text" name="iloscpoprzednia" value="'.$iloscpoprzednia.'" disabled="disabled">
  24. <input type="text" name="idp" value="'.$idp.'" disabled="disabled">
  25. <br/>szyba: <select name="idsp">';
  26.  
  27. $array = mysql_query('SELECT * FROM katalog ORDER BY ids ASC');
  28.  
  29. if(mysql_num_rows($array) > 0)
  30. {
  31. while($l = mysql_fetch_assoc($array))
  32. {
  33. echo "<option value='{$l['ids']}'>{$l['nazwaszyby']}</option>";
  34. }
  35. }
  36.  
  37. echo '</select>
  38. <br/><input type="submit" value="Zmien"></form>';
  39.  
  40. ?>


i trzeci plik, który ma wykonać tą edycję.
upprzyjecie.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. $ids= $_POST['ids'];//
  7. $iloscup= $_POST['iloscup'];
  8. $iloscpoprzednia= $_POST['iloscpoprzednia'];//
  9. $idp=$_POST['idp'];//
  10. $idsp=$_POST['idsp'];
  11. mysql_connect("localhost", "root", "");
  12. mysql_select_db("magazyn");
  13. print_r($_POST);
  14.  
  15. $sql = ("UPDATE katalog SET ilosc=ilosc-$iloscpoprzednia WHERE ids=$ids") ;
  16. $result=mysql_query($sql);
  17. $sql2 = ("INSERT INTO przyjecie SET idp='$idp', szyba='$idsp', ilosc_szyb='$iloscup', dataprzyjecia=NOW(), zmianap=TRUE");
  18. $result2=mysql_query($sql2);
  19. $sql = ("UPDATE katalog SET ilosc=ilosc+$iloscup WHERE ids=$idsp") ;
  20. $result=mysql_query($sql);
  21. //$sql3 = ("INSERT INTO przyjecie(dataprzyjecia) VALUES(NOW())");
  22. //$result3=mysql_query($sql3);
  23. if($result) echo "poprawiono szybe";
  24. else echo "Blad, sproboj ponownie";
  25.  
  26. ?>
  27. <br>
  28. <a href="index.php">powrot</a>
  29.  
  30.  
  31. </body>
  32. </html>


Tak więc otrzymuję po kliknięciu do 3 pliku:
Notice: Undefined index: ids in C:\xampp\htdocs\magazyn\upprzyjecie.php on line 6

Notice: Undefined index: iloscpoprzednia in C:\xampp\htdocs\magazyn\upprzyjecie.php on line 8

Notice: Undefined index: idp in C:\xampp\htdocs\magazyn\upprzyjecie.php on line 9
Czyli że te zmienne są niezdefiniowane, chociaż przekazuję je z poprzedniego formularza??
I to co przesyła do 3 pliku:
Array ( [iloscup] => 2 [idsp] => 1 ) poprawiono szybe
czyli dalej idzie tylko iloscup i idsp
Nie przechodzą zmienne: ids, iloscpoprzednia i idp te dwie są wrzucane w formularzu jako wcześniejsze zmienne, może to źle robię? a ids jest wysyłana getem z 1 pliku i nie wiem, czy w 2 dobrze ją przekazuje.
To tyle. Możecie mnie wyśmiać za banalność mojego błędu, nie obrażę się, tylko pomóżcie smile.gif
Pozdro!
Fifi209
  1. ilosc: <input type="text" name="iloscup"><input type="text" name="iloscpoprzednia" value="'.$iloscpoprzednia.'" disabled="disabled">
  2. <input type="text" name="idp" value="'.$idp.'" disabled="disabled">


Zobacz w skrypcie oczekujesz "ids" a przesyłasz "idp" a ilość poprzednia nie przesyła się bo najzwyczajniej jest wyłączona smile.gif

  1. echo '<pre>';
  2. print_r($_POST);

i sobie sprawdź co masz w tej tablicy po przesłaniu takiego formularza
mario_7
disabled znaczy, ze nie moge jej przeslac? chodzilo mi, zeby jej nikt nie zmienił, ale byla w formularzu.
nospor
To się robi readonly albo ukryte pole (hidden)
Ale to żadne zabezpieczenie bo każdy takie wartosci może i tak zmieniać
mario_7
faktycznie, teraz przeszly te, ktore byly disabled. ale tamto ids przesylam tu:
  1. if(mysql_num_rows($array) > 0)
  2. {
  3. while($l = mysql_fetch_assoc($array))
  4. {
  5. echo "<option value='{$l['ids']}'>{$l['nazwaszyby']}</option>";
  6. }
  7. }

i tego jednego nie otrzymuje
nospor
Bo z select wysyła się tylko zaznaczone pole.
Jak chcesz przesłać konkretną wartosc, to wsadzasz ją w pole typu hidden
mario_7
problem rozwiązany smile.gif
Do drugiego pliku dodałem:
  1. $dupa2 = mysql_query("SELECT * FROM przyjecie WHERE idp=$idp ORDER BY szyba DESC LIMIT 1") or die (mysql_error());
  2. $rowa2= mysql_fetch_array ($dupa2);
  3. $dupadupa=$rowa2["szyba"];

i przesłałem w formularzu jako pole ukryte:
  1. <input type="text" name="ids" value="'.$dupadupa.'" hidden="hidden">

Bo jak bez tego miałbym otrzymać tą wartość? sciana.gif
Dzięki za pomoc. Podziękowania poleciały Lkingsmiley.png
Fifi209
Trzymać w sesji?
$_SESSION
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.