php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-04-2004, 14:51
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard [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

Geändert von iilt (06-04-2004 um 14:54 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 06-04-2004, 14:53
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #3 (permalink)  
Alt 06-04-2004, 15:01
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard [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
Mit Zitat antworten
  #4 (permalink)  
Alt 06-04-2004, 15:03
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #5 (permalink)  
Alt 06-04-2004, 15:08
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard [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
Mit Zitat antworten
  #6 (permalink)  
Alt 06-04-2004, 15:12
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #7 (permalink)  
Alt 06-04-2004, 15:17
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard [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
Mit Zitat antworten
  #8 (permalink)  
Alt 06-04-2004, 15:27
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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...
Mit Zitat antworten
  #9 (permalink)  
Alt 06-04-2004, 15:33
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #10 (permalink)  
Alt 06-04-2004, 15:37
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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.
Mit Zitat antworten
  #11 (permalink)  
Alt 06-04-2004, 15:43
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

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

und jetzt?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #12 (permalink)  
Alt 06-04-2004, 15:50
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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



Geändert von iilt (06-04-2004 um 21:21 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 07-04-2004, 12:12
iilt
 Junior Member
Links : Onlinestatus : iilt ist offline
Registriert seit: Mar 2004
Ort: Köln
Beiträge: 81
iilt ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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>";
}
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Software für alle Arten von digitalen Marktplätzen
Software für alle Arten von digitalen MarktplätzenDigitale Marktplätze sind nicht nur im B2C Geschäft seit Jahren etabliert, sondern erfreuen sich mit Kleinanzeigen-Märkten auf lokaler und regionaler Ebene auch im privaten Bereich wachsender Beliebtheit.

09.11.2021 | Berni

Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft haben
Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft habenSEO oder SEA? Warum SEO die besserer Methode ist.

01.10.2021 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

09.11.2021 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

28.10.2021 mirko_swm | Kategorie: PHP/ Mail
Guestbook Light ansehen Guestbook Light

Das Guestbook Light (kurz: "Gblight") ist ein kinderleichtes Gästebuch in PHP. Durch den Einsatz einer SQLite Datenbank ist es einfach, leicht portabel und schnell. Aufgrund moderner Techniken erfüllt Gblight auch die neuesten Webstandards.

28.10.2021 scripthostingnet | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:49 Uhr.