Autor Zpráva
kuzmic
Profil *
Dobrý večer,
chtěl bych Vás poprosit, jak jen to půjde, jestli by mi někdo neporadil jak docílit pomocí formuláře updatování konkrétního záznamu v databázi. Mám kod:

<html>
<head>
<title>UPDATE</title>
</head>

<body>
<?php
include "connect.php";

$nazev_pojistovny = $_POST['nazev'];
$kod_pojistovny = $_POST['kod'];

if($_POST['update'])
{
mysql_query("UPDATE pojistovna SET nazev_pojistovny = '".$nazev_pojistovny."', kod_pojistovny = '".$kod_pojistovny."'");

}

$sql = mysql_query("SELECT * FROM pojistovna")or die(mysql_error());

while($row = mysql_fetch_array($sql))
{
  
  echo "<form method='post'>";
  echo "<input type='text' name='nazev' value=".$row['nazev_pojistovny'].">";
  echo "<input type='text' name='kod' value=".$row['kod_pojistovny'].">";
  echo "<input type='submit' name='update'>";
  echo "</form>";

}
?>
</body>
</html>





Bohužel se mi po editování například první položky, přepíšou na stejnou hodnotu všechny ostatní. Nevíte jak docílit toho, aby se u každého řádku měnili hodnoty samostatně?předem moc děkuji.
Medvídek
Profil
kuzmic:
Chybi ti tam napsat jeste ktera polozka se ma upravovat, takto se upraví všechny. Nejlépe je vytvořit sloupec s názvem třeba id a dát mu auto_increment. Při upravování pak budeš mít:

$nazev_pojistovny = $_POST['nazev'];
$kod_pojistovny = $_POST['kod'];
$id_pojistovny=$_POST['kod'];

mysql_query("UPDATE pojistovna SET nazev_pojistovny = '".$nazev_pojistovny."', kod_pojistovny = '".$kod_pojistovny."' WHERE id = '".$id_pojistovny."' ");
kuzmic
Profil *
Provedl jsem změny jak jste napsal, vytvořil jsem si ještě sloupec v databázi s názvem id_pojistovny a nastavil mu auto_increment, akorát že s tímto nastavením, se už hodnoty neupdatují vůbec, jen se to refrešne a načtou se tam hodnoty co jsou v databázi původně před upravou:-/. Nevíte kde je chyba?


<html>
<head>
<title>UPDATE</title>
</head>

<body>
<?php
include "connect.php";

$nazev_pojistovny = $_POST['nazev'];
$kod_pojistovny = $_POST['kod'];
$id_pojistovny=$_POST['kod'];

if($_POST['update'])
{
mysql_query("UPDATE pojistovna SET nazev_pojistovny = '".$nazev_pojistovny."', kod_pojistovny = '".$kod_pojistovny."' WHERE id_pojistovny = '".$id_pojistovny."' ");

}

$sql = mysql_query("SELECT * FROM pojistovna")or die(mysql_error());

while($row = mysql_fetch_array($sql))
{
  
  echo "<form method='post'>";
  echo "<input type='text' name='nazev' value=".$row['nazev_pojistovny'].">";
  echo "<input type='text' name='kod' value=".$row['kod_pojistovny'].">";
  echo "<input type='submit' name='update'>";
  echo "</form>";

}
?>
</body>
</html>




ještě přidám jak vypadá položka v databázi

CREATE TABLE IF NOT EXISTS `pojistovna` (
  `id_pojistovny` int(10) NOT NULL AUTO_INCREMENT,
  `nazev_pojistovny` varchar(30) CHARACTER SET utf8 COLLATE utf8_czech_ci DEFAULT NULL,
  `kod_pojistovny` varchar(30) CHARACTER SET utf8 COLLATE utf8_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id_pojistovny`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
Kacko
Profil
kuzmic:
"UPDATE pojistovna SET nazev_pojistovny = '".$nazev_pojistovny."', kod_pojistovny = '".$kod_pojistovny."' WHERE kod_pojistovny = '".$kod_pojistovny."' "


Pokud je kod_pojistovny unikatni(mel by byt), je id_pojistovny zbytecne.
Medvídek
Profil
kuzmic:
To bude asi tímto: $id_pojistovny=$_POST['kod'];

Ale pokud máte kód pojišťovny unikátní a nikde se neopakuje, tak to lze řešit jak psal Kacko, ale v každym případě bych mu nastavil unique.
kuzmic
Profil *
neporadili by jste prosím jak na ten unique?zkoušel jsem to jako přidat k proměnné $_POST['kod'], ale nepomohlo to:-(. V obou případech jak přes kod_lekarny tak před id_lekarny to pořád neupdatuje ani jednu položku, a načte to hodnotu z databáze co tam už je:-(.
retro
Profil *
kuzmic:
while($row = mysql_fetch_array($sql)) 
echo "<form method='post'>";
echo "<input type='text' name='nazev' value=".$row['nazev_pojistovny'].">";
echo "<input type='text' name='kod' value=".$row['kod_pojistovny'].">";
echo "<input type='submit' name='update'>";
...


Přidejte skryté políčko s id pojistovny, zhruba nejak takhle
echo "<input type='hidden' name='id' value=".$row['id_pojistovny'].">";

a
$id_pojistovny=$_POST['kod'];

přepište na
$id_pojistovny=$_POST['id'];
kuzmic
Profil *
Všem moc děkuju, tohle bylo ono. Mějte se

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: