Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:01 Der er 41 kommentarer og
3 løsninger

Den skal kun udskrive det én gang

Hej

Jeg har denne kode til at udskrive de 30 sidst kommenteret..

$query=mysql_query("SELECT * FROM scooter_kommentar WHERE scooter_id = scooter_id ORDER BY id DESC LIMIT 30") or die ("Fejl X: ".mysql_error());
$nr = 1;
while($row = mysql_fetch_array($query)) {
$scooter_query=mysql_query("SELECT * FROM scooter WHERE id = '$row[scooter_id]'") or die ("Fejl X: ".mysql_error());
while($scooter = mysql_fetch_array($scooter_query))
echo '<font face="verdana" style="font-size: 11px;"><a href="scooter.php?id='.$scooter['id'].'">'.$nr.'. '.$scooter['nick'].'\'s '.$scooter['model'].'</a></font><br>';
$nr++;
}

Men hvis nu der er skrevet 5 nye kommentar under scooter_id 3 så bliver der udskrevet 5 gange af den scooter kan i ikke lave så den kun udskriver den en gang også selv om der er skrevet mange kommentar med samme scooter_id...
Avatar billede exp Juniormester
22. juli 2003 - 12:09 #1
prøv:
$query=mysql_query("SELECT * FROM scooter_kommentar WHERE scooter_id = scooter_id ORDER BY id DESC GROUP BY scooter_id LIMIT 30") or die ("Fejl X: ".mysql_error());

Ved ikke om det virker men det er da et forsøg værd...
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:17 #2
You have an error in your SQL syntax near 'GROUP BY scooter_id LIMIT 30' at line 1
Avatar billede exp Juniormester
22. juli 2003 - 12:20 #3
$query=mysql_query("SELECT * FROM scooter_kommentar WHERE scooter_id = scooter_id ORDER BY id DESC, GROUP BY scooter_id LIMIT 30") or die ("Fejl X: ".mysql_error());
Avatar billede schaefner Juniormester
22. juli 2003 - 12:21 #4
$query = mysql_query("SELECT * FROM scooter_kommentar WHERE scooter_id = scooter_id GROUP BY scooter_id ORDER BY id DESC LIMIT 30") or die (mysql_error());
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:31 #5
exp: You have an error in your SQL syntax near 'GROUP BY scooter_id LIMIT 30' at line 1

scharfner: Din kommer ikke med nogle fejl, men den vælger ikke efter de sidst skrevet, ved ikke helt hvad den går efter, men den dur ikke...
Avatar billede exp Juniormester
22. juli 2003 - 12:40 #6
$query=mysql_query("SELECT * FROM scooter_kommentar WHERE scooter_id = scooter_id DESC GROUP BY scooter_id, ORDER BY id LIMIT 30") or die ("Fejl X: ".mysql_error());
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:42 #7
You have an error in your SQL syntax near 'DESC GROUP BY scooter_id, ORDER BY id LIMIT 30' at line 1
Avatar billede exp Juniormester
22. juli 2003 - 12:44 #8
så ved jeg det ikke...
Avatar billede zaxxen Nybegynder
22. juli 2003 - 12:44 #9
hvad med:

$query = mysql_query("SELECT scooter_id,count(*) FROM scooter_kommentar WHERE scooter_id = scooter_id GROUP BY scooter_id ) or die (mysql_error());
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:47 #10
Nope den vælger ikke efter de sidst skrevet, ved ikke helt hvad den går efter, men den dur ikke...
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:52 #11
Jo... den stiller det op efter scooter_id...
den starter med 1 og slutter på 16 da der ikke er flere....
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 12:53 #12
Den udskriver ikke dem mellem 10 til 16
Avatar billede zaxxen Nybegynder
22. juli 2003 - 13:00 #13
Ok, hvad med:

$query = mysql_query("SELECT scooter_id,count(*) FROM scooter_kommentar WHERE scooter_id = scooter_id and id in (select id FROM scooter_kommentar ORDER BY id DESC LIMIT 30) GROUP BY scooter_id") or die (mysql_error());
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 13:02 #14
You have an error in your SQL syntax near 'select id FROM scooter_kommentar ORDER BY id DESC LIMIT 30) GROUP BY scooter_id' at line 1
Avatar billede zaxxen Nybegynder
22. juli 2003 - 13:13 #15
Hmmnnn.....det må vist være en "select returns too many rows" fejl. Jeg kan ikke lige komme på en simpel løsning....
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 13:15 #16
Det lyder til at være en svær en så nu er der 60 points at hente...
Avatar billede avminarm Juniormester
22. juli 2003 - 14:07 #17
jeg er ikke helt med er det når der er færre end 30 kommentarer den udskriver formange kommentarer?
Avatar billede exp Juniormester
22. juli 2003 - 14:13 #18
Tror den er hvis nu de seneste 10 kommentarer ser sådan ud:

2
1
3
2
3
4
5
1
2
1

så er det meningen at der kun skal vises
2
1
3
4
5

(han vil så have vist de sidste 30, men dette korte eksempel var lidt hurtigere at skrive...!)
Avatar billede avminarm Juniormester
22. juli 2003 - 14:17 #19
exp>> huuu - måske er det varmen - men hvad?? mener du :-0 - jeg kan ikke lige forstå hvad der menes med ale de der tal er det scooter_id?
Avatar billede exp Juniormester
22. juli 2003 - 14:18 #20
ja, fx...

Det er jo ligesom her på E under under "nyeste indlæg" - Selvom et af spørgsmålene måske har fået de seneste 3 indlæg, står det jo stadigvæk kun en gang på listen...
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 14:27 #21
Tak exp du forstår hvad jeg mener :)
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 14:27 #22
Så mangler jeg det bare i kode :P
Avatar billede exp Juniormester
22. juli 2003 - 14:36 #23
Ja på det punkt er jeg på bar bund... men jeg lytter interesseret med ;-)
Avatar billede avminarm Juniormester
22. juli 2003 - 14:47 #24
du kunne tilføje et datetime felt i din database og sortere efter dette eller prøve med

