Autor Zpráva
XXyyXX
Profil *
Mám vytvořený formulář, do kterého pomocí cyklu vypisuju všechny záznamy. Problém nastane při jejich "hromadné aktualizaci". Zkoušel jsem to pomocí dalšího cyklu, ale bez výsledku, přikládám kód:



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Content-Language" content="cs">
<style type="text/css">
.pole {background-color: #CCFFCC; font-family: Tahoma; font-size: 11px; vertical-align: middle;
text-align: left; height: 20px;}
</style>
</head>
<body>
<div align="center"><h1>Editace zobrazených záznamů</h1></div>
<table border="0" align="center">
<FORM action="<? echo $PHP_SELF; ?>">

<?
$connection1 = MySQL_Connect("localhost", "root", "root");
$connection2 = MySQL_Select_DB("test");
MySQL_Query("SET NAMES 'cp1250';");
$sql1 = MySQL_Query("SELECT * FROM tabulka");

$i = 0;
while ($sql = MySQL_Fetch_Array($sql1)) {
?>

<tr height="30px">
<td width="30%" align="center"><input type="text" name="ID" class="pole" value="<? echo $sql["ID"]; ?>"></td>
<td width="30%" align="center"><b><input type="text" name="jmeno" class="pole" value="<? echo $sql["jmeno"]; ?>"></b></td>
<td width="30%" align="center"><b><input type="text" name="prijmeni" class="pole" value="<? echo $sql["prijmeni"]; ?>"></b></td>
</tr>

<?
$i++;
}
?>

<div align="center"><input type="submit" value="Uložit změny" class="pole"></div><br />
</FORM>
<?
$pocet = MySQL_Num_Rows($sql1);
for ($i = 0; $i <= $pocet; $i++) {
$update1 = "UPDATE tabulka SET ID= '".$ID."', jmeno = '".$jmeno."', prijmeni = '".$prijmeni." WHERE ID = ".$sql["ID"]."";
MySQL_Query("SET NAMES 'cp1250';");
$update2 = MySQL_Query($update1);
}
?>

</body>
</html>



Předem všem díky za rady a názory...
wnc
Profil
no nejsi daleko od cíle... ale

1) Oddělil bych od sebe část pro výpis tabulky a část pro update. Klidně i do jiného souboru!

2) Inputy musí být pojmenované jako pole to znamená takhle:
<input type="text" name="jmeno[]" class="pole" ... 


3) no a pak můžeš v té části pro udate pole ziterovat pomocí foreach www.php.net/foreach

hezkou zábavu
Kajman_
Profil *
Přepisujete si stále dokola ty samé hodnoty ve formuláři. Zkuste pro všechny tři hodnoty něco takového v html
name="ID[]"

A při update použít
$_REQUEST['ID'][$i]
XXyyXX
Profil *
Díky za rady, zkusím to....
XXyyXX
Profil *
Toto jsem zkusil, ale bez výsledku, je tam někde chyba ?

<tr height="30px">
<td width="30%" align="center"><input type="text" name="ID[]" class="pole" value="<? echo $sql["ID"]; ?>"></td>
<td width="30%" align="center"><b><input type="text" name="jmeno[]" class="pole" value="<? echo $sql["jmeno"]; ?>"></b></td>
<td width="30%" align="center"><b><input type="text" name="prijmeni[]" class="pole" value="<? echo $sql["prijmeni"]; ?>"></b></td>
</tr>

<?
$i++;
}
?>

<div align="center"><input type="submit" value="Uložit změny" class="pole"></div><br />
</FORM>
<?
$pocet = MySQL_Num_Rows($sql1);
for ($i = 0; $i <= $pocet; $i++) {
$update1 = "UPDATE tabulka SET ID= '".$_REQUEST['ID'][$i]."', jmeno = '".$_REQUEST['jmeno'][$i]."',
prijmeni = '".$$_REQUEST['prijmeni'][$i]." WHERE ID = ".$sql["ID"]."";
MySQL_Query("SET NAMES 'cp1250';");
$update2 = MySQL_Query($update1);
}
?>
Kajman_
Profil *
Zkuste si vypsat update1 pro ladění. Asi zjistíte, že tam nemáte, co chcete, protože budete mít stále stejnou podmínku where id= a překlep u prijmeni.

A zkuste použit foreach, jak radíwnc.

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:

0