Avatar billede blanko Nybegynder
22. oktober 2004 - 19:11 Der er 11 kommentarer og
1 løsning

problemer med en while mysql forespørgsel

Hej

Jeg har følgende kode:

for($x=1;$x<11;$x++)
{
   
    $hent=mysql_query("select * from db_program where runde=$x")
            or die ("cant do it: ".mysql_error());

    while ($r=mysql_fetch_array($hent))
        {
          print('test'.$x.' : '.$r['navn'].'<br>');
        }

}




Problemet er at jeg kun kommer ind i while ($r=mysql_fetch_array($hent)) i første loop.
Avatar billede sukos Juniormester
22. oktober 2004 - 19:18 #1
Prøv
for($x=1;$x<11;$x++)
{
 
    $hent=mysql_query("select * from db_program where runde=$x")
            or die ("cant do it: ".mysql_error());

    $r=mysql_fetch_array($hent);
       
        print('test'.$x.' : '.$r['navn'].'<br>');
       
mysql_free_result($hent);
}
Avatar billede sukos Juniormester
22. oktober 2004 - 19:19 #2
Eller er der flere runder med samme $x ???
Avatar billede sukos Juniormester
22. oktober 2004 - 19:23 #3
Så er det måske nok blot at tilføje mysql_free_result($hent) ?
for($x=1;$x<11;$x++)
{
  print('test'.$x.' : ');
    $hent=mysql_query("select * from db_program where runde=$x")
            or die ("cant do it: ".mysql_error());

    while ($r=mysql_fetch_array($hent))
        {
          print($r['navn'].'<br>');
        }
mysql_free_result($hent);
}
Avatar billede blanko Nybegynder
22. oktober 2004 - 19:40 #4
Det hjalp umiddelbart ikke.  (dette er et udpluk af en større omgang kode).

Hvad gør mysql_free_result($hent);  ?
Avatar billede sukos Juniormester
22. oktober 2004 - 20:03 #5
Ved ikke lige hvad du vil, måske du kun har en runde at vise?

// henter unikt id
for($x=1;$x<5;$x++)
{

    $hent=mysql_query("select * from db_program where id=$x")
            or die ("cant do it: ".mysql_error());

    $r=mysql_fetch_array($hent);
     
        print('test'.$x.' : '.$r['navn'].'<br>');
     
mysql_free_result($hent);
}

echo"<p>";

// henter hvor runde er lig med $x
for($x=1;$x<4;$x++)
{

    $hent=mysql_query("select * from db_program where runde=$x")
            or die ("cant do it: ".mysql_error());

    while($r=mysql_fetch_array($hent))
    {     
        print('test'.$x.' : '.$r['navn'].'<br>');
    } 
mysql_free_result($hent);
}
Avatar billede blanko Nybegynder
22. oktober 2004 - 20:21 #6
db_program indeholder programmet for en cup-turnering.
Jeg ville lige udfylde en turnering igennem. Dvs jeg henter først alle kampene i runde X=1.

Laver lidt lodtræning om hvem der går videre....
laver næste runde med de tilbageværende...

