Autor Zpráva
states68
Profil *
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
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 *
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
states68
jsou ty barvy uloženy v jednom řádku nebo co jedna barva to jeden řádek ?
states68
Profil *
Vše je v jednom řádku ve sloupci "barva" - zapsáno takto modrá,červená,zelená
Taps
Profil
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 *
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 *
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 *
Oba zápisy, co jste teď napsal se chovají stejně. Udělají jednorozměrné pole s jednou jedinou položkou.
states68
Profil *
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 *
A to se chová přesně, jak má. Mrkněte na stringy a pole do manuálu.
states68
Profil *
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
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_)

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: