[MySQL 4.0] Warum funktoniert das nicht....

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

  • [MySQL 4.0] Warum funktoniert das nicht....

    Folgendes Script funktoniert nicht,

    <?php
    //Abfrage Längen / Breitengrad

    $Laenge_breite=mysql_query("SELECT laenge, breite FROM geodb_locations WHERE plz=49716");

    //Übergabe der Daten

    $Laenge_breitearray=mysql_fetch_array($Laenge_breite);
    $laenge=$Laenge_breitearray[1];
    $breite=$Laenge_breitearray[0];
    $radius=6367.41;
    $umkreis=150;

    //Abfrage des Umkreises (Quelle Forum)

    $Abfrage1=mysql_query("SELECT ort, plz".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
    (sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
    sin(RADIANS(breite))*sin(".$breite."))) AS Distance FROM geo_locations
    WHERE ".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
    sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
    sin(".$breite."))) <= ".$umkreis." ORDER BY Distance");

    //Hier soll laut Fehlermeldung der Fehler Liegen

    $Ergebnis2=mysql_fetch_array($Abfrage1);

    $Ergebnis3=mysql_num_rows($Abfrage1);
    ?>


    Beim Aufruf des Scrips erfolgt folgende Fehlermeldung

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\martin.php on line 26

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\martin.php on line 27


    Martin
    Zuletzt geändert von iilt; 06.04.2004, 13:54.

  • #2
    PHP-Code:
    echo $sql="SELECT ort, plz".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
    (sin(RADIANS(laenge))*sin("
    .$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
    sin(RADIANS(breite))*sin("
    .$breite."))) AS Distance FROM geo_locations
    WHERE "
    .$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
    sin("
    .$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
    sin("
    .$breite."))) <= ".$umkreis." ORDER BY Distance";
    $Abfrage1=mysql_query($sql) or die(mysql_error()); 
    mach das mal so, was kommt dann raus?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      [MySQL 4.0] Fehlermeldung

      Nach dieser Abfrage bekomme ich folgende Fehlermeldung

      You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)* (sin(RADI



      Martin

      Kommentar


      • #4
        du bekommst vorher auch die abfrage ausgegebn, so als kleine bemerkung am rande

        hast d wirklich "breite" und "laenge" als parameter verwendet?!
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          [MySQL 4.0]

          $Laenge_breite=mysql_query("SELECT laenge, breite FROM geodb_locations WHERE plz=49716");

          $Laenge_breitearray=mysql_fetch_array($Laenge_breite);
          $laenge=$Laenge_breitearray[1];
          $breite=$Laenge_breitearray[0];
          $radius=6367.41;
          $umkreis=150;



          echo $sql="SELECT ort, plz ".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
          (sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
          sin(RADIANS(breite))*sin(".$breite."))) AS Distance FROM geodb_locations
          WHERE ".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
          sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
          sin(".$breite."))) <= ".$umkreis." ORDER BY Distance";

          $Abfrage1=mysql_query($sql) or die(mysql_error());

          hab laenge und breite als Parameter

          Martin

          Kommentar


          • #6
            poste doch bitte mal das SELECT-statement, ausgegeben bekommst du es ja schon, da sollte das nicht allzu schwer sein

            und ich würde nicht die strings breite und laenge als parameter an RADIANS übergeben, aber du musst nicht auf mich hören
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              [MySQL 4.0] Select Statment

              $Abfrage1=mysql_query("SELECT ort, plz".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
              (sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
              sin(RADIANS(breite))*sin(".$breite."))) AS Distance FROM geo_locations
              WHERE ".$radius."*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
              sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
              sin(".$breite."))) <= ".$umkreis." ORDER BY Distance");

              Die Variablen müssen um eine dynamische abfrage generien zu können, oder fällt dir ein anderer Weg ein?

              Martin

              Kommentar


              • #8
                du tust nur so oder?

                nimm bitte mal meinen ocde (der mit echo $sql=) und poste das, was in deinem browser steht!

                dann überlegst du dir, wo der unterschied zwischen RADIANS(breite) und RADIANS($breite) liegt!

                kleiner tipp: eine der beiden varianten wird durch eine zahl ersetzt, die andere nicht
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  SELECT ort, plz 6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)* (sin(RADIANS(laenge))*sin(52.6833)+cos(RADIANS(laenge))*cos(52.6833))- sin(RADIANS(breite))*sin(7.31667))) AS Distance FROM geodb_locations WHERE 6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)*(sin(RADIANS(laenge))* sin(52.6833)+cos(RADIANS(laenge))*cos(52.6833))-sin(RADIANS(breite))* sin(7.31667))) <= 150 ORDER BY Distance

                  You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)* (sin(RADI

                  Bei $laenge oder $breite wird der Wert der Varibel eingesetzt bei breite oder laenge der Wert des Datensatztes?

                  So hab ich diese Formel verstanden....ist das falsch?

                  Martin

                  Kommentar


                  • #10
                    Original geschrieben von iilt
                    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)* (sin(RADI
                    mysql erkennt deine rechenausdrücke offenbar nicht als solche.

                    setze doch mal um die kompletten ausdrücke jeweils auch noch mal klammern, bevor du den alias vergibst, vielleicht klappt es dann besser.

                    (dann aber bitte nicht wieder "geht nicht" posten, sondern genau was du versucht hast, und welche fehlermeldung du bekommen hast.)
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      SELECT ort, plz ,6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)*

                      und jetzt?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        SELECT ort, plz, (6367.41*(SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)* (sin(RADIANS(laenge))*sin(52.6833)+cos(RADIANS(laenge))*cos(52.6833))- sin(RADIANS(breite))*sin(7.31667))))) AS Distance FROM geodb_locations WHERE (6367.41*(SQRT(2*(1-cos(RADIANS(breite))*cos(7.31667)*(sin(RADIANS(laenge))* sin(52.6833)+cos(RADIANS(laenge))*cos(52.6833))-sin(RADIANS(breite))* sin(7.31667))))) <= 50 ORDER BY Distance

                        diese Abfrage gibt 0 zurück, das kann nicht aber nicht sein


                        Zuletzt geändert von iilt; 06.04.2004, 20:21.

                        Kommentar


                        • #13
                          So jetzt funktoniert das

                          mit folgendem Code funktoniert die Abfrage:

                          // Abfrage der Längen und Breiten Koordinaten wobei $plz aus Formular stammt

                          $Laenge_breite=mysql_query("SELECT laenge, breite FROM geodb_locations WHERE plz=$plz");
                          $Laenge_breitearray=mysql_fetch_array($Laenge_breite);

                          // Übergabe der Daten an die Variabelen

                          $laenge=$Laenge_breitearray[0] / 180 * M_PI; // Umrechnung von GRAD IN RAD
                          $breite=$Laenge_breitearray[1]/ 180 * M_PI; // Umrechnung von GRAD IN RAD

                          $umkreis=$umk; // Übername aus Formular
                          $Abfrage1=mysql_query("SELECT ort, plz,(6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
                          (sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
                          sin(RADIANS(breite))*sin(".$breite.")))) AS Distance FROM geodb_locations
                          WHERE 6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
                          sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-sin(RADIANS(breite))*
                          sin(".$breite."))) <= ".$umkreis." ORDER BY Distance");

                          // Ausgabe

                          $Ergebnis2=mysql_fetch_array($Abfrage1);
                          $Ergebnis3=mysql_num_rows($Abfrage1);
                          echo "<table border=1><tr>";
                          echo "Anzahl: $Ergebnis3";

                          for ($i=0;$i<$Ergebnis3;$i++)
                          {
                          while ($Ergebnis2=mysql_fetch_array($Abfrage1,MYSQL_ASSOC))

                          {

                          echo "<tr><td>";
                          echo implode("<td>",$Ergebnis2);
                          echo "</tr>";
                          }

                          Kommentar

                          Lädt...
                          X