Autor | Zpráva | ||
---|---|---|---|
Casius Profil * |
#1 · Zasláno: 12. 6. 2009, 18:50:19
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 |
#2 · Zasláno: 12. 6. 2009, 18:55:42
substr($id_2,0,3); |
||
Casius Profil * |
#3 · Zasláno: 12. 6. 2009, 19:09:24
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 |
#4 · Zasláno: 12. 6. 2009, 19:13:27
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 * |
#5 · Zasláno: 12. 6. 2009, 19:19:29
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 |
#6 · Zasláno: 12. 6. 2009, 19:27:29
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 * |
#7 · Zasláno: 12. 6. 2009, 19:34:45
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 * |
#8 · Zasláno: 13. 6. 2009, 03:32:29
Pokud se to nemusí ořezávat až v php, tak např.
SELECT DISTINCT SUBSTR(id,1,3) FROM tabulka |
||
Casius Profil * |
#9 · Zasláno: 13. 6. 2009, 10:06:34
To je úplně perfektní, vyzkouším, díky moc!
|
||
Casius Profil * |
#10 · Zasláno: 13. 6. 2009, 11:18:56
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 * |
#11 · Zasláno: 13. 6. 2009, 11:33:04
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 * |
#12 · Zasláno: 13. 6. 2009, 11:59:26
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 * |
#13 · Zasláno: 13. 6. 2009, 12:03:57
Už to funguje, moc děkuji! :) Nedal jsem tam mysql_error() a měl jsem špatně jméno tabulky... :)
|
||
Časová prodleva: 15 let
|
0