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>&nbsp; Uprav poznámku &nbsp;</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>&nbsp; Zobrazenie poznámky &nbsp;</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>&nbsp; Zobraz poznámku &nbsp;</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>&nbsp; Uprav poznámku &nbsp;</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
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
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
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
s úvodzovkami a apostrofmi mi to vyhadzovalo chybu.. action sa má previesť na samotnej stránke..
Keeehi
Profil
Duchaplny:
Takto to je ale konstanta PHP_SELF, kterou však nikde nedefinuješ.
Duchaplny
Profil
a ako sa to dá napraviť, keď úvodzovky a apostrofy vyhadzujú chybu ?
Taps
Profil
Duchaplny:
a ako sa to dá napraviť, keď úvodzovky a apostrofy vyhadzujú chybu ?
a je takový problém chybu opravit ?
Keeehi
Profil
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
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"]?>"
keď to ide aj bez toho.
panther
Profil
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0