WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL förfrågan: mysql_query, WHERE-satser (https://www.wn.se/forum/showthread.php?t=18385)

eg0master 2007-01-03 16:32

Du får vänta med att läsa...

jag vet inte vad du menar med "radnummer", men första varvet i loopen är ju rimligen rad ett osv...

Timofey 2007-01-03 16:56

Har löst detta nu. Jag förstår inte heller vad jag menar :D

Det fick bli en massa rader med förfrågningar och if-satser...

Kod:

if ($cvalue=="dju")
 {
$a = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 1"));
$b = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 1,2"));
$c = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 2,3"));
$d = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 3,4"));
$e = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 4,5"));
$f = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 5,6"));
$g = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 6,7"));
$h = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 7,8"));
$i = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 8,9"));
$j = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 9,10"));
$k = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 10,11"));
$l = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 11,12"));
$m = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 12,13"));
$n = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 13,14"));
$o = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 14,15"));
$p = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 15,16"));
 }
elseif ($cvalue=="lan")
 {
$a = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 1"));
$b = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 1,2"));
$c = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 2,3"));
$d = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 3,4"));
$e = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 4,5"));
$f = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 5,6"));
$g = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 6,7"));
$h = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 7,8"));
$i = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 8,9"));
$j = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 9,10"));
$k = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 10,11"));
$l = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 11,12"));
$m = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 12,13"));
$n = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 13,14"));
$o = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 14,15"));
$p = mysql_fetch_row(mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='lan' ORDER BY `id` DESC LIMIT 15,16"));
 }

...

else
 {
$a = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y)"));
$b = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-1)"));
$c = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-2)"));
$d = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-3)"));
$e = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-4)"));
$f = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-5)"));
$g = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-6)"));
$h = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-7)"));
$i = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-8)"));
$j = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-9)"));
$k = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-10)"));
$l = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-11)"));
$m = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-12)"));
$n = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-13)"));
$o = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-14)"));
$p = mysql_fetch_row(mysql_query("SELECT link, text FROM foto WHERE id IN ($y-15)"));
 }

Får väl ta och förbättra koden senare. Huvudsaken just nu är att det ska funka... och det gör det ... bara lite segt. ;)

eg0master 2007-01-03 17:22

Pardon my french men du är ju inte riktigt klok... :rolleyes:

För det första så kommer till exempel "LIMIT 1,2" returnera två rader (varav du bara ser den första eftersom du bara gör en mysql_fetch. Detta eftersom andra siffran anger antalet rader i svaret och första "hur många som skall skippas" så alla dina LIMIT skall sluta med ",1" i nuvarande utförande.

Och om du av någon anleding vägrar loopa så skulle du förenkla din kod (och förbättra prestanda) så skall du göra så här:
Kod:

if ($cvalue=="dju")
{
$rs = mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT 15");
$a = mysql_fetch_row($rs);
$b = mysql_fetch_row($rs);
$c = mysql_fetch_row($rs);
...
$p = mysql_fetch_row($rs);
}
...

Men jag tror du behöver lära dig:
1) Hur man använder en databas och vad det är rent allmänt.
2) loopar i PHP (ja eller att programmera över huvud taget).

Jo det är kanske en ganska hård ton i mitt inlägg, men jag måste säga att jag (helt utan ironi) är mäkta imponerad av att du över huvud taget lyckats skapa en sida med en databas i botten. Om jag haft dina kunskaper hade jag nog givit upp för länge sedan så all heder till dig!

Några länkar som hjälp på vägen:
http://www.freewebmasterhelp.com/tutorials/phpmysql
http://www.php-mysql-tutorial.com/

Timofey 2007-01-03 18:09

Citat:

Ursprungligen postat av eg0master
Pardon my french men du är ju inte riktigt klok... *
För det första så kommer till exempel LIMIT 1,2 returnera två rader (varav du bara ser den första eftersom du bara gör en mysql_fetch. Detta eftersom andra siffran anger antalet rader i svaret och första hur många som skall skippas så alla dina LIMIT skall sluta med ,1 i nuvarande utförande.

HAHAHAHhaa :D
Vi tar det imorgon :)

Citat:

Ursprungligen postat av eg0master
Kod:

if ($cvalue=="dju")
{
$rs = mysql_query("SELECT link, text, cat, id FROM foto WHERE cat='dju' ORDER BY `id` DESC LIMIT >>>16<<<");
$a = mysql_fetch_row($rs);
$b = mysql_fetch_row($rs);
$c = mysql_fetch_row($rs);
...
$p = mysql_fetch_row($rs);
}
...


Detta funkade. Ska använda loops lite senare.

!Konstigt nog försvinner "$" tecken då man klickar på "Snabbcitera"

mersault 2007-01-04 00:23

alltinggratis>> Det där var det roligaste jag läst på WN på länge... =) Hoppas du bjuder på det skrattet.

Instämmer med egomaster men tipsar också om php.net! Leta upp mysql-funktionerna där så hittar du kodexempel på hur du ska använda funktionerna (med loopar!) på ett rationellt sätt.

Timofey 2007-01-04 12:09

Citat:

Originally posted by mersault@Jan 4 2007, 01:23
alltinggratis Det där var det roligaste jag läst på WN på länge... =) Hoppas du bjuder på det skrattet.

Absolut! Tack för att du uppskattar det =)))

Nej, men det är mitt första försök att hantera en MySQL databas med php, så det är klart att jag inte har några kunskaper inom detta, men jag har redan under försökets gång lärt mig en massa!

Magnus_A 2007-01-04 22:44

Visste inte att det gick att krångla till en enkel fråga så extremt...

ingångsvärdet $cvalue är antingen 'dju' eller 'lan' eller något annat...

$query =" SELECT link, text, cat, id FROM foto WHERE cat='$cvalue' ORDER BY `id` DESC LIMIT 16";

$result=mysql_query($query);

//det vanligaste sättet att loopa igenom ett resultset i php:
while($r=mysql_fetch_row($result)){

//gör nåt kul med ditt resultat, till exempel skriv ut det rad för rad:
echo " Link: $r[0], Text: $r[1], Cat: $r[2], id: $r[3].
";

}

Efter att ha gjort det här ett par hundra gånger så kommer du inte att tveka...


Alla tider är GMT +2. Klockan är nu 01:12.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson