Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 14:38 Der er 14 kommentarer og
1 løsning

MySQL sortere noget fra i tabel med variabel

Hejsa
Jeg sidder mit et clanscript som skal sortere alle de kampe fra som ikke er spillet og hvor resultatet derfor er 0 - 0
men jeg kan ikke få det til at virke, kan i hjælpe mig! 

<?php
include("db_connect.php");
$win_color = "green";
$lose_color = "red";
$draw_color = "gray";
    $query = "SELECT kamp2_modstandcifre, kamp2_egnecifre, kamp1_modstandcifre, kamp1_egnecifre FROM clanwar_kampe WHERE ((kamp1_egnecifre = 0) AND (kamp1_modstandcifre = 0) AND (kamp2_egnecifre = 0) AND (kamp2_modstandcifre = 0))";
    $result = mysql_query($query);
    $number = mysql_num_rows($result) or die ("Ingen spillede kampe med resultatet 0-0 >> Forespørgsel fejlede!");
    $row = mysql_fetch_array($result);
    $map1ecifre = $row['kamp1_egnecifre'];
    $map1mcifre = $row['kamp1_modstandcifre'];
    $map2ecifre = $row['kamp2_egnecifre'];
    $map2mcifre = $row['kamp2_modstandcifre'];
    $kampresultat = $map1ecifre + $map1mcifre + $map2ecifre + $map2mcifre;

    $query = "SELECT * WHERE (".$kampresultat." <> 0) ORDER BY dato DESC LIMIT 5";
    $result = mysql_query($query);
    $number = mysql_num_rows($result) or die ("Ingen spillede kampe >> Forespørgsel fejlede!");
    $i = "0";  while ($i < $number)
{
    $row = mysql_fetch_array($result);
    $id = $row['id'];
    $dato = $row['dato'];
    $kamp = $row['kamp'];
    $m_tag = $row['modstander_tag'];
//  $m_navn = $row['modstander_navn'];
    $m_url = $row['modstander_url'];
//    $bane1 = $row['map1'];
//    $bane2 = $row['map2'];
    $map1ecifre = $row['kamp1_egnecifre'];
    $map1mcifre = $row['kamp1_modstandcifre'];
    $map2ecifre = $row['kamp2_egnecifre'];
    $map2mcifre = $row['kamp2_modstandcifre'];
  //  $kamprep = $row['kampreport'];
    $egennavn = $row['egenclan'];
    $result1 = $map1ecifre + $map2ecifre;
    $result2 = $map1mcifre + $map2mcifre;
    if ($result1 > $result2) {
        $font = $win_color;
    }
    if ($result1 < $result2) {
      $font = $lose_color;
    }
    if ($result1 == $result2) {
      $font = $draw_color;
    }
    echo "<center><table border=1 bordercolor=#000000 cellspacing=1 cellpadding=5 width=96%>";
    echo "<tr>";
    echo "<td align=left><b>&nbsp;$dato&nbsp;</b></td>";
    echo "<td align=left><b>&nbsp;$egennavn&nbsp;vs:&nbsp<a href=\"$m_url\" target=\"_blank\">$m_tag</a></b></td>";
    echo "<td align=right><b>&nbsp;<font color =\"$font\">$result1 : $result2&nbsp;</font></b></td>";
    echo "<td align=left><b>&nbsp;$kamp&nbsp;</b></td>";
    echo"</tr>";
    $i++;
}
    echo"</table>";
mysql_close();
?>
Avatar billede exp Juniormester
28. oktober 2003 - 14:42 #1
$query = "SELECT kamp2_modstandcifre, kamp2_egnecifre, kamp1_modstandcifre, kamp1_egnecifre FROM clanwar_kampe WHERE ((kamp1_egnecifre <> 0) AND (kamp1_modstandcifre <> 0) AND (kamp2_egnecifre <> 0) AND (kamp2_modstandcifre <> 0))";
Avatar billede exp Juniormester
28. oktober 2003 - 14:42 #2
nej vent...

$query = "SELECT kamp2_modstandcifre, kamp2_egnecifre, kamp1_modstandcifre, kamp1_egnecifre FROM clanwar_kampe WHERE ((kamp1_egnecifre == 0) AND (kamp1_modstandcifre == 0) AND (kamp2_egnecifre == 0) AND (kamp2_modstandcifre == 0))";

måske...
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 14:43 #3
Din første sql ser fin ud - men du henter kun de 4 tal. Skal du ikke have flere ting ud.

mysql_num_rows($result) afleveret et tal, 0 eller større, og giver typisk ikke fejl (med
mindre din oprindelige SQL var fejlagtig). Du skal derfor blot teste for 0.

Så skal du løbe resulatet igennem, hvis der er flere end 0. Det skal du gøre med
en while-løkke.

