Autor | Zpráva | ||
---|---|---|---|
states68 Profil * |
#1 · Zasláno: 23. 9. 2009, 13:16:16
Mám v databázi sloupec "barva", ve kterém mám zaznamenány barvy - např modrá, červená, zelená. Když provedu výpis z db a chci vypsat třeba první prvek a napíšu echo($pole[0]); - vypíše se modrá, červená, zelená. Když zadám 2. prvek - tedy červenou ($pole[1]); , tak se nevypíše nic.
$dotaz = "SELECT * FROM eshop_zbozi"; $vysledek = mysql_query($dotaz,$spojeni); while($radek = mysql_fetch_array($vysledek)) { $pole = array ($radek[barva]); echo($pole[0]); } Když stejný zápis udělám bez db - funguje to normálně. $pole = array (modrá,červená,zelená); echo($pole[0]); vypíše první barvu, když echo($pole[1]); druhou... Děkuji za radu či nasměrování. Hledal jsem tady na fóru i na googlu, ale nic použitelného jsem nenašel. States68 |
||
Taps Profil |
#2 · Zasláno: 23. 9. 2009, 13:27:45 · Upravil/a: Taps
states68
$dotaz = "SELECT * FROM eshop_zbozi"; $vysledek = mysql_query($dotaz,$spojeni); while($radek = mysql_fetch_array($vysledek)) { $pole[] =$radek["barva"]; } echo $pole[0]; //první barva echo $pole[1]; //druhá barva |
||
states68 Profil * |
#3 · Zasláno: 23. 9. 2009, 13:46:08
Děkuji za radu, ale pořád mi to vypisuje všechny barvy na echo $pole[0]; a nic na echo $pole[1]; nebo echo $pole[2];
přesný zápis v db je: modrá,červená,zelená když to napíšu jako $pole = array (modrá,červená,zelená); tak vše funguje, z db ne. |
||
Taps Profil |
#4 · Zasláno: 23. 9. 2009, 13:53:33
states68
jsou ty barvy uloženy v jednom řádku nebo co jedna barva to jeden řádek ? |
||
states68 Profil * |
#5 · Zasláno: 23. 9. 2009, 13:57:31
Vše je v jednom řádku ve sloupci "barva" - zapsáno takto modrá,červená,zelená
|
||
Taps Profil |
#6 · Zasláno: 23. 9. 2009, 14:07:47
states68
Vytiskni si pole pomocí print_r a uvidíš jak je pole uloženo $dotaz = "SELECT * FROM eshop_zbozi"; $vysledek = mysql_query($dotaz,$spojeni); while($radek = mysql_fetch_array($vysledek)) { $pole[] =explode(",",$radek["barva"]); } print_r($pole); |
||
Kajman_ Profil * |
#7 · Zasláno: 23. 9. 2009, 14:08:26
Adekvátní zápis je...
$pole = array ('modrá,červená,zelená'); echo($pole[0]); Hledáte asi php funkci split nebo explode. Ale vězte, že takhle se data do db ukládat nemají! Mrkněte na teorii normálních forem. |
||
states68 Profil * |
#8 · Zasláno: 23. 9. 2009, 14:35:59
Děkuji za ochotu, ale zjednodušeně řečeno - jde asi o to, že
$pole = array ('modrá,červená,zelená'); - funguje kdežto $barvy = "'modrá,červená,zelená'"; $pole = array ($barvy); nefunguje - asi si tu $barvy bere jako jednu položku. |
||
Kajman_ Profil * |
#9 · Zasláno: 23. 9. 2009, 15:43:57
Oba zápisy, co jste teď napsal se chovají stejně. Udělají jednorozměrné pole s jednou jedinou položkou.
|
||
states68 Profil * |
#10 · Zasláno: 23. 9. 2009, 15:47:47
Ano - chyba, chtěl jsem to napsat takhle -
$pole = array ('modrá','červená','zelená'); - funguje kdežto $barvy = "'modrá','červená','zelená'"; $pole = array ($barvy); nefunguje - asi si tu $barvy bere jako jednu položku |
||
Kajman_ Profil * |
#11 · Zasláno: 23. 9. 2009, 15:49:17
A to se chová přesně, jak má. Mrkněte na stringy a pole do manuálu.
|
||
states68 Profil * |
#12 · Zasláno: 23. 9. 2009, 16:54:18
Děkuji všem za ochotu. Vyřešil jsem to asi "prasácky", ale funguje to. Kdyby to někdo potřeboval - tedy dostat třeba do selectu položby z DB z jedoho řádku oddělené čárkou, tak takhle jsem to řešil pro potřeby selectu
$dotaz = "SELECT * FROM eshop_zbozi"; $vysledek = mysql_query($dotaz,$spojeni); while($radek = mysql_fetch_array($vysledek)) { echo"<table><tr><td width='150'>vyberte barvu</td><td> <select name='barva'>"; $barvy = $radek[barva]; $pocet = substr_count($barvy,','); for($c=1; $c<=$pocet; $c++) { $barvy_carka = strpos($barvy,','); $barva = substr($barvy,0, $barvy_carka); echo"<option value='$barva'>$barva</option>"; $barvy = substr($barvy,($barvy_carka+1)); } echo"<option value='$barvy'>$barvy</option> </select></td></tr></table>"; } |
||
nightfish Profil |
#13 · Zasláno: 23. 9. 2009, 18:27:26
states68
explode() by asi bylo lepší a ještě nejlepší by bylo ty data ukládat do databáze rozumně (jak již naznačil Kajman_) |
||
Časová prodleva: 16 let
|
0