Avatar billede mibu Nybegynder
21. november 2009 - 11:08 Der er 10 kommentarer og
1 løsning

else fejl

Hvad mangler jeg, eller har gjort forkert her. Det virker fint indtil jeg sætter en "else" på, dvs. det virker stadig, men hvis der ikke findes en "curdate" så skriver den ikke noget, men så vil jeg gerne have den vælge min "else".

Kode:

$query = mysql_query("SELECT * FROM xx WHERE dato = CURDATE()");
while ($row = mysql_fetch_array($query)) {
    if ($row['id']) {
        echo "<p align='center'
        Låge nr. ".$row["id"]."
        ".$row["tekst"]."
        </p> ";
      }
  else
      {
      echo "<p align='center'><br><br>
        DB'en er tom!
        </p> ";
      }

}
Avatar billede repox Seniormester
21. november 2009 - 11:20 #1
Jeg har svært ved at forstå hvad du mener.
I øjeblikket gør din if condition det at den kontrollerer om $row["id"] betragtes som true. Hvis der er tilfældet udskriver du låge nummer. Hvis ikke så skriver du DB'en er tom.

Du kan ikke kontrollere på MySQL's CURDATE via PHP's if condition.
Avatar billede Slettet bruger
21. november 2009 - 11:32 #2
Du vælger jo kun de celler med dato = CURDATE() så hvordan kan de være tomme i dit while loop?

Er det dette du ønsker ?

<?php
$query = mysql_query("SELECT * FROM xx WHERE dato = CURDATE()");
while ($row = mysql_fetch_array($query))
{
    if ($row['id'])
    {
        echo "<p align='center'>Låge nr: ".$row['id']." ".$row['tekst']."</p>";
    }
}
    echo "<p align='center'><br><br>DB'en er tom!</p>";
?>
Avatar billede mibu Nybegynder
21. november 2009 - 11:30 #3
Hvis $row["id"] er true så skriver den output fra db'en. Fint!
Men hvis der ikke er et match på forspørgelsen, så skrives der ingenting.
Men du siger altså, at det kan man heller ikke? Så jeg kan godt glemme min else, ellr hvad?
Avatar billede repox Seniormester
21. november 2009 - 11:39 #4
Jeg tror det er fordi du formulerer dig forkert.
Dit match på CURDATE foregår jo i databasen. Det vil vige hvis dato matcher CURDATE(), så får du linien ud.
Du kan i princippet ikke få tomme linier ud, medmindre at CURDATE() ikke matcher nogen elementer.
Hvis det er det du vil sikre dig, så er det noget ala:


<?php
$query = mysql_query("SELECT * FROM xx WHERE dato = CURDATE()");
if(mysql_num_rows() > 0)
{
  while ($row = mysql_fetch_array($query))
  {
      if ($row['id'])
      {
          echo "<p align='center'>Låge nr: ".$row['id']." ".$row['tekst']."</p>";
      }
  }
}
else
{
    echo "<p align='center'><br><br>DB'en er tom!</p>";
}
?>

Avatar billede repox Seniormester
21. november 2009 - 11:40 #5
mm.. dumme copy'paste med kode som er unødvendig...


<?php
$query = mysql_query("SELECT * FROM xx WHERE dato = CURDATE()");
if(mysql_num_rows() > 0)
{
  while ($row = mysql_fetch_array($query))
  {
    echo "<p align='center'>Låge nr: ".$row['id']." ".$row['tekst']."</p>";
  }
}
else
{
    echo "<p align='center'><br><br>DB'en er tom!</p>";
}
?>


Avatar billede mibu Nybegynder
21. november 2009 - 11:40 #6
Zeska: Nej ikke helt den udskriver else i alle tilfælde
Avatar billede repox Seniormester
21. november 2009 - 11:41 #7
Og jeg er åbenbart også blind:
udskift if(mysql_num_rows() > 0) med if(mysql_num_rows($query) > 0)
Avatar billede mibu Nybegynder
21. november 2009 - 11:50 #8
repox: lige i øjet :-) (efter slå fejl rettet)

Vil du lægge et svar, og så siger jeg tak til jer begge for udvist interesse.
Avatar billede Slettet bruger
21. november 2009 - 11:51 #9
Det kunne godt ligne at du ville have af vide når databasen var færdig med at lave loop.

Så ville min kode være fin nok.

Hvis den kun skal skrive det når den er helt top skal du bruge Repox eksembel.
Avatar billede Slettet bruger
21. november 2009 - 11:51 #10
tom*
Avatar billede repox Seniormester
21. november 2009 - 13:43 #11
Du fik et svar her
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