Ahoj,
mám soubor, který vypisude data z tabulky. Bez problémů. Také načítá pole id (integer, autoincrement) do proměnné $poradi = $data[0]; a zobrazuje odkaz na soubor smazat. php
echo "<A HREF='smazat.php?poradi=$poradi'>Smazat</A>"
Potud vše funguje, když najedu myší na odkazy "smazat", které se vypisují ke každému záznamu, zobrazí se správně www.neco.cz/smazat.php?poradi=nějakéid
Potom mám ale soubor smazat, kde bych chtěl zobrazit vybraný záznam a ten se mu již nezobrazuje. Vypadá takhle:
$poradi=$_POST['poradi'];
@$vysledek = mysql_db_query("svi",
"SELECT * FROM aktuality WHERE id = '$poradi' ");
Normálně se zobrazí tlačítka pro potvrzení výmazu, ale záznam ne.
Nenapadá někoho, v čem dělám botu?
Díky moc!
pokud něco pošleš jako smazat.php?poradi=id, tak nemůžeš čekat, že se ti to objeví jako post parametr. To, co je za otazníkem je GET parametr. Takže pokud si nejsi jist použij $_REQUEST, stejně jak používáš post. Ten v sobě sdružuje post a get parametry.
To by myslím mohlo pomoct.
No, částečně. Asi se v tom dost motám.
Mám nějaký index.php, ve kterém na začátku definuju $poradi=$_REQUEST['poradi'];
udělám sql dostaz a načtu údaje do proměnné
$poradi = $data[0];
To funguje.
Potom v souboru smazat načtu zase
$poradi=$_REQUEST['poradi'];
a udělám sql
SELECT * FROM tabulka WHERE id = '$poradi'
a vybraný záznam se zobrazí. Což je pokrok.
Mám definovaný formulář s tlačítkem pro smazání
FORM ACTION=delete.php method="get"
INPUT TYPE="submit" VALUE="Vymazat"
Následuje ale soubor ten delete.php, kde zase stejným způsobem načtu proměnnou $poradi a udělám sql dotaz
DELETE FROM tabulka WHERE id = '$poradi'
a ten už nic neprovede. Zkoušel jsem dát i stejný select jako v předchozím souboru, ale taky nic. Asi se tam nepředává ta proměnná, ale nejsem schopný zjistit proč.
Tak znovu škemrám o radu...
Díky!
1. Přestože to děláš v php, musíš si uvědomit, že výsledek je html stránka, která je zobrazena někde na klientově počítači. Z této stránky musíš dostat informace. Pokud je mi známo, existují dva způsoby a sice POST a GET.
GET funguje tak, že požadovanou proměnnou napíšeš ve tvaru nazev=hodnota za otazník nové volané stránky.
POST vyžaduje uvnitř stránky formulář a input se jménem. Jinak to z html nedostaneš. Tím, že v php přiřadíš nějakou proměnnou její obsah nedostaneš do html. To musíš udělat výše uvedenými způsoby. Obvykle se to dělá tak, že pokud chceš proměnné dostat na základě kliknutí na tlačítko formuláře, tak se do formuláře vloží <input type="hidden" name="nazev" value="$prirazena_promenna" />.
Pokud to chceš dostat přes kliknutí na odkaz, tak nezbývá než:
<a href="klik.php?nazev=hodnota">sem klikni</a>
Ještě se dají hodnoty předávat přes cookie a sessions, ale to je jiná kapitola a na popisované účely, řekl bych, nevhodná.
Díky za rady!
Já u toho seděl včera až do noci a nakonec jsem se k tomu co píšeš, dopracoval.
Snad poslední na čem jsem se zaseknul je tohle:
$text=$_POST['text'];
$poradi=$_POST['poradi'];
@$vysledek = mysql_db_query("svi",
"UPDATE aktuality SET text = '$text' WHERE id = '$poradi' ");
if (!$vysledek):
echo $_POST['poradi'];
echo $_POST['text'];
echo "Někde se stala chyba!";
break;
endif;
Pokud se dotaz neprovede, vypíšou se proměnné a chybová hláška - to funguje, takže se proměnné předávají. Ale když zkusím dotaz bez proměnných, s pevnými hodnotami, tak funguje taky.
Ehm, co tam ještě je špatně?
Tak snad abych se omluvil za pitomý dotaz. Zapomněl jsem se připojit k db...
WHERE id = '$poradi' a toto funguje? id je int ne?
IMHO by to mělo fungovat i bez apostrofů, když je id int.
WHERE id = $poradi