Autor Zpráva
Péťanek
Profil *
Dobrý den,

mám takový formulář a do položky Menu bych chtěl nahrávat data z databáze.

<select id="nabidka">
      <option value="1">prvni volba</option>
      <option value="2">druha volba</option>
      <option value="3">třetí volba</option>
    </select>


jako třeba aby si mi hodnota a ten label načítal přimo z databáze.

stačí mi vytvořit funkci na tahání dat z databaze a fetch_assoc nebo je v tom nějaký zádrhel, který se musí programovat na 100 řádků :-)
panther
Profil
Péťanek:
mysql dotazem si vytáhni požadované hodnoty (předpokládám ID a nějaký nadpis, název kategorie).

Výsledek proženeš cyklem while(), do value dosadíš ID z dabatabáze, mezi <option> název kategorie.
Péťanek
Profil *
Takže žádný zádrhel? Kurňa to PHPčko se mi začíná líbit :-)
Díky Panther
panther
Profil
Péťanek:
Takže žádný zádrhel?
vůbec jsi se nemusel ptát, mohl jsi to zkusit. Kdyby nějaký zádrhel nastal, mohl´s ho, třeba i zde na diskusi, řešit.
Péťanek
Profil *
Tak, zádrhel nastal, teda néé zádrhel, ale moje neschopnost :-(

mám chybu v syntaxi
<select id="nabidka">
<?php
foreach ($data as $radek) {
 echo '<option value="' . $radek['id']; ?> . '">' . <?php echo $radek['jmeno'] . ' ' . $radek['prijmeni'] . '</option>'?> 

<?php
   }
 ?>
</select>  


ve zdrojáku v prohlížeči mám
<select id="nabidka">
<option value=" . '">' . Martin Novák</option> 
</select>


Vím, že mám chybu v syntaxi, ale nemůžu na to příjít, už hodinu se s tím hraju
panther
Profil
Péťanek:
echo "<option value=\"" . $radek['id'] . "\">" . $radek['jmeno'] . " " . $radek['prijmeni'] . "</option>";

Místo uvozovek tam samozřejmě můžou být apostrofy, ale zvykl jsem si psát u echa uvozovky, stejně, jako je mám rád v HTML, proto je to všechno escapované.

Ty ses tam trochu zamotal do ukončování a znovustartování PHP. Zde je zbytečné jej na tom řádku několikrát startovat a je přehlednější zapsat to celé do jednoho echa.
Péťanek
Profil *
Mockrát děkuju.
To s tím zpětným lomítkem neznám, budu se to muset doučit.

Díky
panther
Profil
Péťanek:
To s tím zpětným lomítkem neznám, budu se to muset doučit.
jen escapování, šlo by to udělat i s apostrofy, možností je opravdu více. Bez zpětných lomítek třeba takto:
echo "<option value='" . $radek['id'] . "'>" . $radek['jmeno'] . " " . $radek['prijmeni'] . "</option>";

Když si zobrazíš HTML zdroj, budou tam kolem value apostrofy, v příkladu výše [#6] uvozovky.

Často se odsud odkazuje ke kolegovi tisovi, http://tiso.wz.cz/articles/uvodzovky.php, má tam krásný článek o uvozovkách.
Péťanek
Profil *
Zdravíčko, ještě jsem se chtěl zeptat na jednu věc. Budu mít druhý formulář (nebo stejný) kde bude možnost editovat jednotlivé položky. A nyní nevím jak do toho zakomponovat aby v list/menu byla hodnota, kterou jsem tam na začátku vložil...

Vím že se používá atribut
<option value="6" selected="selected">šestá volba</option>

ale nevím jak to spojit s tím foreach... aby nevypisoval selected="selected"> všude, ale jenom u položky která bude mít shodné ID.
Rozumí mi někdo co myslím? Je to těžké popsat. Jak kdybych se snažil komunikovat v čínštině :-)
Péťanek
Profil *
Odvolávám co jsem odvolal a slibuji co jsem slíbil :-)
Teď vážně, příspěvek #9 beru zpět, editaci budu řešit jinak. Avšak nastal další problém. Dotazník posílám ke zpracování a následnému zápisu do databáze, všechny položky fungují až právě na to list/menu.

    <p>Žánr: <select>
      <?php
        $zanr = $model['zanr']; //zde natahám data z databáze (idzanr, zanr) do pole
        foreach ($zanr as $radek) {
       echo "<option value=\"" . $radek['idzanr'] . "\">" . $radek['zanr'] . "</option>";  }
       ?>
    </select></p> 


V souboru na zpracování používám
$_REQUEST['idzanr'];
při zápisu do databáze tam mám 0, míslo nějakého čísla.
Děkuji za každou radu
panther
Profil
Péťanek:
select musí mít atribut „name“.

Např.:
<select name="genre">
...
</select>
...
echo "Vybraná hodnota: " . $_GET/$_POST['genre']; //GET nebo POST podle toho, jakou máš method u formulare
Péťanek
Profil *
Hmm, tak tomu říkám drsný error uživatele:-)
Mockrát děkuju Panther
Já sa idu zahrabat pod zem jak moc se stydím.. :-)
Chválím toto fórum za velmi šikovné a hodné lidičky co pomáhají nám méně zkušeným.

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: