15. januar 2007 - 20:47Der er
20 kommentarer og 1 løsning
while eller if eller?
jeg har en tabel i en mysql database der ser således ud:
id noget 1 a 2 a 3 a 4 b 5 b 6 c
jeg skal have udtaget 3 tal(id) hvor (noget) ikke må være ens. til at udvælge (id) bruger jeg rand(). Men hvordan laver sådan den ikke tager 3 tal(id) hvor (noget) er det samme. eller to tal(id) hvor (noget) er ens?
det skulle vel gerne være SELECT id, distinct noget FROM tabel WHERE id = $tal1 ORDER BY `id` DESC limit 3 men så skriver den fejl her $foresp2 = mysql_query("SELECT id, distinct noget FROM tabel WHERE id = $tal1 ORDER BY `id` DESC limit 3 "); while($data2 = mysql_fetch_array($foresp2)){ // det er i denne linje der er fejl
først køre jeg rand(1,6) den retunere så 4 hvor jeg så laver en forespørgsel hvor jeg så skriver nr. 1 blev 2 nu vil jeg gerne finde anden pladsen så der skal den lave en rand med tallende 1,2,3,6 hvordan for jeg den til det
Jeg har lige læst spørgsmål og nogle indlæg igen..
Det ser ud til, at du skal bruge 3 forespørgsler, da du vil bruge rand..
Hvis det absolut SKAL være forskellige id'er, skal den "huske" hvilke den allerede har fundet..
Det betyder, at du skal gemme værdierne i en variabel eller en array.. Hver gang den har fundet en værdi, skal den kigge i variablen/arrayen, for at se om det allerede er valgt..
Hvis det ikke er valgt endnu, tilføjes det til variablen/værdi.. ellers skal den udføre forespørgslen igen..
Noget i stil med:
v = ""; // huske-variablen tæller = 0; // antallet af fundne værdier, der ikke er gentagne værdier while(tæller < 3) {
id = select ... hvis v.IkkeIndeholder(id + ",") så v = v + id + "," tæller = tæller + 1 slut hvis }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.