og så kører løkken igen.
Men jeg får åbenbart ikke hentet runde 2,3,4...osv...
Avatar billede Slettet bruger
22. oktober 2004 - 21:30 #7
Prøv at vise os al koden inde i den for-løkke, for det lyder lidt som om du måske er kommet til at ændre $x et sted.
Avatar billede blanko Nybegynder
22. oktober 2004 - 22:19 #8
for($x=1;$x<11;$x++)
{
   
    $next_cuprunde=$x+1;

    print('runde '.$next_cuprunde.'<br>');

    $hentrunder=mysql_query("select * from cup_program where runde=$next_cuprunde")
            or die ("cant do it: ".mysql_error());


    while ($r=mysql_fetch_array($hentrunder))
        {
            $id_home=$r['id_home'];
            $id_away=$r['id_away'];
            $land=$r['land'];
            $score_home=rand(1,12);
            mysql_query("UPDATE cup_program SET score_home=".$score_home." WHERE id_home=".$r['id_home']." and runde=".$r['runde']."                 and season=$season")
                    or die ("cant do it - ".mysql_error());

            $score_away=rand(1,12);
            mysql_query("UPDATE cup_program SET score_away=".$score_away." WHERE id_away=".$r['id_away']." and runde=".$r['runde']."                 and season=$season")
                    or die ("cant do it - ".mysql_error());

            print($r[$x]['runde'].'&gt;'.$id_home.'-'.$id_away.' : '.$score_home.'-'.$score_away.'<br>');

            if($score_home>$score_away)
            {
               
               
                mysql_query("INSERT INTO cup_buffer(id_user,land) values ('".$id_home."','$land')")
                    or die ("cant do it -lav cup,buffer-".mysql_error());
            }
            elseif($score_home<$score_away)
            {
               
                mysql_query("INSERT INTO cup_buffer(id_user,land) values ('".$id_away."','$land')")
                    or die ("cant do it -lav cup,buffer-".mysql_error());
            }
            elseif($score_home==$score_away)
            {
                if($x%2==0)
                {
                   
                    mysql_query("INSERT INTO cup_program(season,runde,land,id_home,id_away) values ('$seasonen','$next_cuprunde','$land','".$id_home."','".$id_away."')")
                    or die ("cant do it -lav cup,program-".mysql_error());
                }
                else
                {
                    for($xx=0;$xx<12;$xx++)
                    {
                        if($r['tegn_home'][$xx]!=$tegn['tegn_away'][$xx])
                        {
                            if($r['tegn_home'][$xx]==$de_rigtige[$xx])
                            {
                               
                                mysql_query("INSERT INTO cup_buffer(id_user,land) values ('".$id_home."','$land')")
                                    or die ("cant do it -lav cup,buffer-".mysql_error());
                                $xx=12;
                            }
                            elseif($r['tegn_away'][$xx]==$de_rigtige[$xx])
                            {
                               
                                mysql_query("INSERT INTO cup_buffer(id_user,land) values ('".$id_away."','$land')")
                                    or die ("cant do it -lav cup,buffer-".mysql_error());
                                $xx=12;
                            }
                            else
                            {
                                $alarm=$true;
                            }
                               
                        }
                    }

                    if($alarm==true)
                    {
                        $alarm2=false;
                        $lodtrek=rand(1,2);
                       
                        print('Lodtræking : '.$lodtrek.'<br>');
                        if($lodtrek==1) $vinder=$id_home;
                        elseif($lodtrek==2) $vinder=$id_away;
                        else
                        {
                            print('ALARM !!!!    ingen vinder...lodtrækning er gået galt<br>');
                            $alarm2=true;
                        }

                        if($alarm2=false)
                        {
                           
                            mysql_query("INSERT INTO cup_buffer(id_user,land) values ('".$vinder."','$land')")
                                or die ("cant do it -lav cup,buffer-".mysql_error());
                        }
                    }
                       
                               
                }

            }




        }

        if(($x%2!=0) and ($x>2))
        {
            for($i=1;$i<=$max_lande;$i++)
            {
                if($i<10) $land='0'.$i;
                else $land=$max_lande;

   
                $puljen=mysql_query("SELECT * FROM cup_buffer where land='$land' order by land")
                    or die (mysql_error());
                $xx=0;
                while ($hb=mysql_fetch_array($puljen))
                {
                    $cupbuffer[$land][$xx]=$hb['id_user'];
                    $xx++;
   
                }


                shuffle($cupbuffer[$land]);

                print('test size: '.sizeof($cupbuffer[$land]).'<br>');

                for($xx=0;$xx<sizeof($cupbuffer[$land]);$xx++)
                {
   
                    mysql_query("INSERT INTO cup_program(season,runde,land,id_home,id_away) values ('$season','$next_cuprunde','$land','".$cupbuffer[$land][$xx]."','".$cupbuffer[$land][$xx+1]."')")
                            or die ("cant do it -lav cup,program-".mysql_error());
                    $xx++;
                }


            }

/*            mysql_query("DELETE FROM cup_buffer")
                    or die ("cant do it misc - ".mysql_error());
*/        }

   
}
Avatar billede Slettet bruger
22. oktober 2004 - 22:57 #9
Det er godt nok lidt svært at overskue nøjagtigt, hvad der foregår, men det ser ikke umiddelbart ud til at du får ændret $x inde i løkken. (Til gengæld forøger du $xx nogle gange inde i lignende løkker, men det er tydeligvis med vilje. Jeg ville nok have skrevet $x+=2 i for-parametrene i stedet for at have to forhøjninger af samme variabel.)

Prøv at indsætte nogen debug-linier rundt omkring, for at se, hvilke steder i programmet, den kommer forbi.
Avatar billede blanko Nybegynder
23. oktober 2004 - 08:59 #10
har fundet fejlen....selvfølgelig en dumrian fejl....

Ellers mange tak hintsene....
Avatar billede blanko Nybegynder
23. oktober 2004 - 17:04 #11
lukker
Avatar billede blanko Nybegynder
23. oktober 2004 - 17:06 #12
Det kan jeg ikke....nå..
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