Autor Zpráva
Sanksas
Profil *
Zdravím, potřeboval bych od Vás pomoci. Jsem v PHP začátečník a učím se způsobem, že mám věci, které chci udělat, tak hledám návody, v nichž jsou hotové skripty, ale podrobně vysvětleny. Skripty si upravím a řádně zjistím proč to tak je a tak dále. Ovšem mám problém ... Začal jsem v rámci mého učení dělat web na zápis úkolů. Mám administraci, kde se dají zapisovat úkoly, upravovat, mazat a další administrační věci. Jenže můj skript na UPDATE dat nefunguje. Když chci aktualizovat jednotlivé položky, aktualizují se mi všechny. Zkusil jsem přidat parametr " limit 1 ", jenže to zas upravovalo jen ten první řádek. Zde je kód
<? 
//připojení k db 
mysql_connect("localhost", "***", "***"); 
mysql_select_db("ukoly"); 

//skript pro změnu obsahu db dáme před výpis, kdybychom ho dali až za výpis, data by se
//vypsala, a až poté změnila, takže by to bylo na nic. 

//pokud je zmáčknuto tlačítko "uprav" 
if (isset($_POST['uprav'])) 
   {  
   $Dokdy=$_POST['Dokdy']; 
   //přidáme lomítka, aby nám tam někdo nepropašoval kus php kodu a nedělalo  
//to bordel v databázi 
   $Predmet=addslashes($_POST['Predmet']); 
   $Info=addslashes($_POST['Info']);
   $Datum=addslashes($_POST['Datum']); 
   mysql_query("UPDATE ukoly SET Dokdy='$Dokdy',Predmet='$Predmet',Info='$Info',Datum='$Datum' WHERE Dokdy='$Dokdy'"); 
   } 


$data1=mysql_query("SELECT Dokdy,Predmet,Info,Datum FROM ukoly ORDER BY Dokdy ASC"); 
echo("<table>"); 
while ($data=mysql_fetch_array($data1)) 
         { 
         //dáme si data do formuláře 
         echo("<form method='POST'><tr>"); 
         //ID dáme ještě do hidden pole, abychom mohli podle něčeho mazat
         echo("<td> 
<input type='text' name='Dokdy' value='".$data['Dokdy']."'></td>");  
         echo("<td> 
<input type='text' name='Predmet' value='".$data['Predmet']."'></td>"); 
         echo("<td> 
<input type='text' name='Info' value='".$data['Info']."'></td>");
echo("<td> 
<input type='text' name='Datum' value='".$data['Datum']."'></td>"); 
         //a nemůžeme zapomenout an tlačítko, které bude formulář odesílat;) 
         echo("<td><input type='submit' name='uprav' value='Uprav'></td>"); 
         echo("</tr></form>"); 
         } 
echo("</table>"); 
?> 


Mimochodem, takhle se nebudu učit dlouho, v říjnu přijde kniha. (Resp. je vyprodána a bude až v říjnu, pak si ji objednám)
PS: Tento kód je upraven z tutorialu na této stránce.
Předem Vám všem děkuji, Sanksas.
smonkey
Profil
Zdravím,
podmínku WHERE tam máte. Napadá mě jen, zda-li záznamy v DB nemají totožnou hodnotu "dokdy".
Sanksas
Profil *
No, podmínka Dokdy může být nějaký den stejná. Dobře, pomůže tedy, když zavedu sloupec ID, který se automaticky vyplní (vždy ID + 1) a dám ho do WHERE?
Tori
Profil
Sanksas:
automaticky vyplní (vždy ID + 1)
= nastavte tomu sloupci AUTO_INCREMENT. Při insertu mu pak nemusíte zadávat hodnotu, sama se doplní.
Sanksas
Profil *
Už je to sice offtopic, ale ve script při zápisu úkolů, jsem kvůli filtraci na předměty musel upravit. Předmět si zapisovatel nezapisuje sám, ale bere ho ze selectu. Ovšem ten problém je, že políčka v <input> se data odešlou, ale data ze <select> se neodešlou .. googloval jsem asi hodinku a půl, pak jsem na to koukal taky dost dlouho a hledal chybu. Bohužel nenašel. Předem děkuji za radu, Sanksas.

//pokud je zmáčknuto tlačítko Přidat 
if (isset($_POST['pridat'])) 
   { 
  //ošetříme data 
   $datum=addslashes($_POST['datum']); 
   $predmet=addslashes($_POST['predmet']); 
   $info=addslashes($_POST['info']);
   $datum2=addslashes($_POST['datum2']);  
    
   mysql_query("INSERT INTO ukoly (Dokdy,Predmet,Info,Datum) VALUES 
   ('$datum','$predmet','$info','$datum2')"); 
   } 


//výpis dat do formuláře 

echo("<table><form method='post'>");
echo("<tr>");
echo("<td>Úkol je na <input type='text' name='datum' placeholder='Na kdy je úkol'></td>");
echo("<tr>");
echo("<td>");
echo("Předmět ");
echo('<select name="předmět" size="1">
<option value="aj">Anglický jazyk
<option value="čj">Český jazyk
</select>');
echo("</td>");
echo("<tr>");
echo("<td>Úkol (informace) <input type='text' name='info' placeholder='Úkol (informace)'></td>");
echo("<tr>");
echo("<td>Úkol je ze dne <input type='text' name='datum2' placeholder='Ze kdy je úkol'></td>");
echo("<tr>"); 
echo("<td><input type='submit' name='pridat' value='Přidat'></td>"); 
echo("</tr>"); 
echo("</form></table>"); 
?> 
Tori
Profil
<select name="předmět" size="1">
vs.
$predmet=addslashes($_POST['predmet']);

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