Avatar billede TiHs Nybegynder
06. maj 2008 - 11:20 Der er 15 kommentarer og
1 løsning

hent fra sql tabel med extract

Hej eksperter.
Jeg henter lige nu en score liste fra en tabel med følgende
kode:

<?php
include("../dbconnect.php");
$getscor = mysql_query("select * from scor ORDER BY maal DESC, id limit 7");
while($r=mysql_fetch_array($getscor)){
extract($r);
echo "<b><font color=\"black\">$navn</font><br><BR><font size=\"5px\">$maal</font></b><br><br>";

}
php?>

Der er så en person som ligger disse ind i tabellen. Hvis en
score skal ændres skriver han bare samme navn igen med den
nye score så navnet findes to gange med forskellig score.

Mit spm.

Hvordan ændre jeg denne kode så når den henter disse informationer
ud fra tabellen KUN skal tage personen med Èn gang men med
den største score = maal ??
Avatar billede jakobdo Ekspert
06. maj 2008 - 12:20 #1
Måske noget i stil med:
SELECT MAX(score) FROM scor GROUP BY navn
Avatar billede TiHs Nybegynder
06. maj 2008 - 12:48 #2
Det virkede ikke:

<?php
include("../dbconnect.php");
$getscor = mysql_query("SELECT MAX(maal) from scor ORDER BY maal DESC, id limit 7");
while($r=mysql_fetch_array($getscor)){
extract($r);
echo "<b><font color=\"black\">$navn</font><br><BR><font size=\"5px\">$maal</font></b><br><br>";

}
php?>
Avatar billede jakobdo Ekspert
06. maj 2008 - 12:54 #3
Du har ikke GROUP BY nogle steder.
Avatar billede TiHs Nybegynder
06. maj 2008 - 13:32 #4
Mener du:

<?php
include("../dbconnect.php");
$getscor = mysql_query("SELECT MAX(maal) GROUP by navn from scor ORDER BY maal DESC, id limit 7");
while($r=mysql_fetch_array($getscor)){
extract($r);
echo "<b><font color=\"black\">$navn</font><br><BR><font size=\"5px\">$maal</font></b><br><br>";

}
php?>
Avatar billede jakobdo Ekspert
06. maj 2008 - 14:03 #5
Nej, prøv at test denne sql:

SELECT MAX(maal) from scor GROUP by navn ORDER BY maal DESC, id limit 7
Avatar billede TiHs Nybegynder
06. maj 2008 - 14:53 #6
echo bliver bare blank når jeg gør det på den måde ...

Her er min tabel iøvrigt:

CREATE TABLE `scor` (
  `id` tinyint(4) NOT NULL auto_increment,
  `navn` text NOT NULL,
  `maal` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

--
-- Data dump for tabellen `scor`
--

INSERT INTO `scor` VALUES (18, 'Kim Tuure', '4');
INSERT INTO `scor` VALUES (2, 'Allan Bill', '2');
INSERT INTO `scor` VALUES (1, 'Kim Tuure', '3');
INSERT INTO `scor` VALUES (3, 'Tim Sørensen', '2');
INSERT INTO `scor` VALUES (4, 'Brian Aagesen', '1');
INSERT INTO `scor` VALUES (5, 'Jesper Mortensen', '1');
INSERT INTO `scor` VALUES (6, 'Anders Petersen', '1');
INSERT INTO `scor` VALUES (7, 'Niels Pedersen', '1');

med denne sql:
<?php
include("../dbconnect.php");
$getscor = mysql_query("select * from scor ORDER BY maal DESC, id limit 7");
while($r=mysql_fetch_array($getscor)){
extract($r);
echo "<b><font color=\"black\">$navn</font><br><BR><font size=\"5px\">$maal</font></b><br><br>";

}
php?>

bliver udfaldet sådan her:

***************
Kim Tuure (18)

4 mål
***************
***************
Kim Tuure (1)

3 mål
***************
***************
Allan Bill (2)

2 mål
***************
***************
Tim Sørensen (3)

2 mål
***************
***************
Brian Aagesen (4)

1 mål
***************
***************
Jesper Mortensen (5)

1 mål
***************
***************
Anders Petersen (6)

1 mål
***************

Som du kan se viser den ham Kim 2 gange men den skal kun tage den med
hvor hans mål er størst ...
Avatar billede TiHs Nybegynder
06. maj 2008 - 14:54 #7
tallene i () er bare mine id'er hvis hvis jeg istedet ville lave en s
slet funktion .... så de betyder ikke så meget
Avatar billede jakobdo Ekspert
06. maj 2008 - 15:35 #8
TEST denne SQL

SELECT MAX(maal) from scor GROUP by navn ORDER BY maal DESC, id limit 7

I phpmyadmin.
Avatar billede TiHs Nybegynder
06. maj 2008 - 15:40 #9
Giver mig følgende:

<-T->
MAX(maal)
4
2
2
1
1
1
1
Avatar billede jakobdo Ekspert
06. maj 2008 - 15:43 #10
put så navn ind imellem SELECT og MAX, så det bliver SELECT navn, MAX(maal) from.......
Avatar billede TiHs Nybegynder
06. maj 2008 - 16:04 #11
Hmmm....

viser nu:
***************
Kim Tuure

mål
***************
***************
Allan Bill

mål
***************
***************
Tim Sørensen

mål
***************
***************
Brian Aagesen

mål
***************
***************
Jesper Mortensen

mål
***************
***************
Anders Petersen

mål
***************
***************
Niels Pedersen

mål
***************

altså uden maal ... og det er denne her fulde kode:

<?php
include("../dbconnect.php");
$getscor = mysql_query("SELECT navn, MAX(maal)
FROM scor
GROUP BY navn
ORDER BY maal DESC , id
LIMIT 7
");
while($r=mysql_fetch_array($getscor)){
extract($r);
echo "***************<br><b><font color=\"black\">$navn </font></font><br><BR><font size=\"5px\">$maal mål</font></b><br>***************<br>";

}
php?>
Avatar billede TiHs Nybegynder
06. maj 2008 - 16:38 #12
Så nu må det vel være noget i denne kode der ikke stemmer:

while($r=mysql_fetch_array($getscor)){
extract($r);
echo "***************<br><b><font color=\"black\">$navn </font></font><br><BR><font size=\"5px\">$maal mål</font></b><br>***************<br>";

}
Avatar billede jakobdo Ekspert
06. maj 2008 - 17:53 #13
Ret din sql til:
SELECT navn, MAX(maal) AS newMaal
FROM scor
GROUP BY navn
ORDER BY maal DESC , id
LIMIT 7
Og din php kode skal $maal rettes til: $newMaal
Avatar billede TiHs Nybegynder
07. maj 2008 - 10:30 #14
Takker ... det var super. Nu spiller det :o)
Send svar :o))
Avatar billede jakobdo Ekspert
07. maj 2008 - 10:59 #15
Svar!
Avatar billede jakobdo Ekspert
07. maj 2008 - 11:30 #16
Takker for point.
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