Autor Zpráva
licantrop
Profil
Hoj, už nevim co mam špatně.


$tam = mysql_fetch_array (mysql_query("SELECT ID FROM sentitems "));
echo (implode($tam));


Mělo by to vrátit posledni ID ale vrátí to dvojitou hodnotu. Např.: 171171 - má být 171
lionel messi
Profil
licantrop:
Funkcia implode prijíma dva parametre, v prvom reťazec, ktorí spojí prvky poľa, a v druhom pole, ale aj tak je to neštandardné správanie. Nemáš to v rámci nejakého cyklu? Čo vypíše echo $tam["ID"];?
licantrop
Profil
lionel messi:
toto vrátí správnou hodnotu (171)
V cyklu to není...
xROAL
Profil
mysql_fetch_array() za bežných okolností vráti pole, v ktorom sú hodnoty dvojmo.
Keď si vypíšeš var_dump($tam), zistíš že vo výslednom poli je hodnota "171" raz pod textovým indexom "ID" a raz pod číselným indexom, preto ti implode() robí to, čo robí.
Ak chceš mať vo výslednom poli hodnoty len pod textovým kľúčom/číselným indexom (pri takomto použití je asi jedno, ktoré z toho si vyberieš), tak uveď ako druhý parameter funkcie MYSQL_ASSOC/MYSQL_NUM, prípadne využi priamo funkcie mysql_fetch_assoc()/mysql_fetch_row().
DJ Miky
Profil
Funkce mysql_fetch_array vrátí pole, kde jsou jednak pojmenované indexy podle sloupců z výsledku (v tomto případě ID) a jednak číselné indexy podle pořadí sloupců (v tomto případě 0). Je možné to vidět např. při vypsání pole:
print_r($tam);
Pokud chceš pouze jmenné indexy, použij funkci mysql_fetch_assoc. Pokud chceš pouze číselné, použij mysql_fetch_row.

Otázkou však je, čeho chceš docílit. V této podobě kódu vždy bereš pouze první řádek. Pokud chceš spojit všechny ID dohromady, musíš např. projít celý výsledek pomocí cyklu:
$tam = mysql_query("SELECT ID FROM sentitems ");
while($tam = mysql_fetch_assoc($result)) {
  // … zde si můžeš jednotlivé $tam['ID'] uložit např. do jiného pole a pak je spojit pomocí implode()
}
licantrop
Profil
Super, děkuji. Už to maká... Vubec jsem něvěděl, že to takto funguje...

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: