Autor | Zpráva | ||
---|---|---|---|
chris Profil |
#1 · Zasláno: 5. 7. 2011, 17:07:15 · Upravil/a: chris
ahoj, prosim o radu...
vypisuju z MySQL databáze přes PHP záznamy z jedný tabulky - třeba jen název... toto je výpis celkový ze všech kategorií... chci pod tímto výpisem ještě jeden výpis ze stejné tabulky, který ale bude vypisovat jen jednu kategorii, ale nechci, aby zobrazoval již zobrazené záznamy, které jsou vidět ve výpisu viz výše... může mi s tím někdo pomoct? $sql = "select * from zaznamy limit 0,10"; $dotaz = mysql_query($sql); while ($zazn = mysql_fetch_assoc($dotaz)){ echo ' '.$zazn["nazev"].' '; // první výpis } $sql2 = "select * from zaznamy where rubrika='jentahlerubrika' limit 0,10"; $dotaz2 = mysql_query($sql2); while ($zazn2 = mysql_fetch_assoc($dotaz2)){ echo ' '.$zazn2["nazev"].' '; // druhý výpis, kde nebudou záznamy zobrazené v prvním výpise } |
||
okolojdouci Profil * |
#2 · Zasláno: 5. 7. 2011, 17:14:37
První řádek oprav na:
$sql2 = "select * from zaznamy where rubrika<>'jentahlerubrika' "; |
||
okolojdouci Profil * |
#3 · Zasláno: 5. 7. 2011, 17:16:03
Vlastně pardon, nejde o opravu prvního řádku, ale o přidání dalšího komplet kódu pro výpis.
|
||
chris Profil |
#4 · Zasláno: 5. 7. 2011, 17:20:37
okolojdouci:
„Vlastně pardon, nejde o opravu prvního řádku, ale o přidání dalšího komplet kódu pro výpis.“ upravil jsem řádek 8 a druhý výpis mi nyní zobrazuje záznamy, které NEPATŘÍ do rubriky "jentahlerubrika"... chtěl jsem, aby výpis zobrazoval záznamy z této rubriky, ale vynechal záznamy, které už zobrazil první výpis, který obsahuje záznamy i z ostatních rubrik... |
||
okolojdouci Profil * |
#5 · Zasláno: 5. 7. 2011, 17:24:54
chris:
Abych si to ujasnil: 1. Nejdřív vypíšeš záznamy ze všech rubrik. 2. Pak vypíšeš záznamy z jedné konkrétní rubriky. 3. Pak chceš záznamy, které jsou v prvním a nejsou ve druhém výpisu? |
||
chris Profil |
#6 · Zasláno: 5. 7. 2011, 17:33:33
okolojdouci:
1. ano 2. ano 3. ve výpisu č.2 chci záznamy z jedné konkrétní rubriky, ale s vynecháním záznamů, které vypsal výpis č.1 |
||
okolojdouci Profil * |
#7 · Zasláno: 5. 7. 2011, 17:40:32
chris:
„3. ve výpisu č.2 chci záznamy z jedné konkrétní rubriky, ale s vynecháním záznamů, které vypsal výpis č.1“ Jinými slovy: vzhledem k tomu, že výpis č. 1 zahrnuje všechny záznamy, chceš ve výpisu 2 vypsat nula záznamů. To nebude složité. |
||
chris Profil |
#8 · Zasláno: 5. 7. 2011, 17:43:00 · Upravil/a: chris
okolojdouci:
aha, máš pravdu - zapomněl jsem napsat, že první výpis vypíše třeba jen prvních 10 záznamů ze 100, takže je tam ještě limit 0,10 to je tím, jak jsem ten kód chtěl co nejvíce zjednodušit pro fórum... |
||
okolojdouci Profil * |
#9 · Zasláno: 5. 7. 2011, 17:52:14
zkusil bych
SELECT * FROM zaznamy WHERE rubrika='jentahlerubrika' AND ID NOT IN (SELECT ID FROM zaznamy LIMIT 0,10) předpokládám, že - tam máš sloupec ID - si doplníš nějaký ORDER BY |
||
chris Profil |
#10 · Zasláno: 5. 7. 2011, 17:52:54
kód jsem upravil i v prvním příspěvku, tak prosím znovu o radu
|
||
chris Profil |
#11 · Zasláno: 5. 7. 2011, 18:03:07
okolojdouci:
píše mi to Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource můžu vůbec takhle SELECTovat dvakrát z jedný tabulky v jednom dotazu? |
||
okolojdouci Profil * |
#12 · Zasláno: 5. 7. 2011, 18:22:20
Dostal jsem hlášku This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Problém je asi v tom LIMITu v poddotazu. Tak si z těch prvních deseti ID (získaných prvním dotazem) udělej řetězec a vlož do toho dotazu takhle: ... AND ID NOT IN (1,2,6,12) // prvních deset ID Je to trochu neelegantní, ale funkční a bezproblémové. Jestli jsem něco přehlídl, předpokládám, že mě někdo během několika málo hodin opraví. |
||
chris Profil |
#13 · Zasláno: 5. 7. 2011, 18:24:23
okolojdouci:
„Tak si z těch prvních deseti ID (získaných prvním dotazem) udělej řetězec“ nevím jak :) můžeš mi to prosím napsat? díky moc za tvůj čas! |
||
chris Profil |
#14 · Zasláno: 5. 7. 2011, 18:26:09
okolojdouci:
„AND ID NOT IN (1,2,6,12)“ tohle funguje přesně jak chci, jen nevím jak udělat ten řetězec... |
||
okolojdouci Profil * |
#15 · Zasláno: 5. 7. 2011, 18:35:03
$top10 = "0"; $sql = "select * from zaznamy limit 0,10"; $dotaz = mysql_query($sql); while ($zazn = mysql_fetch_assoc($dotaz)){ echo ' '.$zazn["nazev"].' '; // první výpis $top10 .= ",".$zazn["ID"]; } .. .. $sql2 = "SELECT * FROM zaznamy WHERE rubrika='jentahlerubrika' AND ID NOT IN (".$top10.")"; (Kajmanovi se to bastlení asi líbit nebude) |
||
chris Profil |
#16 · Zasláno: 5. 7. 2011, 18:43:04
okolojdouci:
díky, ale zatím mi to píše zase mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource zkouším to porůznu upravit... přenese se to $top10 do druhého SELECTU, i když je definice $top10 obsažena v dříve ukončeném (tom prvním) while? |
||
okolojdouci Profil * |
#17 · Zasláno: 5. 7. 2011, 18:48:46
chris:
Vypiš si ten $sql2 a ukaž ho tady. |
||
chris Profil |
#18 · Zasláno: 5. 7. 2011, 18:52:57
okolojdouci:
když je tam AND ID NOT IN (".$top10.") tak to nevypíše nic a hodí to chybu... bez téhle podmínky to vypisuje samozřejmě to samé jako výpis č.1 tu chybu to háže na řádek 11 z původního kódu |
||
okolojdouci Profil * |
#19 · Zasláno: 5. 7. 2011, 18:59:31
Myslel jsem obsah toho $sql2.
echo $sql2; |
||
chris Profil |
#20 · Zasláno: 5. 7. 2011, 19:02:50
okolojdouci:
aha SELECT * FROM zaznamy WHERE rubrika='jentahlerubrika' AND ID NOT IN (,1) |
||
okolojdouci Profil * |
#21 · Zasláno: 5. 7. 2011, 19:11:44
chris:
... a do očí tě to neprásklo? V $top10 musí být ta nula, co je na řádku 1 (ta je tam jen kvůli čárce). Pak se tam musí v tom prvním while přilepit těch deset čísel oddělaných čárkou. Výsledek ",1" tomu zjevně neodpovídá. Něco děláš špatně. |
||
chris Profil |
#22 · Zasláno: 5. 7. 2011, 19:18:41 · Upravil/a: chris
okolojdouci:
samozřejmě prásklo... když si dám vypsat echo $top10; píše to vždy v prvním výpise čárka id (např. ,2) když to změním na $top10 = "".$zazn["id"]; tak už to píše id bez čárky, ale ve druhém výpise je stále jen: and id NOT IN (1) jako kdyby to zohledňovalo jen id 1... |
||
okolojdouci Profil * |
#23 · Zasláno: 5. 7. 2011, 19:22:56
chris:
Můj příspěvek #15, ř. 7, ještě jednou a pomalu: $top10 .= ",".$zazn["ID"]; |
||
chris Profil |
#24 · Zasláno: 5. 7. 2011, 19:26:32
okolojdouci:
promiň, ale nechápu takto jsem ten řádek měl, ale vypisoval při echu: čárka,č.id nevím, zda se mi snažíš něco naznačit či zda už řešení znáš... už nad tím sedím asi moc dlouho... |
||
chris Profil |
#25 · Zasláno: 5. 7. 2011, 19:31:35
tak už to mám přes implode...
$top10[]=$zazn["id"]; . . and id NOT IN (".implode(",", $top10).") díky moc za tvůj čas, pomohl jsi mi navést na správné řešení měj se! |
||
okolojdouci Profil * |
#26 · Zasláno: 6. 7. 2011, 00:38:39
Snažil jsem se naznačit, že v tom mém řádku bylo .=, kterým se každé další ID k tomu $top10 přidávalo, tys tam měl =, kterým sis to v každém průchodu přepsal.
|
||
chris Profil |
#27 · Zasláno: 6. 7. 2011, 10:14:22
okolojdouci:
původně jsem tam tu tečku měl, ale házelo to chybu každopádně ještě jednou díky |
||
Časová prodleva: 14 let
|
0