Autor Zpráva
Casius
Profil *
Dobrý den,

potřebuji poprosit o radu, nějak jsem se sekl. Mám dotaz:

$doplnenimap = mysql_query("(SELECT DISTINCT(id) FROM tabulka WHERE id=$id)");


a poté z něj vypíšu:

while (list($id_2) = mysql_fetch_row($doplnenimap)) {
echo "$id_2,";
}


Jenže v DB mám čísla o 9. místech a já bych chtěl distincty pouze z prvních tří čísel každé hodnoty, takhle mám příliš mnoho hodnot na vypsání. Dalo by se toto nějak ošetřit? Nebo nechat SQL dotaz a zajistit to už jen PHP fcí při výpisu? Jaká by to potom uměla fce? Děkuji za radu!
keeehi
Profil
substr($id_2,0,3);
Casius
Profil *
Díky moc za odpověď, jenže jsem mezi pátral a došel k tomuto:

while (list(substr($id_mista, 0, 3)) = mysql_fetch_row($doplnenimap)) {

echo "
$id_mista,
";

}


což je vlastně to samé, jenže mi to hází jen prázdnou stránku, je tam chyba v syntaxi? Děkuji!
keeehi
Profil
chyba v synaxi není, jan je to špatně napsané ;-)
takto by to mělo být OK
while (list($id_mista) = mysql_fetch_row($doplnenimap)) {
echo substr($id_mista, 0, 3).",";
}
Casius
Profil *
To je sice perfektní co se fungčnosti týká, ale dělá to něco jiného než chci. :)) Vypisuje například:

109,109,109,109,109,109,111,111,111,111,111,111,111,111


Ale já chci vypsat každou hodnotu jen jednou... To je to oč běží od začátku.

Díky. :)
keeehi
Profil
SELECT je bez distinct a vše se provádí u PHP
while (list($id_mista) = mysql_fetch_row($doplnenimap)) {
$pole[]=substr($id_mista, 0, 3).",";
}
print_r(array_unique($pole));
//pro výpis 109,119,111,001, zakomentujte předchozí řádek a odkomentujte řádky následující
//$unikpole = array_unique($pole);
//foreach($unikpole as $hodnotaunikpole){
//echo $hodnotaunikpole.",";
//}
Casius
Profil *
Výsledek je velmi zajímavý, taková aritmetická posloupnost. :))

Zkopíroval jsem to:

Struhařov - Kostelec n. C. L. - C. Voděrady - Struhařov 12.04.2009 johann 126,,
Horní Počernice - Vidrholec - Horní Počernice 01.03.2009 johann 126,,109,,111,,
Jarní rozjížďka 2009 17.03.2009 johann 126,,109,,111,,
ČenkovRoštejnPodJavořicíČenkov 16.07.2008 johann 126,,109,,111,,140,,
Severem Kokořínska - Kachna 2009 09.06.2009 johann 126,,109,,111,,140,,110,,
Lucky hill (Na Lucký vrch) 07.06.2009 tony 126,,109,,111,,140,,110,,141,,
Vinné stezky Znojemska 06.06.2009 petel 126,,109,,111,,140,,110,,141,,164,,
Přes Žďárské vrchy 25.04.2009 michal 126,,109,,111,,140,,110,,141,,164,,128,,
Česká Kamenice-Kytlice-Hraniční rybník-Č.Kamenice 05.08.2008 jarik 126,,109,,111,,140,,110,,141,,164,,128,,101,,
Jiříkov 30.05.2009 pikot 126,,109,,111,,140,,110,,141,,164,,128,,101,,-1,
Kajman_
Profil *
Pokud se to nemusí ořezávat až v php, tak např.
SELECT DISTINCT SUBSTR(id,1,3) FROM tabulka
Casius
Profil *
To je úplně perfektní, vyzkouším, díky moc!
Casius
Profil *
Tak bohužel, pokud užiji:


$doplnenimap = mysql_query("(SELECT DISTINCT SUBSTR(id,1,3) FROM tabulka WHERE id=$id)");

while (list($id_2) = mysql_fetch_row($doplnenimap)) {
echo "$id_2,";
}


nic se mi nevypíše.

Díky za snahu.
Kajman_
Profil *
Stejně je divné, že dáváte while, když ten dotaz může vrátit jen jeden nebo žádný řádek.

A když to nic nevypíše, tak to asi nevrátilo řádek žádný, nebo je v dotazu chyba a tu zjistíte přes mysql_error()
Casius
Profil *
Může to vrátit vždycky přesně 10 řádků, je to jen součást jiného souboru dotazů a vypisuje pouze jedno <td> tabulky. Data jsou tam vždy. Zkusím to mysql error.
Casius
Profil *
Už to funguje, moc děkuji! :) Nedal jsem tam mysql_error() a měl jsem špatně jméno tabulky... :)

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: