Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
Zdravím,
snažím sa vytvoriť systém na editáciu riadkov v MySQL pomocou formulára a PHP. Vytvoril som 2 kódy s rovnakým princípom - vyberiem ID poznámky, následne mi ju zobrazí s možnosťou editácie. V tom prvom mi nezobrazí žiadne údaje. V tom druhom mi ich zobrazí, ale atribút action "<form method=\"post\" action=\"".$_SERVER[PHP_SELF]."\">", ma presúva na stránku /main.php miesto toho, aby sa vykonal priamo na stránke. Úprimne by som radšej doriešil prvý kód, už len kvôli tým lomkám. Tak nejak asi tuším, že chyba bude s tým selectom, ale neviem si rady, bo pri každom pokuse mi to buď hodí chybu alebo nezobrazí data z MySQL. Tiež by som do budúcna rád vedel, prečo ma v druhom kóde action=\"".$_SERVER[PHP_SELF]."\" odkazuje na /main.php. Prvý kód: <?if (empty($_POST["zobraz"])):?> <p> <form method="post" action="<?$_SERVER["PHP_SELF"]?>"> <fieldset> <legend> Uprav poznámku </legend> <div class="form-text"> ID: <select name="id"> </p> <? $vysledok=mysql_query("select id, subor, vec from notes", $GLOBALS["result"]); while ($zaznam=mysql_fetch_array($vysledok)): echo "<option> ".$zaznam["id"]." </option>\n"; endwhile; ?> </select> <p> <input type="submit" name="zobraz" value="Zobraz poznámku" /> </p> </div> </fieldset> </form> <?endif;?> <? // <!-- ### NAČÍTANIE POZNÁMKY Z DATABÁZY ### --> if (!empty($_POST["zobraz"])):?> <? $vysledok=mysql_query("SELECT id, subor, vec FROM notes WHERE id=$_POST[id]", $GLOBALS["result"]); $zaznam=mysql_fetch_array($vysledok); ?> <p> <form method="post" action="<?$_SERVER["PHP_SELF"]?>"> <fieldset> <legend> Zobrazenie poznámky </legend> <div class="form-text"> ID: <?$zaznam[id]?> </p> <p> Súbor: </p> <input name="subor" value="<?$zaznam[subor]?>" size="35" /> <p> Vec: </p> <textarea cols="83" rows="4" name="vec"><?$zaznam[vec]?></textarea> <p> <input type="submit" name="uprav" value="Uprav poznámku" /> </p> </div> </fieldset> </form> <?endif;?> Druhý kód: <?if (empty($_POST["zobraz"])):?> <p> <form method="post" action="<?$_SERVER["PHP_SELF"]?>"> <fieldset> <legend> Zobraz poznámku </legend> <div class="form-text"> ID: <select name="id"> </p> <? $vysledok=mysql_query("select id, subor, vec from notes", $GLOBALS["result"]); while ($zaznam=mysql_fetch_array($vysledok)): echo "<option> ".$zaznam["id"]." </option>\n"; endwhile; ?> </select> <p> <input type="submit" name="zobraz" value="Zobraz poznámku" /> </p> </div> </fieldset> </form> <?endif;?> <? // <!-- ### NAČÍTANIE POZNÁMKY Z DATABÁZY ### --> if (!empty($_POST["zobraz"])) {$vysledok=mysql_query("SELECT id, subor, vec FROM notes WHERE id=$_POST[id]", $GLOBALS["result"]); $zaznam=mysql_fetch_array($vysledok); echo" <p> <form method=\"post\" action=\"".$_SERVER[PHP_SELF]."\"> <fieldset> <legend> Uprav poznámku </legend> <div class=\"form-text\"> ID: $zaznam[id] </p> <p> Súbor: </p> <input name=\"subor\" value=\"$zaznam[subor]\" size=\"35\" /> <p> Vec: </p> <textarea cols=\"83\" rows=\"4\" name=\"vec\">$zaznam[vec]</textarea> <p> <input type=\"submit\" name=\"uprav\" value=\"Uprav poznámku\" /> </p> </div> </fieldset> </form>";} ?> |
||
Taps Profil |
#2 · Zasláno: 4. 2. 2012, 12:00:41
Duchaplny:
a co ti vypisuje mysql_error ? $idecko=intval($_POST['id']); $vysledok=mysql_query("SELECT id, subor, vec FROM notes WHERE id='$id'", $GLOBALS["result"]) or die (mysql_error()); |
||
Duchaplny Profil |
ID sa prenesie v oboch prípadoch, takže mysql_error nevypíše nič..
|
||
Duchaplny Profil |
#4 · Zasláno: 4. 2. 2012, 13:38:55
už viem v čom bol problém, chýba mi echo v tých záznamoch : /
miesto <?$zaznam[id]?> má byť <?echo $zaznam[id];?>
vôbec mi to nedocvaklo, až teraz, keď som na to nechápavo pozeral, že čo to má byť. Tak aspoň jedna vec sa vyriešila. Ak náhodou niekto vie, prečo ma v druhom prípade action=\"".$_SERVER[PHP_SELF]."\" odkazuje na /main.php, budem mu veľmi vďačný za vysvetlenie, v čom je vlastne chyba. |
||
Keeehi Profil |
#5 · Zasláno: 4. 2. 2012, 14:16:26
Duchaplny:
Chybí ti kolem PHP_SELF uvozovky nebo apostrofy. Ale pokud ten action má mířit sám na sebe, můžeš ho celý úplně vynechat. |
||
Duchaplny Profil |
#6 · Zasláno: 4. 2. 2012, 19:35:23
s úvodzovkami a apostrofmi mi to vyhadzovalo chybu.. action sa má previesť na samotnej stránke..
|
||
Keeehi Profil |
#7 · Zasláno: 4. 2. 2012, 19:38:04
Duchaplny:
Takto to je ale konstanta PHP_SELF, kterou však nikde nedefinuješ. |
||
Duchaplny Profil |
#8 · Zasláno: 4. 2. 2012, 19:55:55
a ako sa to dá napraviť, keď úvodzovky a apostrofy vyhadzujú chybu ?
|
||
Taps Profil |
#9 · Zasláno: 4. 2. 2012, 21:13:01
Duchaplny:
„a ako sa to dá napraviť, keď úvodzovky a apostrofy vyhadzujú chybu ?“ a je takový problém chybu opravit ? |
||
Keeehi Profil |
#10 · Zasláno: 4. 2. 2012, 21:52:25
Takto by to mělo být správně:
<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\"> Ovšem toto se mi zdá mnohem jednodušší a funguje to stejně: <form method=\"post\"> v obou případech jde o řádek 30 |
||
Duchaplny Profil |
#11 · Zasláno: 5. 2. 2012, 14:23:43
Keeehi:
Už som to celé prerobil, ale som si skoro na 100% istý, že prvý zápis vyhadzoval chybu, čosi s úvodzovkami. Metóda 2 funguje a to ma trochu zaráža, prečo na linuxsofte propagovali používanie action="<?$_SERVER["PHP_SELF"]?>" |
||
panther Profil |
#12 · Zasláno: 5. 2. 2012, 14:39:59
Duchaplny:
„prečo na linuxsofte propagovali používanie“ a propagovali to ještě s echem , že? Takhle by to samozřejmě nefungovalo, resp. nevypsal by se obsah té proměnné.
Na spoustě místech se propagují různé (pochybné) postupy. Ne všemu se dá věřit. |
||
Duchaplny Profil |
#13 · Zasláno: 5. 2. 2012, 23:13:43
panther:
áno, s echom , viz. -> www.linuxsoft.cz/article.php?id_article=274.
PHP a MySQL som sa učil z linuxsoftu, takže sa mi ťažko súdi, čo je pochybné a čo nie je. |
||
Časová prodleva: 12 let
|
0