Dropdown menu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Dropdown menu – PHP – Fórum – Programujte.comDropdown menu – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
CuCo
~ Anonymní uživatel
6 příspěvků
25. 5. 2015   #1
-
0
-

Nazdar, potřeboval bych pomoct s drop-down menu v php. Menu jako takové jsem již pomocí googlu vyřešil a to následovně... 
 

 $sql = "SELECT * FROM auta"; 
$result = mysql_query($sql); 

echo "<select name='zkratka'>"; 
while ($row = mysql_fetch_array($result)) { 
                  echo '<option ' . ($zkratka==$row['zkratka'] ? 'selected' : '') . 'value="' . $row['zkratka'] . '">' . $row['zkratka'] . '</option>'; 
    

echo "</select>"; 

<form action="smlouva.php" method="post"> 
                        Jméno:<br /> 
                        <input type="text" name="jmeno" /><br /> 
                        Telefon:<br /> 
                        <input type="text" name="tlf" /><br /> 
                        <input type="submit" value="Vložit do smlouvy" /> 
                </form> 



Menu se zobrazí přesně tak jak potřebuji, ale potřeboval bych  zjistit jaká hodnota je selected, abych mohl dál pracovat s hodnotama z databáze. 

Ve své podstatě mi jde o to, že mám dvě databaze aut a zákazníků, potřebuji z databaze dostat informace o autu a vložit je do smlouvy a přes formulář vkládám údaje o zákaznícich do databáze. 
Moc díky za jakoukoliv radu, jenom bych ještě dodal, že jsem absolutní amatér v php a mysql, tak mě neukamenujte.  

Nahlásit jako SPAM
IP: 91.224.49.–
Reklama
Reklama
smiesek0
Newbie
26. 5. 2015   #2
-
0
-

#1 CuCo
tam kde pro option uvádíte  

$row['zkratka']


bych upravila na  

$row['id']


nebo máte v databázové tabulce sloupec s názvem zkratka?

Nahlásit jako SPAM
IP: 2a00:1028:8388:3b76:49e4:...–
peter
~ Anonymní uživatel
2528 příspěvků
26. 5. 2015   #3
-
0
-

                  echo '<option ' . ($zkratka==$row['zkratka'] ? 'selected' : '') . 'value="' . $row['zkratka'] . '
To je zkraceny if. if (podminka) ?then {return ...} :else { return...}. $row mas z databaze, takze zbyva $zkratka.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f9a7:2c...–
smiesek0
Newbie
26. 5. 2015   #4
-
0
-

#3 peter
to ano, že $row je z databáze, ale proč zrovna 'zkratka'

třeba to je správně, přece jen já jsem začátečník a snažím se stále učit a tedy i pochopit :)

Nahlásit jako SPAM
IP: 84.242.78.–
CuCo
~ Anonymní uživatel
6 příspěvků
26. 5. 2015   #5
-
0
-

#4 smiesek

ano v databázi mám sloupec zkratka, ale $row v databazi nemám..... nazvy sloupcu jsou ID, zkratka, auto, RZ, VIN, barva...Původně jsem měl kód zobrazený takto:

 

<?php $sql = "SELECT * FROM auta";
$result = mysql_query($sql);

echo "<select name='zkratka'>";
while ($row = mysql_fetch_array($result)) {
			echo '<option value="' . $row['zkratka'] . '">' . $row['zkratka'] . '</option>';	
}
echo "</select>";

	?>	

ale pak jsem někde přes google našel, že by ten výběr z menu měl dávat hodnotu takhle..... bohužel to nefunguje....

pokud ale to co tam mám napsaně je podmínka if, tak mi to přece nijak nemůže pomoct...já potřebuju zjistit vybranou položku z menu a nejsem si jist, jestli if mi pomůže....

Nahlásit jako SPAM
IP: 79.127.135.–
smiesek0
Newbie
26. 5. 2015   #6
-
0
-

#5 CuCo
$row máte v pořádku, to se bere odtud


