PHP Abfrage

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

  • PHP Abfrage

    hallo,


    bin neue hier,

    habe ein kleines problem.
    ich versuche für meine webseite (reisen) ein "search" script zu schreiben, wo alle freie ferienhäuser (und eventuell erhaltene Ferienwohnungen) gelistet werden sollen.

    dafür benutze ich mysql datenbank wo jede buchung wird registriert für bestimmetes objekt in form:
    haus_name, fewo_nr, anreise_datum, abreise_datum.
    in andere tabelle habe ich alle ferienhäuser und ferienwohnungen gelistet in form:
    ferienhaus 1, fewo 1
    ferienhaus 1, fewo 2
    ferienhaus 2, fewo 1

    ....

    script fragt nach, ermittelt richtig, jedoh die ausgabe erfolgt für jede buchung und dadurch werden jeweils alle objekte ausgegeben.

    z.B.
    ich habe folgende buchungen:
    1. ferienhaus 1, fewo 1, anreise 1.7, abreise 10.7
    2. ferienhaus 1, fewo 1, anreise 10.7, abreise 20.7


    gesucht wird termin: 20.7. - 30.7

    ergebniss aber siehr so aus:
    ferienhaus 1, fewo 1
    ferienhaus 1, fewo 2
    ferienhaus 2, fewo 1

    // neue schleife
    ferienhaus 1, fewo 1
    ferienhaus 1, fewo 2
    ferienhaus 2, fewo 1


    weil die zwei buchungen drinen sind. hätte ich 10 buchungen in DB, hätte 10 schleifen gehabt....

    mein script sieht so aus (vereinfacht):
    PHP-Code:
    $termin1"$yr1-$mon1-$day1";       // gefragte anreise
    $termin2"$yr2-$mon2-$day2";        // gefragte abreise


    $abfrage "select
      _beleg.haus_name,
      _beleg.fewo_nr,
      _beleg.anreise,
      _beleg.abreise,
      _fewo_nr.haus_name,
      _fewo_nr.fewo_nr
      
    FROM  _beleg, _fewo_nr
    WHERE ('
    $termin1' > _beleg.abreise  and '$termin2' > _beleg.abreise
            or
            '
    $termin1' < _beleg.anreise  and '$termin2' < _beleg.anreise)";


    $erg mysql_query($abfrage,$dbverbindung);

    //////////////////


    $erg mysql_query($abfrage,$dbverbindung);
       echo 
    "<table border=1><tr><td><b>Haus Name</b></td><td><b>Ferienwohnung Nr.</b></td></tr>";
       
    $zeile =mysql_num_rows($erg);

       for (
    $n=0$n $zeile$n++) {
    echo 
    "<tr><td>",mysql_result($erg$n4),"</td><td>",mysql_result($erg$n5),"</td></tr>";
     }
    echo 
    "</table>"
    ich hoffe dass mir jemand helfen kann....
    eventuelle weitere daten stelle ich gern zur verfügung.

  • #2
    Versuch dein Datumsformat mal auf timestamp umzustellen.

    Kommentar


    • #3
      wie sieht deie query aus, die du benutzt?

      Versuch dein Datumsformat mal auf timestamp umzustellen.
      Halte ich für überflüssig. datetime bietet deutlich mehr möglichkeiten.

      Kommentar


      • #4
        WHERE ('$termin1' > _beleg.abreise and '$termin2' > _beleg.abreise
        or
        '$termin1' < _beleg.anreise and '$termin2' < _beleg.anreise)";



        ???

        Heißt es nicht so:

        WHERE ('$termin1' < _beleg.anreise and '$termin2' > _beleg.abreise";

        Kommentar


        • #5
          ja,

          ich denke das mit abfrage kann mehr oder weniger geändert werden.
          aber egal wie die abfrage aussieht, kommen alle ergebnisse die nicht in gefragten termin sind.

          hier ist die abfrage: http://www.vip-urlaub.com/php/test/
          Script: http://www.vip-urlaub.com/php/test/code.txt

          In datenbank: "fewo_nr" sind 147 eiträge
          in Datenbank: "beleg_test" sind 4 einträge, und zwar:
          (alle für Objekt: Villa Orange, Ferienwohnung: 1)
          1.7. - 10.7
          10.7.-20.7

          1.8.-10.8
          10.8-20.8

          ich frage immer nach 20.7-1.8.
          Zuletzt geändert von rolan; 19.09.2005, 15:30.

          Kommentar


          • #6
            wie sieht die query aus, die du benutzt?

            Kommentar


            • #7
              mysql tabelle:
              http://www.vip-urlaub.com/php/test/tabelle.txt

              Kommentar


              • #8
                hint:
                PHP-Code:
                $sql 'ich bin die zeile, die an die db geht und 
                nach der tobiaz gefragt hat'
                ;

                echo 
                'hallo tobiaz! hier ist die query: ' $sql;
                mysql_query($sql); /* etc */ 

                Kommentar


                • #9
                  es ist bereits angegeben:
                  http://www.vip-urlaub.com/php/test/code.txt

                  Kommentar


                  • #10
                    ich habe zwar jetzt nicht alles gelesen, bin mir aber recht sicher, dass tobiaz explizit nach dem gefragt hatte, was ich dir gezeigt habe.

                    Kommentar


                    • #11
                      z.b.
                      ich habe das hier benutzt:

                      PHP-Code:
                      $termin1"$yr1-$mon1-$day1";       ## definition $termin1
                      $termin2"$yr2-$mon2-$day2";         ## definition $termin2


                      $abfrage="select
                                       _fewo_nr_test.haus_name,
                                       _fewo_nr_test.fewo_nr,
                                       _beleg_test.haus_name,
                                       _beleg_test.fewo_nr
                                       
                      FROM _fewo_nr_test left join _beleg_test
                      on (_fewo_nr_test.haus_name =_beleg_test.haus_name and  _fewo_nr_test.fewo_nr !=_beleg_test.fewo_nr)

                      WHERE (

                            (('
                      $termin1' >= _beleg_test.abreise)or('$termin2' <= _beleg_test.anreise)))";
                            
                            

                      $erg mysql_query($abfrage,$dbverbindung);


                      $zeile =mysql_num_rows($erg);
                      echo 
                      "<table border=1><tr><td><b>Haus Name</b></td><td><b>Ferienwohnung Nr.:</b></td></tr>";

                         for (
                      $n=0$n $zeile$n++) {
                               echo 
                      "<tr><td>",mysql_result($erg$n0),"</td><td>",mysql_result($erg$n1),"</td></tr>";
                       }
                      echo 
                      "</table>"
                      irgendwie ist die abfrage falsch.
                      es musste so aussehen:
                      durchlaufe alle Sätze in Buchungstabelle und gebe mir die Sätze zurück wo die anfrage entspricht die Bedingungen. Dann greife in zweite Tabelle, wo alle Ferienwohnungen gelistet sind und gebe mir die Daten zurück die in erste abfrage nicht gefunden sind

                      hört sich fast unmöglich.

                      Kommentar


                      • #12
                        wenn du es nicht hinbekommst ein motherf*ing echo zu benutzen, um die query auszugeben, dann denke ich, ist dieser Thread beendet. tschöß

                        Kommentar


                        • #13
                          was hast du denn von problem?

                          Kommentar


                          • #14
                            Zum glück hab ich nichts "von" Problem. Ich wollte(!) dir helfen.

                            Kommentar


                            • #15
                              was hast du für ein problem, einfache fragen mal direkt zu beantworten, anstatt uns meterweise code zu servieren, nach dem nicht gefragt war?


                              posting von penizillin, 19-09-2005 23:36 - lesen, verstehen, machen.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X