Avatar billede sito Nybegynder
09. februar 2007 - 10:06 Der er 8 kommentarer

Select statement returnerer intet

Hej

Jeg forsøger at opbygge en database over vin jeg har smagt, og har lavet en tilhørende side (vinkaelder.com).

Jeg har lavet en select fra min tabel 'Frankrig', der indeholder vin af typen 'roed' eller 'hvid', som ser ud som følger:

<?php
// Her hentes alle franske rødvine i databasen
$strSQL="SELECT navn, aargang FROM frankrig WHERE type='roed'";
$resultat = executeSQL($strSQL);
           
while ($querydata = mysql_fetch_array($resultat)){
echo "<a href=\"specifikation.php?navn=$navn\">".$querydata[0].", ".$querydata[1]."</a>";
}

?>

Men den returnerer ingenting??

Det skal lige siges, at executeSQL er en bagvedliggende funktion, som burde fungere..

Håber i kan hjælpe.
Avatar billede sw_red_6 Nybegynder
09. februar 2007 - 10:22 #1
kunne vi se executeSQL bare for at udelukke den...
Har du mulighed for at teste den query direkte i DB evt. vha. phpmyadmin?
hvis du har hvad er så resultatet der?
Avatar billede sito Nybegynder
09. februar 2007 - 10:26 #2
Execute SQL:

<?
    //funktion, som opretter forbindelse til databasen, og sender en SQL-kommando ($strSQL) til denne
    function executeSQL($strSQL)
    {
   
    $database = "vinkaelder_com"; //variablen $database defineres. Navnet på databasen.
    $host = "localhost"; //variablen $host defineres. Hvor min database ligger.
    $username = "vinkaelder_com"; //variablen $username defineres. Det brugernavn jeg har til databasen.
    $password = "********"; //$variablen $password defineres. Det password jeg har til databasen.

    //der oprettes forbindelse til databasen via $connect, og der udskrives en fejl
    //til brugeren hvis der ikke kan oprettes forbindelse (via mysql_error)
    $connect = mysql_connect ($host, $username, $password) or die (mysql_error());

       

    //der vælges den rigtige database, og der udskrives en fejl til brugeren,
    //hvis ikke databasen kunne vælges (via mysql_error)
    $select = mysql_select_db($database, $connect) or die (mysql_error());
       
    /*variablen $resultat defineres som en forespørgsel til databasen.
    Har argumenterne $strSQL, som hentes i en ekstern fil, og $connect,
    som er den åbne forbindelse vi har til databasen.
    Skulle brugerens forespørgsel ikke blive gennemført udskrives en fejlmeddelelse
    via mysql_error*/       
    $resultat = mysql_query($strSQL, $connect) or die (mysql_error());

    //forbindelsen til databasen lukkes, og hvis det ikk er muligt udskrives
    //fejlmeddelelse via mysql_error
    $luk = mysql_close($connect) or die (mysql_error());
   
    return $resultat; //returnerer variablen $resultat
   
    }

?>

Hvis jeg kører queryen i phpmyadmin ser det fint ud. Det virker måske som om jeg ikke får kontakt til databasen ??
Avatar billede sw_red_6 Nybegynder
09. februar 2007 - 10:34 #3
aha, der har vi synderen.. du kan ikke lukke for forbindelsen til databasen og derefter regne med at kunne hente data ud..
du skal have flyttet $luk = mysql_close($connect) or die (mysql_error()); ud af funktionen ellers kommer det aldrig til at virke..

prøv det her:
<?php
// Her hentes alle franske rødvine i databasen
$strSQL="SELECT navn, aargang FROM frankrig WHERE type='roed'";
$resultat = executeSQL($strSQL);
         
while ($querydata = mysql_fetch_array($resultat)){
echo "<a href=\"specifikation.php?navn=$navn\">".$querydata[0].", ".$querydata[1]."</a>";
}
    //forbindelsen til databasen lukkes, og hvis det ikk er muligt udskrives
    //fejlmeddelelse via mysql_error
    $luk = mysql_close($connect) or die (mysql_error());
?>

Execute SQL:

<?
    //funktion, som opretter forbindelse til databasen, og sender en SQL-kommando ($strSQL) til denne
    function executeSQL($strSQL)
    {
 
    $database = "vinkaelder_com"; //variablen $database defineres. Navnet på databasen.
    $host = "localhost"; //variablen $host defineres. Hvor min database ligger.
    $username = "vinkaelder_com"; //variablen $username defineres. Det brugernavn jeg har til databasen.
    $password = "********"; //$variablen $password defineres. Det password jeg har til databasen.

    //der oprettes forbindelse til databasen via $connect, og der udskrives en fejl
    //til brugeren hvis der ikke kan oprettes forbindelse (via mysql_error)
    $connect = mysql_connect ($host, $username, $password) or die (mysql_error());

     

    //der vælges den rigtige database, og der udskrives en fejl til brugeren,
    //hvis ikke databasen kunne vælges (via mysql_error)
    $select = mysql_select_db($database, $connect) or die (mysql_error());
     
    /*variablen $resultat defineres som en forespørgsel til databasen.
    Har argumenterne $strSQL, som hentes i en ekstern fil, og $connect,
    som er den åbne forbindelse vi har til databasen.
    Skulle brugerens forespørgsel ikke blive gennemført udskrives en fejlmeddelelse
    via mysql_error*/     
    $resultat = mysql_query($strSQL, $connect) or die (mysql_error());
 
    return $resultat; //returnerer variablen $resultat
 
    }

?>
Avatar billede sito Nybegynder
09. februar 2007 - 10:47 #4
Ked af det, men det virkede ikke :( Jeg får stadig ikke noget ud. Det ville også undre mig, da jeg har brugt funktionen i lang tid på en anden side uden problemer.
Avatar billede sito Nybegynder
09. februar 2007 - 10:49 #5
Kan man teste sin forbindelse på en eller anden måde? det kan næsten kun være fordi jeg ikke kommer igennem til databasen.
Avatar billede sito Nybegynder
09. februar 2007 - 11:02 #6
Nu virker det, også uden at fjerne luk funktionen fra executeSQL. Ved ikke hvorfor det pludselig virkede, men det gjorde det altså. Har ikke ændret noget. Meget mystisk, måske den lige skulle bruge lidt tid på at genkende mig...

Nu ser det således ud:

<?php
                // Her hentes alle franske rødvine i databasen
                $strSQL="SELECT navn, aargang FROM frankrig WHERE type='roed'";
                $resultat = executeSQL($strSQL);
         
                while ($querydata = mysql_fetch_array($resultat)){
                $navn = $querydata[0];
                echo "<a href=\"specifikation.php?navn=$navn\">".$querydata[0].", ".$querydata[1]."</a><br>";
                }
               
                ?>

Har ikke ændret i den oprindelige executeSQL.

Du får lidt point for tid og forsøg.
Avatar billede sito Nybegynder
09. februar 2007 - 11:03 #7
Det kræver at du lige opretter et svar - og tak for hjælpen :)
Avatar billede sw_red_6 Nybegynder
08. marts 2007 - 13:54 #8
Ingen point til mig, jeg hjalp ikke med nogen løsning...
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