while ($row = mysql_fetch_array($result)) {
 

Nahlásit jako SPAM
IP: 84.242.78.–
CuCo
~ Anonymní uživatel
6 příspěvků
26. 5. 2015   #7
-
0
-

#6 smiesek
menu jako takové funguje, ale jak zjistit jakou hodnotu vyberu? nějak mě už nic bohužel nenapadá....

Nahlásit jako SPAM
IP: 79.127.135.–
smiesek0
Newbie
26. 5. 2015   #8
-
0
-

#7 CuCo
podle mě co máte napsané sledujete tuto hodnotu $row['zkratka'], ale jak jsem psala výše, spíše bych sledovala hodnotu sloupce id záznamu a ta hodnota sloupce zkratka předpokládám, že tam jsou názvy apod. bych nechala právě pro ten výpis menu co Vám funguje

Nahlásit jako SPAM
IP: 84.242.78.–
CuCo
~ Anonymní uživatel
6 příspěvků
26. 5. 2015   #9
-
0
-

#8 smiesek
Pokud to změním na ID, tak mi to ukazuje hodnotu ID, ale pořád nedokážu zjistit jakou položku jsem vybral...

Ten parameter selected co jsem přidal oproti původní verzi v podstatě nic nedělá, resp nedokážu tu vybranou hodnotu vypsat..... 

<?php
echo "<select name='zkratka'>";
while ($row = mysql_fetch_array($result)) {
						echo '<option ' . ($vyber==$row['zkratka'] ? 'selected' : '') . 'value="' . $row['zkratka'] . '">' . $row['zkratka'] . '</option>';
	
}
echo "</select>";


echo($vyber);?>
Nahlásit jako SPAM
IP: 79.127.135.–
peter
~ Anonymní uživatel
2528 příspěvků
26. 5. 2015   #10
-
0
-

:) Co tak to zkusit takto, pypsat si to:

while ($row = mysql_fetch_array($result))
  {
  var_dump($zkratka,$row);
  }

Tak, ve ktere promenne je ted to, co je zaskrtnute? $zkratka nebo $row?

($zkratka==$row['zkratka'] ? 'selected' : '')
Chapes vubec radek po radku, co je v tom php kodu napsane? Zkousel jsi to chapat? Proc se tam u nektereho option objevi v html kodu selected, tak to selected tam musel ten php kod nejak vypsat. A hledanim slova selected v kodu se dopatras prave radku s podminkou. Takze neco z toho asi ovlivnuje vypsani slova selected do html. Zkus tam misto selected napsat treba hrdina a pak si v prohlizeci prohlidni vysledny html kod (ve FF prave tl. mysi a v nabidce je Zobrazit zdrojovy kod stranky).


 

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f9a7:2c...–
peter
~ Anonymní uživatel
2528 příspěvků
26. 5. 2015   #11
-
0
-

*vypsat

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f9a7:2c...–
CuCo
~ Anonymní uživatel
6 příspěvků
26. 5. 2015   #12
-
0
-

#10 peter

zkratka vypíše NULL a row vypíše hodnoty co jsou v databázi.... Ten kód se snažím pochopit, ale opravdu nevím co přesně co znamená.

while je opakování příkazu až dokud platí podmínka, která v mém případě je výběr z celé databáze (můžu to změnit pouze na výběr ze sloupce zkratka). 

Příkaz co to má dělat v mém případě je, že vypíše hodnoty pro option pro dropdown.

každopádně nechápu proč je to konstruované tak jak to je. A už vubec to nechápu s tou možností selected....

echo '<option value=' . $row['zkratka'] . '>' . $row['zkratka'] . '</option>';
Nahlásit jako SPAM
IP: 79.127.135.–
peter
~ Anonymní uživatel
2528 příspěvků
26. 5. 2015   #13
-
0
-

Tak tam zkus dat, aby tam bylo neco vybrane, selected, co to vypise.

Jinak, ten kod nepocita s multi selectem. Kdy je mozne vybrat pres ctrl a shift vice nez jednu moznost.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f9a7:2c...–
smiesek0
Newbie
27. 5. 2015   #14
-
0
-

tak já se v tom bohužel ztrácím a nerozumím tomu, co a jak se má vypisovat, takže nedokážu více poradit a spíše počkám na řešení, abych to pochopila a mohla nějak začít zase bádat a vzdělávat se :)

Nahlásit jako SPAM
IP: 109.81.209.–
peter
~ Anonymní uživatel
2528 příspěvků
27. 5. 2015   #15
-
0
-

