25. november 2009 - 12:19
Der er
15 kommentarer og 2 løsninger
hjælp til oprydning af kode php,mysql
Jeg har fået denne kode stykket sammen og den virker som den skal, men jeg kan vist ikke komme uden om, at det nok ikke er den smarteste måde det er bygget op på, er der en der gider kigge på - har selv forsøgt med noget join i mine sql sætninger men det lykkedes ikke rigtigt... $sql = "SELECT *, @rownum:=@rownum+1 as rank FROM (SELECT * FROM eventresult WHERE EventId = '1' AND FinishTime != 'null' ORDER BY FinishTime ASC) user_rank, (SELECT @rownum:=0) r"; $query = mysqli_query($con,$sql); print "<table border=\"1\" width=\"800\"> <tr> <td>deltagernr.</td><td>navn</td><td>sluttid</td><td>placering</td><td>køn placering</td><td>køn</td><td>Klasse</td> </tr>"; while($result = mysqli_fetch_array($query)){ print "<tr>"; print " <td>".$result['Runnerid']."</td> <td>".$result['con_Fornavn']." ".$result['con_Efternavn']."</td> <td>".$result['FinishTime']."</td> <td>".$result['rank']."</td>"; $sql1 = "SELECT *, @rownum:=@rownum+1 as rank FROM (SELECT id,FinishTime FROM eventresult WHERE EventId = '1' AND FinishTime != 'null' AND con_koen = 'k' ORDER BY FinishTime ASC) user_rank, (SELECT @rownum:=0) r"; $query1 = mysqli_query($con,$sql1); while($result1 = mysqli_fetch_array($query1)){ if($result['con_koen'] == 'k' && $result['id'] == $result1['id']){ print "<td>".$result1['rank']."</td>"; } } $sql2 = "SELECT *, @rownum:=@rownum+1 as rank FROM (SELECT id,FinishTime FROM eventresult WHERE EventId = '1' AND FinishTime != 'null' AND con_koen = 'm' ORDER BY FinishTime ASC) user_rank, (SELECT @rownum:=0) r"; $query2 = mysqli_query($con,$sql2); while($result2 = mysqli_fetch_array($query2)){ if($result['con_koen'] == 'm' && $result['id'] == $result2['id']){ print "<td>".$result2['rank']."</td>"; } } print "<td>".$result['con_koen']."</td><td>".$result['con_Klasse']."</td>"; print "</tr>"; }; print "</table>";
Annonceindlæg fra Barco
25. november 2009 - 12:41
#1
Hej, så vidt jeg kan se skal du kun lave en af de to sidste sql sætninger, alt efter om den resultatliste du kigger på er mænd eller kvinder. Så lav en if/else sætning på baggrund af $result["con_koen"]. Hvis denne er k, fyr da den første af, er den m, fyr da den anden af. Brug desuden en where clause i din query for at sikre at id'et er det samme. Så behøver du ikke hente alle de resultater ud hvor det ikke er. Der ville jeg i hvert fald starte.
25. november 2009 - 13:49
#2
Kan ikke teste om det her giver nogle fejl, men hvis det gør må du lige paste dem. Så vidt jeg kunne se tjekkede du allerede for con_koen i din SQL streng, så jeg tillod mig at fjerne dine if-statements og tilføje et ID tjek også. Prøv det:
<?php $sql = "SELECT *, @rownum:=@rownum+1 as rank FROM (SELECT * FROM eventresult WHERE EventId = '1' AND FinishTime != 'null' ORDER BY FinishTime ASC) user_rank, (SELECT @rownum:=0) r"; $sql2 = "SELECT *, @rownum:=@rownum+1 as rank FROM (SELECT id,FinishTime FROM eventresult WHERE id=%d EventId = '1' AND FinishTime != 'null' AND (con_koen = 'k' OR con_koen = 'm') ORDER BY FinishTime ASC) user_rank, (SELECT @rownum:=0) r"; print("<table border=\"1\" width=\"800\">") $query = mysqli_query($conn, $sql); while ($query && $row = mysqli_fetch_assoc($query)) { $second_query = mysqli_query($conn, sprintf($sql2, $row["id"])); $ranks = ""; while ($second_query && $row2 = mysqli_fetch_assoc($second_query)) { $ranks .= sprintf("<td>%s</td>", $row2["rank"]); } if ($second_query) mysqli_free_result($second_query); $rec = <<< EOFILE <tr> <td>$result["Runnerid"]</td> <td>$result["con_Fornavn"] $result["con_Efternavn"]</td> <td>$result["FinishTime"]</td> <td>$result["rank"]</td> %s <td>$result["con_koen"]</td> <td>$result["con_Klasse"]</td> </tr> EOFILE; printf($rec, $ranks); } if ($query) mysqli_free_result($query); print("</table>") ?>
25. november 2009 - 13:51
#3
Hov, det gik lidt hurtigt. Husk at rette $result til $row i EOFILE.
25. november 2009 - 14:35
#4
Det ser noget bedre ud, men får denne fejl Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in line 19
25. november 2009 - 14:41
#5
hov fandt fejlen :) Men der mangler en kollone i tabellen nu, den der hedder køn placering
25. november 2009 - 14:54
#6
Prøv at lave en var_dump($row) - bare så vi er sikre på den overhovedet er med i det resultat du får fra databasen.
25. november 2009 - 15:06
#7
Jeg kan sq ikke regne ud hvordan det resultat skal blive fundet ud fra det her :( men var dump gir følgende: array(34) { ["id"]=> string(1) "6" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "00:40:25" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(5) "Bente" ["con_Efternavn"]=> string(6) "Hansen" ["con_Klub"]=> string(6) "Struer" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(3) "565" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "k" ["con_alder"]=> string(2) "55" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "1" } 565 Bente Hansen 00:40:25 1 k 100 km array(34) { ["id"]=> string(1) "7" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "00:58:56" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(4) "Erik" ["con_Efternavn"]=> string(6) "Jensen" ["con_Klub"]=> string(6) "Struer" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(3) "897" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "m" ["con_alder"]=> string(2) "36" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "2" } 897 Erik Jensen 00:58:56 2 m 100 km array(34) { ["id"]=> string(1) "8" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:01:56" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(4) "Hans" ["con_Efternavn"]=> string(8) "Andersen" ["con_Klub"]=> string(6) "Struer" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(3) "698" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "m" ["con_alder"]=> string(2) "45" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "3" } 698 Hans Andersen 01:01:56 3 m 100 km array(34) { ["id"]=> string(2) "10" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:12:47" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(5) "Palle" ["con_Efternavn"]=> string(12) "Appelsinvand" ["con_Klub"]=> string(4) "Vemb" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(3) "356" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "m" ["con_alder"]=> string(2) "44" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "4" } 356 Palle Appelsinvand 01:12:47 4 m 100 km array(34) { ["id"]=> string(1) "1" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:20:50" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(6) "Thomas" ["con_Efternavn"]=> string(8) "Thomasen" ["con_Klub"]=> string(7) "gørding" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(1) "1" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "m" ["con_alder"]=> string(2) "31" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "5" } 1 Thomas Thomasen 01:20:50 5 m 100 km array(34) { ["id"]=> string(1) "2" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:25:49" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(7) "Karsten" ["con_Efternavn"]=> string(3) "Noe" ["con_Klub"]=> string(9) "Holstebro" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(1) "2" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "m" ["con_alder"]=> string(2) "38" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "6" } 2 Karsten Noe 01:25:49 6 m 100 km array(34) { ["id"]=> string(1) "3" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:28:41" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(11) "Anette Kjær" ["con_Efternavn"]=> string(6) "Jensen" ["con_Klub"]=> string(4) "Vemb" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(1) "3" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "k" ["con_alder"]=> string(2) "30" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "7" } 3 Anette Kjær Jensen 01:28:41 7 k 100 km array(34) { ["id"]=> string(2) "11" ["Guntime"]=> string(8) "00:00:00" ["StartTime"]=> string(8) "00:00:00" ["FinishTime"]=> string(8) "01:56:47" ["FinishTime_1"]=> string(8) "00:00:00" ["FinishTime_2"]=> string(8) "00:00:00" ["FinishTime_3"]=> string(8) "00:00:00" ["FinishTime_4"]=> string(8) "00:00:00" ["FinishTime_5"]=> string(8) "00:00:00" ["SplitTime_1"]=> string(8) "00:00:00" ["SplitTime_2"]=> string(8) "00:00:00" ["SplitTime_3"]=> string(8) "00:00:00" ["SplitTime_4"]=> string(8) "00:00:00" ["SplitTime_5"]=> string(8) "00:00:00" ["SplitTime_6"]=> string(8) "00:00:00" ["SplitTime_7"]=> string(8) "00:00:00" ["SplitTime_8"]=> string(8) "00:00:00" ["SplitTime_9"]=> string(8) "00:00:00" ["SplitTime_10"]=> string(8) "00:00:00" ["SplitTime_11"]=> string(8) "00:00:00" ["SplitTime_12"]=> string(8) "00:00:00" ["SplitTime_13"]=> string(8) "00:00:00" ["SplitTime_14"]=> string(8) "00:00:00" ["SplitTime_15"]=> string(8) "00:00:00" ["con_Fornavn"]=> string(5) "Jytte" ["con_Efternavn"]=> string(6) "Hilden" ["con_Klub"]=> string(4) "Vemb" ["con_Klasse"]=> string(6) "100 km" ["Runnerid"]=> string(2) "23" ["EventId"]=> string(1) "1" ["con_koen"]=> string(1) "k" ["con_alder"]=> string(2) "66" ["@rownum:=0"]=> string(1) "0" ["rank"]=> string(1) "8" }
25. november 2009 - 15:11
#8
Det kaldes debugging. :b Nu ved vi at det ikke er dit SQL statement den er gal med, men kan godt nok ikke lige se hvorfor den ikke skriver "con_koen" ud. Virker underligt. Hmm..
25. november 2009 - 15:15
#9
hehe ja jeg har vist en del at lære endnu :)
25. november 2009 - 15:16
#10
Har du prøvet at fjerne %s i $rec og $ranks i printf()? Og har du Google Wave? Så kan vi debugge det der i stedet for at poste en masse indlæg her...
25. november 2009 - 15:19
#11
Prøv at erstatte
$rec = <<< EOFILE <tr> <td>$result["Runnerid"]</td> <td>$result["con_Fornavn"] $result["con_Efternavn"]</td> <td>$result["FinishTime"]</td> <td>$result["rank"]</td> %s <td>$result["con_koen"]</td> <td>$result["con_Klasse"]</td> </tr> EOFILE; printf($rec, $ranks); ... med:
$html = <<< EOFILE <tr> <td>$row["Runnerid"]</td> <td>$row["con_Fornavn"] $row["con_Efternavn"]</td> <td>$row["FinishTime"]</td> <td>$row["rank"]</td> $ranks <td>$row["con_koen"]</td> <td>$row["con_Klasse"]</td> </tr> EOFILE; print($html);
25. november 2009 - 15:31
#12
havde ikke hørt om google wave men det vil jeg da undersøge.. jeg har byttet nu men desværre med samme resultat :(
25. november 2009 - 15:35
#13
irriterende.. men det er bare at prøve dig frem med at tage fra og til, evt. prøve forskellige metoder. Det er svært at hjælpe dig uden at jeg selv kan sidde og prøve nogle ting :<
25. november 2009 - 15:38
#14
forresten, jeg kan invite dig til google wave hvis du er interesseret.. bare send den email du har en google konto med :) min profil > send besked
25. november 2009 - 15:50
#15
er hermed gjort men smid et svar for din hjælp
25. november 2009 - 16:05
#16
Her.. Fik du løst det?
25. november 2009 - 16:31
#17
nej desværre, ik endnu
Vi tilbyder markedets bedste kurser inden for webudvikling