Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z użyciem $_GET() w zapytaniu do bazy
Forum PHP.pl > Forum > PHP
Mistress9
Hej,
dopiero od niedawna piszę w PHP. Aktualnie robię małą bazę dotyczącą delegacji. Użytkownik może dodawać własne, administrator może je edytować i usuwać. Wszystko szło dobrze, aż napotkałam taki dziwny problem - w zapytaniu do bazy nie czyta mi zmiennej z $_GET, chociaż w drugim zapytaniu (które wykonywane jest przed tym niedziałającym) czyta wszystko.
Zapytanie działa, ponieważ sprawdzane było poprzez podmienienie zmiennej na zwykłą liczbę, poza tym wykonuje się i zwraca TRUE. Próbowałam zmieniać zmienną poprzez wywołanie na nowo $_GET(), zmienianie formatu i różne inne dziwne rzeczy (szukałam po forach i internecie). No po prostu NIE DZIAŁA. jak wstawię normalną wartość np. 4 to działa, przy czym pierwsze zapytanie działa normalnie z $id1 = $_GET('id').

Poniżej oba pliki - przesłanie id oraz ten odczyt i edycja formularza. Proszę o pomoc w rozwiązaniu tego, bo pewnie rozwiązanie jest banalne lecz ja go nie dostrzegam.


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DELEGACJE</title>
  5. </head>
  6. <body>
  7. <?php
  8. include 'bd.php';
  9. ?>
  10. <center>
  11. <!-- Wczytanie zmiennej id-->
  12. <form action="edytowanie1.php" method="get">
  13. ID: <br><input type="number_format" name="id"><br><br>
  14. <input type="submit" value="Zatwierdz">
  15. </form>
  16. <a href="http://localhost/php1/weryfikacja.php"><br>Powrot</a>
  17. </center>
  18. </body>
  19. </html>



  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DELEGACJE</title>
  5. </head>
  6. <body>
  7. <?php
  8. include 'bd.php';
  9. $id1 = $_GET['id']; //Wczytanie zmiennej id z pliku edytowanie.php
  10. $sql = mysql_fetch_array(mysql_query("SELECT * FROM spotkanie WHERE id='$id1';"))//pobranie danych z bazy dla danego id;
  11. ?>
  12. <!-- Formularz do zmiany danych (automatycznie uzupełniony aktalnymi danymi) -->
  13. <center>
  14. <form action="edytowanie1.php" method="post">
  15. imie:<br><input type="text" value = "<?php echo $sql['imie'] ?>" name="imie"><br><br>
  16. nazwisko:<br><input type="text" value = "<?php echo $sql['nazwisko'] ?>" name="nazwisko"><br><br>
  17. miejsce:<br><input type="text" value = "<?php echo $sql['miejsce'] ?>" name="miejsce"><br><br>
  18. data(rrrr-mm-dd):<br><input type="date" value = "<?php echo $sql['data'] ?>" name="data"><br><br>
  19. telefon:<br><input type="number_format" value = "<?php echo $sql['telefon'] ?>" name="telefon"><br><br>
  20. opis:<br><input type="text" value = "<?php echo $sql['opis'] ?>" name="opis"><br><br>
  21. cel delegacji:<br><input type="text" value = "<?php echo $sql['cel_delegacji'] ?>" name="cel_delegacji"><br><br>
  22. transport:<br><input type="text" value = "<?php echo $sql['transport'] ?>" name="transport"><br><br>
  23. czas trwania(rrrr-mm-dd:rrrr-mm-dd):<br><input type="date_format" value = "<?php echo $sql['czas_trwania_delegacji'] ?>" name="czas_trwania_delegacji"><br><br>
  24. krajowa/zagraniczna:<br><input type="text" value = "<?php echo $sql['krajowa_czy_zagraniczna'] ?>" name="krajowa_czy_zagraniczna"><br><br>
  25. <input type="submit" value="edytuj">
  26. </form>
  27. <?php
  28. // odbieramy dane z formularza
  29. $imie = $_POST['imie'];
  30. $nazwisko = $_POST['nazwisko'];
  31. $miejsce = $_POST['miejsce'];
  32. $data = $_POST['data'];
  33. $telefon = $_POST['telefon'];
  34. $opis = $_POST['opis'];
  35. $cel_delegacji = $_POST['cel_delegacji'];
  36. $transport = $_POST['transport'];
  37. $czas_trwania_delegacji = $_POST['czas_trwania_delegacji'];
  38. $krajowa_czy_zagraniczna = $_POST['krajowa_czy_zagraniczna'];
  39. //warunek do wykonania zapytania
  40. if ($imie or $nazwisko or $miejsce or $data or $telefon or $cel_delegacji or $transport or $czas_trwania_delegacji or $krajowa_czy_zagraniczna){
  41. $wynik = mysql_query("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id1';");
  42. if($wynik) echo '<br>Edytowano rekord<br>';
  43. else echo '<br>Blad podczas edytowania<br>';
  44. }
  45. ?>
  46. <a href="http://localhost/php1/edytowanie.php"><br>Powrot</a>
  47. <a href="http://localhost/php1/weryfikacja.php"><br>Powrot do delegacji</a>
  48. </center>
  49. </body>
  50. </html>