$query=mysql_query("SELECT DISTINCT * FROM scooter_kommentar ....
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 14:58 #25
nope det dur ikke med: $query=mysql_query("SELECT DISTINCT * FROM scooter_kommentar .....
Avatar billede schaefner Juniormester
22. juli 2003 - 15:00 #26
$query = mysql_query("SELECT DISTINCT scooter_id,* FROM scooter_kommentar ORDER BY id DESC LIMIT 30") or die (mysql_error());
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 15:19 #27
You have an error in your SQL syntax near '* FROM scooter_kommentar ORDER BY id DESC LIMIT 30' at line 1
Avatar billede schaefner Juniormester
22. juli 2003 - 15:21 #28
$query = mysql_query("SELECT *,DISTINCT scooter_id FROM scooter_kommentar ORDER BY id DESC LIMIT 30") or die (mysql_error());
Avatar billede avminarm Juniormester
22. juli 2003 - 15:22 #29
prøv
$query = mysql_query("SELECT DISTINCT(scooter_id),* FROM scooter_kommentar ORDER BY id DESC LIMIT 30") or die (mysql_error());
Avatar billede schaefner Juniormester
22. juli 2003 - 15:26 #30
$query = mysql_query("SELECT * FROM scooter_kommentar GROUP BY scooter_id ORDER BY id DESC LIMIT 30");

den virker uden problemer hos mig.
Avatar billede schaefner Juniormester
22. juli 2003 - 15:29 #31
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 16:01 #32
Det dur ikke hos mig også selv om at jeg prøver sådan:

$query = mysql_query("SELECT * FROM scooter_kommentar GROUP BY scooter_id ORDER BY id DESC LIMIT 30");
while($row = mysql_fetch_array($query)) {
echo $row['scooter_id'].'<br>';
}
Avatar billede schaefner Juniormester
22. juli 2003 - 16:03 #33
hvad er det der ikke dur?
Avatar billede schaefner Juniormester
22. juli 2003 - 16:04 #34
$query = mysql_query("SELECT * FROM scooter_kommentar GROUP BY scooter_id ORDER BY id DESC LIMIT 30");
while($row = mysql_fetch_array($query)) {
  echo $row['id'].' - '.$row['scooter_id'].'<br>';
}

Prøv den og prøv at vise mig den side du har testet det på.
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 16:04 #35
Sådan bliver det udskrevet:

16
9
8
7
6
4
3
2
10
5
1

Men når jeg skriver en ny kommentar så er den stadig:

16
9
8
7
6
4
3
2
10
5
1
Avatar billede schaefner Juniormester
22. juli 2003 - 16:06 #36
jamen, hvis du tilføjer en ny kommentar til et "scooter_id" som er der i forvejen, så vil der jo ikke ske noget nyt.
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 16:24 #37
Nej det er rigtigt men den stiller det jo ikke op som den skal, så hvis nu jeg har kommenteret scooter_id 5 så skal det se sådan ud:

5
16
9
8
7
6
4
3
2
10
1
Avatar billede zorg_86 Nybegynder
22. juli 2003 - 18:41 #38
Kan du hjælpe mig?
Avatar billede avminarm Juniormester
22. juli 2003 - 21:13 #39
jeg ville lave et datetime felt i min database og sortere efter dette, så vil du altid på de nyeste øverst
Avatar billede schaefner Juniormester
22. juli 2003 - 22:03 #40
avminarm >> Er det ikke rigeligt med et unikt id?
Avatar billede avminarm Juniormester
23. juli 2003 - 09:21 #41
jo men jeg tror at alle kommentarer gemmes med hver deres unikke id - fint nok, men han vil have en topliste over de seneste 30 kommentarer dette vil du få præcist med et datetime felt, men kan vist ikke altid stole på autoincrementede id's - hvad nu hvis to submitter samtidig.

Men jeg må samtidig indrømme at jeg stadigvæk har lidt svært ved at se om det er det zorg_86 vil ;o), men jeg tror altså at DISTINCT skal blandes i det!
Avatar billede zorg_86 Nybegynder
23. juli 2003 - 17:03 #42
Jeg har fundet ud af at jeg ikke skal bruge det, så alle der har skrevet som kommentar, skriv som svar hvis i vil have lidt af pointsne i har til kl. 20.00 så lukker jeg....
Avatar billede exp Juniormester
23. juli 2003 - 17:33 #43
kk
Avatar billede schaefner Juniormester
23. juli 2003 - 17:37 #44
tjap
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester