Autor Zpráva
candiess
Profil
Dobrý večer, mám problém s array.. z databáze tahám data a chci z nich udělat pole...
$cisla = $Vypis['cisla']; //tato proměnná je ve tvaru "1","3","4,"

//nyní vytvořím pole
$pole = array($cisla);

ale když dám print_r($pole); tak mi to vypíše Array ( [0] => "1","3","4" ), ale mělo by to vypsat Array ( [0] => 1 [1] => 3 [2] => 4) ...
Nevíte kde dělám chybu, případně nějaké elegantní řešení? Děkuji mnohokrát :)
AM_
Profil
candiess:
ale když dám print_r($pole); tak mi to vypíše Array ( [0] => "1","3","4" ), ale mělo by to vypsat Array ( [0] => 1 [1] => 3 [2] => 4) ...
z čeho tak soudíš? resp. kde jsi si přečetl, že konstrukt array() umí nějak vytvořit pole ze stringu?

správná cesta je funkce explode ()

ale jestli máš v databázi čísla uložená jako text oddělený čárkami, je to hodně špatný návrh databáze.
candiess
Profil
nene, je to sloupec a v něm je hodnota "1","2","3" , mohl byste mi dát nějaký návrh, jak vytáhnout jednu hodnotu z databáze, rozdělit ji a vložit do pole.? prosím
AM_
Profil
candiess:
nene, je to sloupec a v něm je hodnota "1","2","3"
ano, takže je to string. Měl bys na to mít zvlášť tabulku - nevím, co zde čísla znamenají, tak si vymyslím příklad:

špatně:

tabulka clanky:
id_clanku nazev_clanku v_kategoriich
1              Něco               1,2,3
2              Cosi                1,4


dobře:

tabulka clanky:
id_clanku nazev_clanku
1              Něco              
2              Cosi               

tabulka clanky_kategorie
id_clanku  id_kategorie
1               1
1               2
1               3
2               1
2               4


mohl byste mi dát nějaký návrh, jak vytáhnout jednu hodnotu z databáze, rozdělit ji a vložit do pole.? prosím

AM:
správná cesta je funkce explode ()
pro to, aby jsi ze stringu v uvedeném tvaru vyrobil pole. Ale opakuji, takhle se to s databází nedělá.
Radek9
Profil
candiess:
je to sloupec a v něm je hodnota "1","2","3"
To je ten špatný návrh, o kterém AM mluvil. Navíc tě už odkázal na funkci explode.
candiess
Profil
$pizza  = "1 2 3 4 5 6"; //takže ten string v DB budu mít v tomto tvaru
$pieces = explode(" ", $pizza); // exploduju to mezerama
for($i = 0; $i<=count($pieces); $i++) { 
echo $pieces[$i]."<br>"; // a vypišu na nové řádky
}


Je tohle dobré řešení? :) jinak děkuju za odkázaní
Radek9
Profil
candiess:
Je tohle dobré řešení?
Pokud nám vysvětlíš, k čemu ty čísla jsou, tak ti to řekneme.
candiess
Profil
jsou to ID, slouží k identifikací článku.. myslím že je to hodně dobré řešení, děkuju hoši za pomoc :))
Radek9
Profil
candiess:
Pokud jsou to ID a budou se měnit, tak to není moc dobré řešení.
AM_
Profil
candiess:
není to dobré řešení - v DB nemá co dělat v tomhle případě string, udělej si zvlášť tabulku, která ti bude mapovat id_článku->id_kategorií, viz příklad jak jsem psal.
// jen tak pro zajímavost, snažil ses vůbec ten příklad v [#4] AM přečíst a pochopit? protože mi přijde, že jsi ho úplně ignoroval a snažíš se to mermomocí vyřešit tím explode (to jsem napsal jen pro úplnost jak se rozděluje string ve tvém koncepčně špatném řešení, se správným řešením celého problému to nemá nic společného).
candiess
Profil
AM:
Vzal jsem vaše řešení a trošku ho přepracoval, děkuji za návrhy a strukturu, určitě se bude hodit i v dalších mých projektech :)

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: