[PHP][MYSQL] problem z update

0

Posiadam plik odbiorca.php w którym wyświetlam wszystkie rekordy z tabeli Odbiorca.
wygląda to mniej więcej tak:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<textarea name="query" cols="50" rows="1">Mysql Query Here</textarea><br />
<input type="submit" name="submit" value="Submit Your Query" />
</form>
<?php

$con = mysql_connect("localhost","test","test");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("testy", $con);

$result = mysql_query("SELECT * FROM Odbiorca where Nazwa like '%".$_POST["query"]."%'");


echo "<table border='0'>
<tr>
<th>Lp</th>
<th>Nazwa</th>
<th>Adres</th>
<th>Telefon</th>
<th>Email</th>
<th>NIP</th>
<th>info</th>
</tr>";
$i=0;
while($row = mysql_fetch_array($result))
  {
   $i++;
   if($i%2 == 1)
   {
  echo "<tr>";
  echo "<td>" . $i . "</td>";
  echo "<td>" . $row['Nazwa'] . "</td>";
  echo "<td>" . $row['Adres'] . "</td>";
  echo "<td>" . $row['Telefon'] . "</td>";
  echo "<td>" . $row['Email'] . "</td>";
  echo "<td>" . $row['NIP'] . "</td>";
  echo "<td>" . $row['info'] . "</td>";
  echo "<td>" ."<a border='0' href='usun.php?id=" . $row['ID_Odbiorca'] . "'><img border='0' src='../img/del.jpg'/>". "</td>";  
  echo "<td>" ."<a border='0' href='edytuj.php?cmd=edit&id=$id" . $row['ID_Odbiorca'] . "'><img border='0' src='../img/edit.jpg'/>". "</td>";  
  echo "</tr>";
   }
   else
   {
  echo "<tr>";
  echo "<td>" . $i . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['Nazwa'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['Adres'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['Telefon'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['Email'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['NIP'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" . $row['info'] . "</td>";
  echo "<td bgcolor='#E6E6E6'>" ."<a href='usun.php?id=" . $row['ID_Odbiorca'] . "'><img border='0' src='../img/del.jpg'/>". "</td>";  
  echo "<td>" ."<a border='0' href='edytuj.php?cmd=edit&id=$id" . $row['ID_Odbiorca'] . "'><img border='0' src='../img/edit.jpg'/>". "</td>";  
  echo "</tr>";
   }
  }
echo "</table>";

mysql_close($con);
?>
<a href="dodaj.php"><img border="0" src="../img/new.jpg" alt="Dodaj nowy"></a>

</body>
</html>

W pliku edytuj.php powinienem moc wyświetlić dany rekord i go edytować.. wszystko jest ok plik edytuj mi go wczytuje ale nie zapisuje żadnych zmian po kliknięciu na submit ($id się chyba zeruje bo nie moglem jej wyświetlić). Co może być źle?

<?php 
//connect to mysql
//change user and password to your mySQL name and password
$con = mysql_connect("localhost","test","test");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  else
  {
  echo 'yeee';
  }

mysql_select_db("testy", $con); 



if($_GET["cmd"]=="edit" || $_POST["cmd"]=="edit")
{
   if (!isset($_POST["submit"]))
   {
      $id = $_GET["id"];
      $sql = "SELECT * FROM Odbiorca WHERE ID_Odbiorca=$id";
      $result = mysql_query($sql);        
      $myrow = mysql_fetch_array($result);
      ?>

      <form action="edytuj.php" method="post">
<input type=hidden name="id_odbiorca" value="<?php echo $myrow["ID_Odbiorca"] ?>">
<table>
	<tr>
		<td align="right">Nazwa:</td>
		<td><input type="text" name="nazwa" value="<?php echo $myrow["Nazwa"] ?>"/></td>
	</tr>
	<tr>
		<td align="right">Adres:</td>
		<td><input type="text" name="adres" value="<?php echo $myrow["Adres"] ?>"/></td>
	</tr>
	<tr>
		<td align="right">Telefon:</td>
		<td><input type="text" name="telefon" value="<?php echo $myrow["Telefon"] ?>"/></td>
	</tr>
	<tr>
		<td align="right">Email:</td>
		<td><input type="text" name="email" value="<?php echo $myrow["Email"] ?>"/></td>
	</tr>
	<tr>
		<td align="right">NIP:</td>
		<td><input type="text" name="nip" value="<?php echo $myrow["NIP"] ?>"/></td>
	</tr>
	<tr>
		<td align="right">info:</td>
		<td><input type="text" name="info" value="<?php echo $myrow["info"] ?>"/></td>
	</tr>
</table>
<input type="hidden" name="cmd" value="edit">
<input type="submit" name="submit" value="submit">
</form>
   
<?php 
	} 
   if ($_POST[submit])
   {
 $sql = "UPDATE Odbiorca SET Nazwa = '".$_POST["nazwa"]."', Adres = '".$_POST["adres"]."', Telefon = '".$_POST["telefon"]."', Email = '".$_POST["email"]."', NIP = '".$_POST["nip"]."', info = '".$_POST["info"]."' WHERE ID_Odbiorca=$id";
	

      $result = mysql_query($sql);
      echo "Thank you! Information updated.  ";
	    
	}
}
mysql_close($con);
?>
0

A skąd masz $id w obsłudze zapisu informacji?

0

pobierane z adresu:
$id = $_GET["id"];

a tworzone tu:
echo "<td>" ."<a border='0' href='edytuj.php?cmd=edit&id=$id"

wszystko jest ok bo pobiera i wyswietla mi to w polach tekstowych ale pozniej ginie i nie chce zapisac a jak probuje $id wyswietlic to go nie widzi :S

0

to przyjrzyj sie teraz temu:
href='edytuj.php?cmd=edit&id=$id" . $row['ID_Odbiorca'] . "'

zakladajac ze $row['ID_Odbiorca'] = 4 zostanie taki link utworzony href='edytuj.php?cmd=edit&id=$id4'

dla porownania usun wyglada tak u Ciebie:
href='usun.php?id=" . $row['ID_Odbiorca'] . "'

0

Spójrz jeszcze raz na ten kod, ale dobrze sformatowany. Nawet opiszę Ci flow w momencie zapisu zmian.

<?php

// 1. poczatek - wiadomo
$con = mysql_connect("localhost", "test", "test");
if (!$con) {
	die('Could not connect: ' . mysql_error());
} else {
	echo 'yeee';
}

mysql_select_db("testy", $con);

// 2. pierwszy wybor... po edycji $_POST['cmd'] == 'edit', wiec wchodzimy do środka
if ($_GET["cmd"] == "edit" || $_POST["cmd"] == "edit") {
        //3. po edycji mamy ustawiony $_POST['submit'] wiec nie wchodzimy do środka, skok do pkt 4.
	if (!isset ($_POST["submit"])) {
                // Ten kod się nie wykona !
		$id = $_GET["id"];
		$sql = "SELECT * FROM Odbiorca WHERE ID_Odbiorca=$id";
		$result = mysql_query($sql);
		$myrow = mysql_fetch_array($result);

                /// bla bla formularz wyciety
	}

        // 4. mamy ustawiony $_POST['submit'], wiec wykonujemy kod wewnatrz
	if ($_POST[submit]) {

                // 5. Tworzymy zapytanie
		$sql = "UPDATE Odbiorca SET Nazwa = '" . $_POST["nazwa"] . "', Adres = '" . $_POST["adres"] . "', Telefon = '" . $_POST["telefon"] . "', Email = '" . $_POST["email"] . "', NIP = '" . $_POST["nip"] . "', info = '" . $_POST["info"] . "' WHERE ID_Odbiorca=$id";
                // 6. Rezultat jest prosty... mamy WHERE ID_Odbiorca =; na końcu zapytania
		$result = mysql_query($sql);
                // 7. Wykonanie zapytania
		echo "Thank you! Information updated.  ";

	}
}
// 8.
mysql_close($con);
?>

Jak widzisz, nigdzie nie przypisujesz $id, więc nie mów że to robisz. Zmienna $id istnieje tylko gdy wchodzisz do edycji, nie podczas zapisywania danych.

Pominę już oczywiste kwestie związane z bezpieczeństwem tego skryptu.

0

prosze o wyrozumialosc.. to jest efekt 4 dni siedzenia przy php pierwszy raz w zyciu i oczywiscie pierwsza aplikacja :)

hmm fakt... czyli po kliknieciu w pasku adresu jest adres ..edytuj.php bez ?id=x..

jak efektywnie przekazac ten parametr zeby po kliknieciu zostal zapamietany?

0

Ale przecież przekazujesz ten parametr w ukrytym polu formularza. Problem w tym, że nigdzie go nie odczytujesz.

0

fakt... wszystko pieknie dziala :) a ja juz takie kombinacje tutaj wytwarzalem .. ;)
dziekuje za podpowiedz i dzialam dalej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1