Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldung durch Datenbankabfrage

Einklappen

Neue Werbung 2019

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

  • Fehlermeldung durch Datenbankabfrage

    Hallo Leute,

    ich komme einfach nicht voran und zwar möchte ich aus zwei Datum Spalten eine Abfrage machen mit PHP und Mysql.

    Ich habe ein Formular mit zwei Datum Eingaben mit dem Type date und eine Auswahlliste. Wenn ich jetzt beide Datums eingebe(anreise und abreise) und etwas aus der Zimmernummer-Auswahlliste auswähle. Dann darf die Person zwischen dem Zeitraum nicht normal den Wert in meine Mysql eintragen. Er soll mir eine Fehlermeldung anzeigen, dass ich einen andere Zimmernummer auswählen soll.

    Ich habe eine Tabelle die heisst Buchung mit den attributen reservierungsnummer,anreise,abreise und zimmernummer.



    Hier ist meine function:

    function zimmer_exists($anreise,$abreise,$zimmernummer){
    $anreise= sanitize($anreise);
    $abreise= sanitize($abreise);
    $zimmernummer= sanitize($zimmernummer);
    return (mysql_result(mysql_query("SELECT COUNT(reservierungsnummer) FROM buchung WHERE anreise>='$anreise' AND abreise<='$abreise' AND zimmernummer='$zimmernummer'"),0)==1) ? true : false;
    }

    und das soll er dann ausgeben wenn ein Eintrag in meiner Mysql vorhanden ist:

    if(zimmer_exists($_POST['anreise'],$_POST['abreise'],,$_POST['zimmernummer'])===true)
    {
    $errors[]='Für den Zeitraum ist das Zimmer besetzt.';
    }


    Kann mir bitte jemand helfen? Ich danke euch schonmal.
    LG
    Sandra


  • #2
    http://www.php.de/php-einsteiger/464...verwenden.html

    Dinge die definitiv nicht in den Titel gehören:
    • Wichtig!! und Konsorten
    • Dringend oder Eilt
    • Hilfe!!, Brauche Hilfe - natürlich, wie jeder hier
    • Bin verzeifelt und andere Gemütslagen (bin euphorisch, bin müde, bin doof)
    • Ascii-Art - Pfeile, Smilies...
    • funktioniert nicht oder (wie oben) Problem
    • wirft/macht Fehler - egal ob PHP, MySQL oder sonstiges
    • Fragen wie Was soll ich tun? oder Wer kann mir helfen?


    Bitte PHP-Tags benutzen:

    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      - bitte php code tags benützen

      - Fehlerprüfung?
      PHP-Code:
      return (mysql_result(mysql_query("SELECT COUNT(reservierungsnummer) FROM buchung WHERE anreise>='$anreise' AND abreise<='$abreise' AND zimmernummer='$zimmernummer'"),0)==1) ? true false
      - mysql_ ist veraltet, besser PDO oder mysqli_ nutzen http://php.net/manual/en/migration55.deprecated.php

      - was auch immer sanitize() macht, besser Prepared Statements verwenden oder mysql(i)_real_escape_string()

      LG
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Hallo hausl,

        danke für deine Antwort.Das macht sanitize:

        PHP-Code:
        function sanitize($data){
        return 
        mysql_real_escape_string($data);


        Das soll er ausgeben, wenn etwas schon eingetragen wurde,
        PHP-Code:
        if(zimmer_exists($_POST['anreise'],$_POST['abreise'],,$_POST['zimmernummer'])===true)
        {
        $errors[]='Für den Zeitraum ist das Zimmer besetzt.';
         echo 
        output_errors($errors);

        Kommentar


        • #5
          PHP-Code:
          if(zimmer_exists($_POST['anreise'],$_POST['abreise'],,$_POST['zimmernummer'])===true
          Absichtlich zwei ,, drinnen? Eher ein Fehler, zumindest laut Signatur:

          PHP-Code:
          function zimmer_exists($anreise,$abreise,$zimmernummer){ 
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            -> Titel geändert

            Kommentar


            • #7
              Danke, nein habs nur hier reingeschrieben. Es soll natürlich nur ein Komma sein und nicht zwei. Kann es sein das meine Abfrage falsch ist? Weil ich in Mysql bei abreise bzw. anreise den Type date drin habe?

              Kommentar


              • #8
                Ich danke dir cycap Ich wusste nicht wie das geht. Ich habs die ganze Zeit gesucht, wie ich das ändern kann. Ich bin neu hier, deswegen.

                Kommentar


                • #9
                  Zitat von Sandra198999 Beitrag anzeigen
                  Kann es sein das meine Abfrage falsch ist?
                  Sicher kann das sein... Daher schrieb ich oben schon "Fehlerprüfung"

                  - Erstele die query in einer PHP Variable und lass dir diese ausgeben
                  - Fehler abfragen wie zB üblich mit OR die("...")
                  - Lass die query ohne PHP laufen (zB direkt in phpMyAdmin oder einen andern MySql Client etc..) kommt das gewünschte Ergebnis?
                  - etc...

                  http://php-de.github.io/jumpto/sql/

                  Und nochmals der Hinweis das die mysql_ Schnittstelle bald nicht mehr funktionieren wird, da diese aus PHP rausfliegt. Siehe auch oben.
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Danke dir für den Tipp. Hab ich grad gemacht. Wenn ich zum Beispiel anreise: 17.11.2014 eingebe und abreise: 28.11.2014 und dabei eine zimmernummer auswähle, die in meiner Tabelle drin steht. Zeigt er mir jetzt einen Fehler an. Aber sobald ich die anreise am 15.11.2014 verändere.Akzeptiert er es. Also stimmt was mit meiner Abfrage nicht. Kann ich auch BETWEEN für zwei spalten benutzten oder immer nur für eine?

                    Kommentar


                    • #11
                      Zeigt er mir jetzt einen Fehler an
                      Welchen?

                      Das Problem wird das Format sein. Welches Format haben deine beiden Von / Bis Spalten?

                      http://dev.mysql.com/doc/refman/5.0/...onversion.html

                      Code:
                      ... WHERE '2014-12-30' BETWEEN '2014-11-25' AND '2014-12-03' ...
                      Das gibts zu Hauf Beispiele via google, oder nach der Fehlermeldung googeln etc..
                      B: http://www.techonthenet.com/mysql/between.php

                      LG
                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        *doppelpost*
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Wenn ich die Spalte anreise:20.11.2012 und die Spalte abreise:25.11.2012 und die Spalte zimmernummer:3 habe. Also sprich 3 Spalten in meiner Mysql Tabelle habe. In dem Zeitraum darf die zimmernummer:3 nicht eingetragen werden, aber die anderen Zimmernummern schon. Wie mache ich das mit BETWEEN?

                          Kommentar

                          Lädt...
                          X