Ankündigung

Einklappen
Keine Ankündigung bisher.

vergleichsoperatoren in MySQL abrage möglich?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • vergleichsoperatoren in MySQL abrage möglich?

    hi,
    gibt es ne möglichkeit, dass ich ein vergleichsoperator in einem mysql_query verwende?

    PHP-Code:
    $heute date("d.m.Y"time());
    $erg mysql_query ("SELECT * FROM je_events WHERE datum<='$heute' order by datum DESC" ); 
    oder kann ich blos nicht direkt ein datum mit "kleiner-gleich" vergleichen? also das ich das datum irgendwie erst auflösen muss und dann die gesammte datenbank laden muss und dann erst in einer whileschleife prüfe ob der datensatz überhaupt angezeigt wird.. was ja kein problem währe aber die andere möglichkeit geich beim query zu "sortieren" währe halt wesentlich eleganter

  • #2
    ein Link:
    ---> http://dev.mysql.com/doc/refman/4.0/de/ix01.html

    ~dilemma~

    Kommentar


    • #3
      d.m.Y ist zum Vergleichen von Daten ein denkbar schlechtes Format.

      4.5.2005 <= 6.4.2005

      Was soll da jetzt rauskommen? Es sollte false rauskommen (da der Mai nicht "kleiner gleich" April ist), es wird aber true rauskommen, da 4 nunmal gleicher als 6 ist.

      Dein Format sollte sein YYYY-MM-DD


      Edit: Achso dir gehts um Vergleichsoperatoren? Da ist bei der WHERE Bedingung ein einfaches = zu benutzen. Der Kontext sagt dem Interpreter des SQL-Codes ob es eine Zuweisung oder ein Vergleich ist, daher gibt es bei SQL kein ==, es ist einfach nicht nötig.

      Kommentar


      • #4
        man bin ich ein n00b, sorry für die blöde frage^^
        mein quelltext klappt super! hier mal der gesammte:
        PHP-Code:
        $heute date("d.m.Y"time());
        if(
        $alte=="ja")
            {
            
        $erg mysql_query ("SELECT * FROM je_events WHERE datum<='$heute' order by datum DESC" );
            while(
        $dat mysql_fetch_array($erg))
                {
                if(
        $dat[anzeige]!="nein")
                    {
                    print 
        "<tr><td valign='top' bgcolor='#dddddd'>$dat[name]</td><td valign='top' bgcolor='#dddddd'>$dat[datum] $dat[zeit]</td><td valign='top' bgcolor='#dddddd'>$dat[ort]</td><td valign='top' bgcolor='#dddddd'>$dat[kommentar]</td></tr>";
                    }
        //if($dat[anzeige]!="nein")
                
        }//while($dat = mysql_fetch_array($erg))    
            
        }
        if(
        $alte!="ja")
            {
            
        $erg mysql_query ("SELECT * FROM je_events WHERE datum>='$heute' order by datum DESC" );
            while(
        $dat mysql_fetch_array($erg))
                {
                if(
        $dat[anzeige]!="nein")
                    {
                    print 
        "<tr><td valign='top' bgcolor='#dddddd'>$dat[name]</td><td valign='top' bgcolor='#dddddd'>$dat[datum] $dat[zeit]</td><td valign='top' bgcolor='#dddddd'>$dat[ort]</td><td valign='top' bgcolor='#dddddd'>$dat[kommentar]</td></tr>";
                    }
        //if($dat[anzeige]!="nein")
                
        }//while($dat = mysql_fetch_array($erg))
            
        }//if($alte!="ja")
        ?> 
        allerdings beim 2. (also bei alte!="ja")
        $erg = mysql_query ("SELECT * FROM je_events WHERE datum>='$heute' order by datum DESC" );
        hatte ich aus versehn das WHERE vergessen und deshalb ging garnichts... und weil ich nie das ganze mit alte=="ja" gesteste hab gin halt nix

        also danke für die super schnelle hilfe. jetzt weiß ich auch wo ich nächstes mal bei nem mysql prob nachschaun kann

        Kommentar


        • #5
          so als keine info:

          1.) das feld datum sollte vom typ DATE sein
          2.) mysql-funktionen nutzen, anstatt sich was mit php darein zu basteln

          SELECT * FROM je_events WHERE datum<=NOW() AND anzeige != 'nein' order by datum DESC

          bye
          PHP & Linux-Support uvm...

          Kommentar


          • #6
            hi,
            ich hab grad bemerkt das meine datumsortierfunktion doch nicht richtig arbeitet weil ich hab ja das feld datum vom typ varchar

            weil der 11.11.2005 wird als älteres datum als z.B. der 29.10.2005 sortiert, was ja eigentlich falsch ist... (aber richtig sortiert weil ja das feld nicht vom typ date ist)

            ich möchte aber gerne die datumsanzeige in der form 29.10.2005 und nicht als 2005-10-29
            gibts da ne möglichkeit oder muss ich das in dem vormat 0000-00-00 in der db speichern und dann erst mit explode("-", $dat[datum]) in nen array umwandeln ums dann nach meinen wünschen auszugeben...

            EDIT:
            achja noch was, ich bekomm das datum ja nicht von ner php funktion sondern durch ein eingabefeld (ist ein terminkalender wo jeder daten eintragen kann)
            wie formatiere ich dann das datum so das es in die db passt? also im vormat 0000-00-00

            Kommentar


            • #7
              mach es z.b. auf einfachem wege so:

              PHP-Code:
              <?php
              function sql2date($sqldate)
              { if(
              preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$/'$sqldate$m))
                  return(
              "{$m[3]}.{$m[2]}.{$m[1]}");
                else return(
              $sqldate);
              }
              function 
              date2sql($date)
              { if(
              preg_match('/^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2,4})$/'$date$m))
                  return(
              "{$m[3]}-{$m[2]}-{$m[1]}");
                else return(
              $date);
              }

              // insert
              $q 'INSERT INTO foo (datum, bla) VALUES ("'.date2sql($_POST['datum']).'", "lala")';

              // ausgabe
              echo sql2date($row['datum']);
              ?>
              PHP & Linux-Support uvm...

              Kommentar

              Lädt...
              X