Stefan: WHERE und dennoch alles auswählen

hallo,
ich hab immer noch ein Problem mit meiner Ausgabe.
Also, ich möchte mit WHERE aus einer mysql Db etwas ausgeben.
Funzt auch. Nur jetzt will ich wenn die var. $month nicht übergeben wird bzw. leer ist ALLES anzeigen lassen.
if(!isset($month)){
$result = mysql_query("SELECT * FROM daten");
}
else
{
$result = mysql_query("SELECT ID, date_format(datum, '%d.%m.%y') as datum, date_format(bis, '%d.%m.%y') as bis, sportart, ereignis FROM daten WHERE ((MONTH(datum)='$month') AND bundesland LIKE '%$bundesland%' AND sportart LIKE '%$sportart%')");
}
$number=mysql_num_rows($result);

viele Grüße & vielen Dank
stefan

  1. Hoi,

    $result = mysql_query("SELECT ID, date_format(datum, '%d.%m.%y') as
    datum, date_format(bis, '%d.%m.%y') as bis, sportart, ereignis FROM
    daten WHERE ((MONTH(datum)='$month') AND bundesland LIKE
    '%$bundesland%' AND sportart LIKE '%$sportart%')");

    ........^.................................^

    Das solltest du tunlichst unterlassen. Ein like "%ausdruck%" ergibt
    in jedem Fall einen Full Table Scan, also eine sequentielle Abarbeitung
    *aller* Eintraege in einer Datenbank.

    viele Grüße & vielen Dank

    *Was* moechtest du eigentlich wissen?

    Gruesse,
     CK

    1. huhu,

      *Was* moechtest du eigentlich wissen?

      Ich erhalte eine Ausgabe, wenn die Variable $month einen Wert enthält.
      Wenn der User der seine Auswahl über ein Select Feld trifft auf "alles auswählen" klickt sollen alle Datensätze angezeigt werden.
      Und da erhalte ich immer eine Fehlermeldung.
      danke :) und grüße
      stefan

      1. Und da erhalte ich immer eine Fehlermeldung.

        Und welche?

        1. sorry, keine Fehlermeldung, sondern einfach keine Ergebnisse.

          Und welche?

          Bzw. folgende Meldung:$number=mysql_num_rows($result);
          if (!$number){ echo"<p align="center">Ihre Suchanfrage ergab leider kein Ergebnis</p>";
          }else{
          Ausgabe...
          Es werden also keine passenden Datensätze gefunden.

          1. MoiN!

            Es werden also keine passenden Datensätze gefunden.

            Du solltest nicht auf isset($month) testen, sondern auf $month=="" - denn wenn in einem Formular ein Select-Feld mit dem Namen "month" steht, wird im nachfolgenden PHP-Skript diese Variable existieren! Eventuell enthält sie aber nur den Leerstring.

            - Sven Rautenberg

  2. hi,

    ich hab immer noch ein Problem mit meiner Ausgabe.
    Also, ich möchte mit WHERE aus einer mysql Db etwas ausgeben.
    Funzt auch. Nur jetzt will ich wenn die var. $month nicht übergeben wird bzw. leer ist ALLES anzeigen lassen.

    und was ist dein problem?

    vielleicht das dein

    $result = mysql_query("SELECT * FROM daten");

    nicht ausgeführt wird?

    liegt vielleicht am isset?

    aber wer weiß das schon so genau? ohne genaue beschreibung...

    schöne grüße

  3. hi nochmal,

    vielleicht hilft dir das, es kann sein das myTest zwar
    leer ist aber doch gesetzt siehe beispiele:

    $month = "";
    echo isset($month); // = 1
    echo empty($month); // = 1

    if ($month) // ergibt false
      echo "True";

    $month = Null;
    echo isset($month); // = 1
    echo empty($month); // = 0

    ich würde mit
    if ($month)
    fragen

    bis dann