Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][MYSQL] Problem z $_POST
Forum PHP.pl > Forum > Przedszkole
Cadi
Witam!

Mam taki fragment strony
  1. <form action=edit.php method=post>
  2.       <input type=submit value="Edytuj">
  3.       <input type=text name=f1>
  4.      
  5. Edytowac pole
  6.       <select name="pole">
  7.             <option value="nazwisko">Nazwisko
  8.  
  9.             <option value="Imie">Imie
  10.  
  11.       </select>
  12.       na <input type=text name=f3>
  13.  
  14. </form>


I plik edit.php

  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4.   {
  5.   die('Nie mozna polaczyc: ' . mysql_error());
  6.   }
  7.  
  8. mysql_select_db("baza", $con);
  9.  
  10.  
  11. $sql="UPDATE znajomi SET " . $_POST['pole'] . " = '" . $_POST['ud_date'] . "' WHERE id=" . $_POST['ud_id'] . ";";
  12.  
  13. print $sql;
  14.  
  15. if (!mysql_query($sql,$con))
  16.   {
  17.   die('Blad: ' . mysql_error());
  18.   }
  19. echo "Rekord zmieniony";
  20.  
  21. ?>
  22.  
  23. <form action=index.php>
  24.       <input type=submit value="Powrot">
  25. </form>


W wyniku uzyskanego kodu otrzymuję błędy:
Kod
<b>Notice</b>:  Undefined index:  pole in <b>C:\wamp\www\edit.php</b> on line <b>11</b>
  
   <b>Notice</b>:  Undefined index:  ud_date in <b>C:\wamp\www\edit.php</b> on line <b>11</b>
  
   <b>Notice</b>:  Undefined index:  ud_id in <b>C:\wamp\www\edit.php</b> on line <b>11</b>
   UPDATE znajomi SET = '' WHERE id=;Blad: You have an error in your SQL  syntax; check the manual that corresponds to your MySQL server version  for the right syntax to use near '= '' WHERE id=' at line 1


Czy ktoś wie, co takiego źle robię, że mi nie odczytuje danych przekazanych poprzez $_POST? Za wszelkie uwagi będę wdzięczna.

============================================================================
EDIT:
Okazało się, że rozwiązanie mojego problemu przyszło samo w momencie, gdy zmieniłam środowisko WAMP na Vertigo. Wszystkim osobom aktywnym w temacie dziękuję za pomoc.
EarthCitizen
Kod
       <select name="pole">
             <option value="nazwisko">Nazwisko <!-- tutaj brakuje </option> -->
             <option value="Imie">Imie <!-- tutaj brakuje </option> -->
       </select>


$_POST['ud_date'] i $_POST['ud_id'] - gdzie masz pola do tych zmiennych w formularzu?

Popraw to i powinno być dobrze winksmiley.jpg
Cadi
Dziękuję za szybką odpowiedź! Niestety, mimo tych poprawek (przyznają, głupie błędy), problem istnieje nadal. Teraz wygląda to tak:
  1. <form action=edit.php method=post>
  2. <input type=submit value="Edytuj">
  3. <input type=text name=f1>
  4.  
  5. Edytowac pole
  6. <select name="pole">
  7. <option value="nazwisko">Nazwisko</option>
  8.  
  9. <option value="Imie">Imie</option>
  10.  
  11. </select>
  12. na <input type=text name=f3>
  13.  
  14. </form>


plik edit.php:
  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4.   {
  5.   die('Nie mozna polaczyc: ' . mysql_error());
  6.   }
  7.  
  8. mysql_select_db("baza", $con);
  9.  
  10.  
  11. $sql="UPDATE znajomi SET " . $_POST['pole'] . " = '" . $_POST['f3'] . "' WHERE id=" . $_POST['f1'] . ";";
  12.  
  13. print $sql;
  14.  
  15. if (!mysql_query($sql,$con))
  16.   {
  17.   echo "\n";
  18.   die("Blad: " . mysql_error());
  19.   }
  20. echo "Rekord usuniety";
  21.  
  22. ?>
  23.  
  24. <form action=index.php>
  25.       <input type=submit value="Powrot">
  26. </form>


Komunikat o błędzie:
Cytat
Notice: Undefined index: pole in C:\wamp\www\edit.php on line 11

Notice: Undefined index: f3 in C:\wamp\www\edit.php on line 11

Notice: Undefined index: f1 in C:\wamp\www\edit.php on line 11
UPDATE znajomi SET = '' WHERE id=; Blad: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '' WHERE id=' at line 1
kefirek
Zrób tak
  1. <?php
  2. if (isset($_POST['submit'])) {
  3.  
  4. $connection = @mysql_connect('localhost', 'root', 'haslo');
  5. $db = @mysql_select_db('test', $connection);
  6. $wynik = mysql_query("UPDATE znajomi SET ".$_POST['pole']."='".$_POST['f3']."' WHERE id='".$_POST['f1']."'");
  7.  
  8. if($wynik) {echo 'Rekord usuniety'; }
  9.  
  10. mysql_close($connection);
  11. } else {
  12. echo "<form action='".basename($_SERVER['PHP_SELF'])."' method=post>
  13. <input type=submit value=\"Edytuj\" name=\"submit\">
  14. <input type=text name=f1>
  15. Edytowac pole
  16. <select name=\"pole\">
  17. <option value=\"nazwisko\">Nazwisko</option>
  18. <option value=\"Imie\">Imie</option>
  19. </select>
  20. na <input type=text name=f3>
  21. </form>";
  22. }
  23. ?>
Cadi
Zrealizował się fragment kodu po else. Wygląda to następująco:
http://willow.iie.uz.zgora.pl/~i51036/fwf.JPG

O co w tym chodzi? sad.gif
wszerad
Może nie podałeś kodu dostępu do bazy danych? I dlatego warunek jest false/
Cadi
Identycznie mam w drugim w skrypcie z usuwaniem i działa:

  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4.  {
  5.  die('Nie mozna polaczyc: ' . mysql_error());
  6.  }
  7.  
  8. mysql_select_db("baza", $con);
  9.  
  10. $sql="DELETE FROM znajomi  WHERE ID = '$_POST[f2]'";
  11.  
  12. if (!mysql_query($sql,$con))
  13.  {
  14.  die('Blad: ' . mysql_error());
  15.  }
  16. echo "Rekord usuniety";
  17.  
  18. ?>
  19.  
  20. <form action=index.php>
  21.      <input type=submit value="Powrot">
  22. </form>


Jak inaczej mogłabym to napisać?
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.