Så kan jeg ikke se du skal gøre mere. Din anden sqlsætning er noget vrøvl
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 14:44 #4
ups, sql#2 er rettet til:
$query = "SELECT * FROM clanwar_kampe WHERE (".$kampresultat." <> 0) ORDER BY dato DESC LIMIT 5";
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 14:46 #5
Din sql 2 giver fortsat ingen mening
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 14:47 #6
hvorfor ikke?
den henter alt * fra tabellen clanwar_kampe udner den forudsætning at variablen kampresultat er-forskellig-fra <> 0 den sortere efter dato aftagende med en begrænsning på 5
hvad er der galt i det?
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 14:48 #7
Du har ingen kolonnenavne i din where. Derfor. Og du skal slet ikke have den.
Se min kommentar fra før.
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 14:51 #8
variablen $kampresultat er noget jeg finder med første sql-sætning og som jeg bruger som WHERE i anden sql-sætning! kan man ikke det?
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 14:53 #9
Du har ingen kolonnenavne i din where
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 14:54 #10
jeg har nu lagt den samme while på sqæ#1 som ligger på sql#2

$query = "SELECT kamp2_modstandcifre, kamp2_egnecifre, kamp1_modstandcifre, kamp1_egnecifre FROM clanwar_kampe WHERE ((kamp1_egnecifre = 0) AND (kamp1_modstandcifre = 0) AND (kamp2_egnecifre = 0) AND (kamp2_modstandcifre = 0))";
    $result = mysql_query($query);
    $number = mysql_num_rows($result) or die ("Ingen spillede kampe med resultatet 0-0 >> Forespørgsel fejlede!");
    $i = "0"; while ($i < $number)
{
    $row = mysql_fetch_array($result);
    $map1ecifre = $row['kamp1_egnecifre'];
    $map1mcifre = $row['kamp1_modstandcifre'];
    $map2ecifre = $row['kamp2_egnecifre'];
    $map2mcifre = $row['kamp2_modstandcifre'];
    $kampresultat = $map1ecifre + $map1mcifre + $map2ecifre + $map2mcifre;
    $i++;
}
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 14:57 #11
Ja, det er fint. Du kunne jo prøve at læse alt hvad jeg skriver...

Så mangler du vel bare nogle udskrifter - eller hvad?
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 15:00 #12
problemet ligger nu i sql#2 den skriver bare Ingen spillede kampe >> Forespørgsel fejlede

Jeg vil have den til at sortere alle de kampe fra hvor variablen kampresultat = 0
derefter skal den tage alle andre kampe og smide dem i tabellen!
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 15:30 #13
har fundet ud af det!
Koden skal se sådan her ud, til dem der er interesseret! Erik! Du havde ret :P

<?php
include("db_connect.php");
$win_color = "green";
$lose_color = "red";
$draw_color = "gray";
    $query = "SELECT * FROM clanwar_kampe WHERE (kamp1_egnecifre + kamp1_modstandcifre + kamp2_egnecifre + kamp2_modstandcifre <> 0) ORDER BY dato DESC LIMIT 5";
    $result = mysql_query($query);
    $number = mysql_num_rows($result) or die ("Ingen spillede kampe >> Forespørgsel fejlede!");
    $i = "0";  while ($i < $number)
    {
    $row = mysql_fetch_array($result);
    $id = $row['id'];
    $dato = $row['dato'];
    $kamp = $row['kamp'];
    $m_tag = $row['modstander_tag'];
//  $m_navn = $row['modstander_navn'];
    $m_url = $row['modstander_url'];
//    $bane1 = $row['map1'];
//    $bane2 = $row['map2'];
    $map1ecifre = $row['kamp1_egnecifre'];
    $map1mcifre = $row['kamp1_modstandcifre'];
    $map2ecifre = $row['kamp2_egnecifre'];
    $map2mcifre = $row['kamp2_modstandcifre'];
  //  $kamprep = $row['kampreport'];
    $egennavn = $row['egenclan'];
    $result1 = $map1ecifre + $map2ecifre;
    $result2 = $map1mcifre + $map2mcifre;
    if ($result1 > $result2) {
        $font = $win_color;
    }
    if ($result1 < $result2) {
      $font = $lose_color;
    }
    if ($result1 == $result2) {
      $font = $draw_color;
    }
    echo "<center><table border=1 bordercolor=#000000 cellspacing=1 cellpadding=5 width=96%>";
    echo "<tr>";
    echo "<td align=left><b>&nbsp;$dato&nbsp;</b></td>";
    echo "<td align=left><b>&nbsp;$egennavn&nbsp;vs:&nbsp<a href=\"$m_url\" target=\"_blank\">$m_tag</a></b></td>";
    echo "<td align=right><b>&nbsp;<font color =\"$font\">$result1 : $result2&nbsp;</font></b></td>";
    echo "<td align=left><b>&nbsp;$kamp&nbsp;</b></td>";
    echo"</tr>";
    $i++;
}
    echo"</table>";
mysql_close();
?>
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 17:21 #14
...bortset fra du nu finder spillede kampe - du startede med at ville
have de ikke-spillede ?? ;)
Avatar billede kbhadsten Nybegynder
28. oktober 2003 - 18:19 #15
ja det er rigtigt, men det var fordi jeg ikke have tænkt mig om! det er sådan her det skal laves, og det virker :D så nu er jeg glad !
tak for hjælpen
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