bd.php to połączenie z bazą



Nie działa mi $id1 w zapytaniu
  1. $wynik = mysql_query("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id1';");

dokładnie w warunku
  1. WHERE id = '$id1'
kapslokk
Może warunek:
  1. if ($imie or $nazwisko or $miejsce or $data or $telefon or $cel_delegacji or $transport or $czas_trwania_delegacji or $krajowa_czy_zagraniczna){
nie jest spełniony i w ogóle nie probuje wykonac tego zapytania? Uzywaj || zamiast or.
Mistress9
Warunek jest spełniony właśnie. Zapytanie się wykonuje lecz NIC nie zmienia (ale wyświetla "Edytowano rekord"). Gdy zamiast $id1 podstawię np. 4 to podmienia dane jak należy.
kapslokk
Przed
  1. $wynik = mysql_query("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id1';");
  2.  

wstaw
  1. echo("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id1';");exit;

I pokaż wyswietlone zapytanie.


@edit.
Teraz zobaczyłem, że w action formularza masz "edytowanie1.php", po wysłaniu nie masz już zmiennej w $_GET. Musisz albo dokleic ja do action w formularzu, albo dodac input type='hidden' i kozystac ze zmiennej w $_POST
Mistress9
UPDATE spotkanie SET imie='Jan', nazwisko='Kowal', miejsce='gdfg', data='0000-00-00', telefon='0', opis='debil', cel_delegacji='celny', transport='auto', czas_trwania_delegacji='2010-05-12:2010-05-20',krajowa_czy_zagraniczna='zagraniczna' WHERE id = '';


Faktycznie bierze to jako PUSTE. Co ciekawe, gdy wcześniej sprawdzałam $id1 poprzez
  1. echo $id1
to wyświetlało poprawnie dane id (np. 4). Dziwne, bo w zapytaniu pierwszym normalnie czyta.
kapslokk
Wyswietla normalnie, ale przed wyslaniem formularza. Gdybys mial wlaczone wyswietlanie bledow, to by CI wywalilo, ze korzystasz z indexu tablicy $_GET, ktory nie istnieje.
Mistress9
Cytat(kapslokk @ 17.08.2016, 12:19:30 ) *
@edit.
Teraz zobaczyłem, że w action formularza masz "edytowanie1.php", po wysłaniu nie masz już zmiennej w $_GET. Musisz albo dokleic ja do action w formularzu, albo dodac input type='hidden' i kozystac ze zmiennej w $_POST


DZIAŁA!!!! Dziękuję mocno biggrin.gif W sumie myślałam o takim rozwiązaniu, ale nie pomyślałam o użyciu 'hidden'.


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DELEGACJE</title>
  5. </head>
  6. <body>
  7. <?php
  8. include 'bd.php';
  9. $id1 = $_GET['id']; //Wczytanie zmiennej id z pliku edytowanie.php
  10. $sql = mysql_fetch_array(mysql_query("SELECT * FROM spotkanie WHERE id='$id1';"))//pobranie danych z bazy dla danego id;
  11. ?>
  12. <!-- Formularz do zmiany danych (automatycznie uzupełniony aktalnymi danymi) -->
  13. <center>
  14. <form action="edytowanie1.php" method="post">
  15. <input type="hidden" value = "<?php echo $sql['id'] ?>" name="id"><br><br>
  16. imie:<br><input type="text" value = "<?php echo $sql['imie'] ?>" name="imie"><br><br>
  17. nazwisko:<br><input type="text" value = "<?php echo $sql['nazwisko'] ?>" name="nazwisko"><br><br>
  18. miejsce:<br><input type="text" value = "<?php echo $sql['miejsce'] ?>" name="miejsce"><br><br>
  19. data(rrrr-mm-dd):<br><input type="date" value = "<?php echo $sql['data'] ?>" name="data"><br><br>
  20. telefon:<br><input type="number_format" value = "<?php echo $sql['telefon'] ?>" name="telefon"><br><br>
  21. opis:<br><input type="text" value = "<?php echo $sql['opis'] ?>" name="opis"><br><br>
  22. cel delegacji:<br><input type="text" value = "<?php echo $sql['cel_delegacji'] ?>" name="cel_delegacji"><br><br>
  23. transport:<br><input type="text" value = "<?php echo $sql['transport'] ?>" name="transport"><br><br>
  24. czas trwania(rrrr-mm-dd:rrrr-mm-dd):<br><input type="date_format" value = "<?php echo $sql['czas_trwania_delegacji'] ?>" name="czas_trwania_delegacji"><br><br>
  25. krajowa/zagraniczna:<br><input type="text" value = "<?php echo $sql['krajowa_czy_zagraniczna'] ?>" name="krajowa_czy_zagraniczna"><br><br>
  26. <input type="submit" value="edytuj">
  27. </form>
  28. <?php
  29. // odbieramy dane z formularza
  30. $id2 = $_POST ['id'];
  31. $imie = $_POST['imie'];
  32. $nazwisko = $_POST['nazwisko'];
  33. $miejsce = $_POST['miejsce'];
  34. $data = $_POST['data'];
  35. $telefon = $_POST['telefon'];
  36. $opis = $_POST['opis'];
  37. $cel_delegacji = $_POST['cel_delegacji'];
  38. $transport = $_POST['transport'];
  39. $czas_trwania_delegacji = $_POST['czas_trwania_delegacji'];
  40. $krajowa_czy_zagraniczna = $_POST['krajowa_czy_zagraniczna'];
  41. //warunek do wykonania zapytania
  42. if ($imie or $nazwisko or $miejsce or $data or $telefon or $cel_delegacji or $transport or $czas_trwania_delegacji or $krajowa_czy_zagraniczna){
  43. //echo("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id2';");
  44. //exit;
  45. $wynik = mysql_query("UPDATE spotkanie SET imie='$imie', nazwisko='$nazwisko', miejsce='$miejsce', data='$data', telefon='$telefon', opis='$opis', cel_delegacji='$cel_delegacji', transport='$transport', czas_trwania_delegacji='$czas_trwania_delegacji',krajowa_czy_zagraniczna='$krajowa_czy_zagraniczna' WHERE id = '$id2';");
  46. if($wynik) echo '<br>Edytowano rekord<br>';
  47. else echo '<br>Blad podczas edytowania<br>';
  48. }
  49. ?>
  50. <a href="http://localhost/php1/edytowanie.php"><br>Powrot</a>
  51. <a href="http://localhost/php1/weryfikacja.php"><br>Powrot do delegacji</a>
  52. </center>
  53. </body>
  54. </html>
Turson
http://www.php.net/mysql_query
Cytat
Warning

This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

mysqli_query()
PDO::query()
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.