Aha, ted si to ctu cele znovu a mozna mi uniklo to podstatne, ty tam nevis, jak dat neco jineho pro selected.
No, ono jde o to, ze se prochazi radek po radku a podle toho, jestli se $row['zkratka'] rovna $zkratka, tak se podle toho vypise selected nebo nic. Cili treba zmenit $zkratka na nejakou hodnotu. V tom kodu tam nemas php, ktere do $zkratka dava cokoliv, takze logicky je tam stale null.

Jinak, s tim id ma smiesek pravdu, taky to pouzivam, ze dam do value id radku a totez pro to porovnani. Ale muze to byt i jak to mas.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:dd49:25...–
smiesek0
Newbie
27. 5. 2015   #16
-
0
-

tak jsem se tím zkusila ještě prokousat i já, jelikož jsem začátečník, tak pokud si to hold nepředstavím na příkladu, tak mi to logicky nemyslí, i když tu logiku vlastně ani nemám, ale k dotazu.

jak psal peter, je nutné definovat proměnné $zkratka nějakou hodnotu, třeba:

$zkratka = 0;

pak vložit do  

<form action ...


ten výběrový seznam, nyní jej máte mimo form

echo "<select name='zkratka'>"; 
while ($row = mysql_fetch_array($result)) { 
                  echo '<option ' . ($zkratka==$row['zkratka'] ? 'selected' : '') . 'value="' . $row['zkratka'] . '">' . $row['zkratka'] . '</option>'; 
    
} 
echo "</select>"; 


hodnota, která se bude hledat a následně tedy se s ní i bude pracovat je $row['zkratka'], která se následně bude předávat po stisku tlačítka "Vložit do smlouvy" do proměnné z $_POST pro zápis údaje do databáze a nebo výpis na obrazovku, záleží jaká akce má po stisku nastat.

tak tedy ještě bych doplnila hodnotu name="send" pro tlačítko submit (Vložit do smlouvy)

<input type="submit" name="send" value="Vložit do smlouvy" /> 


od něj se pak bude testovat, zdali bylo stisknuto tlačítko a co se má tedy udělat = vypsat a nebo zapsat záznam do tabulky (smlouvy).

Mimo oblast form, třeba pod něj, vložíte následující:

if (isset($_POST['send'])) {
	$auto = $_POST['zkratka'];
	echo "<br />";
	echo "Zobrazené auto <strong>".$auto."</strong>";
}


kontrola, resp. co se má udělat po stisku "Vložit do smlouvy". $_POST['zkratka'] obsahuje právě tu hledanou hodnotu value $row['zkratka']

Takhle by to tedy mělo již myslím být srozumitelné, jak zněl prvotní dotaz.

Zkušení programátoři určitě vysvětlí líp a taky jsem se nezaměřila na ošetřování vstupní proměnných a všech jejich použití apod. Pouze jsem chtěla pomoci najít tu hledanou proměnnou, aby s ní mohl dále tazatel pracovat :)

Nahlásit jako SPAM
IP: 84.242.78.–
peter
~ Anonymní uživatel
2528 příspěvků
27. 5. 2015   #17
-
0
-

Ono, mozna tve vysvetleni je lepsi. Vysvetlene stylem novacka. Ten ze to ma mimo form jsem si taky vsiml a rikal jsem si, ze to asi vi, ze to ma pokusne. Pripadne se vyresi pozdeji, az sem da upraveny kod.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:dd49:25...–
CuCo
~ Anonymní uživatel
6 příspěvků
28. 5. 2015   #18
-
0
-

Díky moc za rady a vystvětlení. Já jsem si nebyl jistý, jestli to může byt součástí formuláře, tak proto jsem to měl mimo formulář. Ještě jednou díky.

Nahlásit jako SPAM
IP: 91.224.49.–
smiesek0
Newbie
28. 5. 2015   #19
-
0
-

ono jak se to veme, ale všeobecně to být mimo formulář nemůže, protože po stisknutí tlačítka to pak neví, že se má zpracovávat i údaje z tohoto pole, pokud není součástí form.

Mimo formulář to třeba může být v případě, že by to sloužilo třeba pro výběr měsíce a následně zobrazení záznamů :)

Nahlásit jako SPAM
IP: 2a00:1028:8388:3b76:1c75:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 60 hostů

Podobná vlákna

Dropdown menu — založil Benjamin

DropDown Menu — založil Mishsuli

Inline dropdown menu — založil Hanulik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý