Avatar billede hypofysen Nybegynder
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>";
Avatar billede FrederikBache Nybegynder
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.
Avatar billede preppydude Nybegynder
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>")
?>
Avatar billede preppydude Nybegynder
25. november 2009 - 13:51 #3
Hov, det gik lidt hurtigt. Husk at rette $result til $row i EOFILE.
Avatar billede hypofysen Nybegynder
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
Avatar billede hypofysen Nybegynder
25. november 2009 - 14:41 #5
hov fandt fejlen :)

Men der mangler en kollone i tabellen nu, den der hedder køn placering
Avatar billede preppydude Nybegynder
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.
Avatar billede hypofysen Nybegynder
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" }
Avatar billede preppydude Nybegynder
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..
Avatar billede hypofysen Nybegynder
25. november 2009 - 15:15 #9
hehe ja jeg har vist en del at lære endnu :)
Avatar billede preppydude Nybegynder
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...
Avatar billede preppydude Nybegynder
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);
Avatar billede hypofysen Nybegynder
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 :(
Avatar billede preppydude Nybegynder
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 :<
Avatar billede preppydude Nybegynder
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
Avatar billede hypofysen Nybegynder
25. november 2009 - 15:50 #15
er hermed gjort
men smid et svar for din hjælp
Avatar billede preppydude Nybegynder
25. november 2009 - 16:05 #16
Her.. Fik du løst det?
Avatar billede hypofysen Nybegynder
25. november 2009 - 16:31 #17
nej desværre, ik endnu
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