Zur Navigation

Datenbankabfragen Problem [2]

11 Peter

Wenn die Werte korrekt übertragen wurden, liegt das Problem wohl in der SQL-Abfrage. Diesbezüglich hat Rudy ja bereits Hinweise geliefert. Du kannst dir einen möglichen Fehler der SQL-Abfrage auch ausgeben lassen (nach der SQL-Abfrage):

habe ich durch:
[code] $sqlab= "select breite, $mitnehmer, $halter, $preis from jalou";
$sqlab .= " where breite like '" . $breite . "%'";

$res = mysql_query($sqlab) OR die(mysql_error());
$num = mysql_num_rows($res);
if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";code]

Sind die Bezeichner der Felder denn identisch mit den Werten der betreffenden Variablen? Andernfalls sind die "$" überflüssig

wenn ich "$" weglasse bekomme ich die Fehlermeldung, das "mitnehmer" nicht defeniert ist.
Nein bei der Bezeichnung "mitnehmer" und "halter" sind Dezimalzahlen als Werte hinterlegt


30.03.2008 22:47

12 Rudy

wenn ich "$" weglasse bekomme ich die Fehlermeldung, das "mitnehmer" nicht defeniert ist.

Wie sieht denn Deine Tabelle aus? Du willst ja "mitnehmer" aus der DB haben, oder? Sonst kannst Du Dir das Attribut (Feld) ja auch sparen.

Gib Dir doch mal die Query "sqlab" mit echo $sqlab; vor dem Aufruf von mysql_query aus.

PS: für den Debug wäre nicht schlecht:
$res = mysql_query($sqlab) OR die(mysql_error())
mit
$res = mysql_query($sqlab) OR die('<em>Die Query</em><br /><strong>'.$sqlab.'</strong><br /><em> ergab den Fehler: </em><br /><strong> '.mysql_error().'</strong>'); 
zu ersetzen.

30.03.2008 22:51 | geändert: 30.03.2008 22:57

13 Peter

habe die Änderung getätigt:
sqlap:
select breite, 2, 2, 74.60 from fokus where breite like '80%' sender: 

Nach eingabe von 1258 in Feld 'EinB':
select breite, 2, 2, 74.60 from fokus where breite like '130%' sender: fokus01.php

Nachtrag,
wenn ich folgende Abfrage durchführe:
   $sqlab= "select breite, from fokus"; 
   $sqlab .= " where breite '" . $breite . "'";
bekomme ich folgende Fehlermeldung:
Die Query select breite, from fokus where breite '80' ergab den Fehler:
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 'from fokus where breite '80'' at line 1

30.03.2008 23:08 | geändert: 30.03.2008 23:13

14 Rudy

Zum Fehler: da ist Komma nach breite, das da nicht hingehört und das = fehlt im where.

$sqlab= "select breite from fokus where breite = '$breite'";
Also willst Du die anderen Felder gar nicht aus der DB haben, sondern nur nachsehen, ob es diese Breite in der Tabelle gibt, richtig?

Edit: from "fokus"? Hieß die Tabelle nicht mal jalou?

30.03.2008 23:19 | geändert: 30.03.2008 23:22

15 Peter

Edit: from "fokus"? Hieß die Tabelle nicht mal jalou?
Ja, war ein kopierfehler; die Tabelle heißt "fokus"

Also willst Du die anderen Felder gar nicht aus der DB haben, sondern nur nachsehen, ob es diese Breite in der Tabelle gibt, richtig?

Nein ich benötige schon die Werte der anderen Felder.

Das Feld "halter" gibt an wieviele Träger die Anlage hat, und das Feld "mitnehmer" benötige ich zur Berechnung des Rollobandes.
Feld "preis" dürfte klar sein.

30.03.2008 23:43

16 Jörg Kruse

Nein ich benötige schon die Werte der anderen Felder.

Das Feld "halter" gibt an wieviele Träger die Anlage hat, und das Feld "mitnehmer" benötige ich zur Berechnung des Rollobandes.

Wenn die Felder wirklich "halter", "mitnehmer" und "preis" heißen, sind die Variablenwerte $halter, $mitnehmer und $preis als Bezeichner der Felder in der SQL-Abfrage falsch, denn die Feldnamen heißen wohl nicht "2" oder "74.60"?

Hast du Rudys letzte Abfrage in Beitrag 14 mal ausgetestet? Du kannst sie ja um die eigentlichen Bezeichnernamen noch ergänzen (d.h. ohne "$"):

$sqlab= "select breite, halter, mitnehmer, preis from fokus where breite = '$breite'";

31.03.2008 11:09 | geändert: 31.03.2008 11:10

17 Peter

Werde ich heute Abend testen.

31.03.2008 12:55

18 Peter

Habe jetzt die Abfrage gesetzt, wie folgt:
 $sqlab= "select breite, halter, mitnehmer, preis from fokus where breite = '$breite'";
Zusetzlich habe ich die Defaultwerte deakteviert:
   // defaultwerte setzen        
/*   if (!isset($breite))
     $breite = '80';
   if (!isset($mitnehmer))
     $mitnehmer = '2';  
   if (!isset($halter))
     $halter = '2';  
   if (!isset($preis))
     $preis = '74.60';   */

Wenn ich die Seite zu erstenmal aufrufe bekomme ich folgende Meldung:
select breite, halter, mitnehmer, preis from fokus where breite = ''keine passenden Datensätze gefunden
sender: 
breite: 
mitnehmer: 
halter: 
preis: 

Nach Eingabe von 1258 in das Feld "EinB" und Berechnen drücken erhalte ich:
select breite, halter, mitnehmer, preis from fokus where breite = '130' sender: fokus01.php
breite: 130
mitnehmer: 
halter: 
preis: 

Danach wird die Berechnung durchgeführt, die Breite dem Felf "breite" richtig zugeteilt. Leider aber nicht die Werte der anderen drei Feld ausgegeben.
Ich gebe die Felder wie folgt aus:
   $sqlab= "select breite, halter, mitnehmer, preis from fokus where breite = '$breite'";

   $res = mysql_query($sqlab) OR die('<em>Die Query</em> <strong>'.$sqlab.'</strong><em> ergab den Fehler: </em><strong> '.mysql_error().'</strong>'); 

   $num = mysql_num_rows($res);
  echo $sqlab;
   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $preis = $dsatz['$preis'];
      $mitnehmer = $dsatz['$mitnehmer'];
      $halter = $dsatz['$halter'];      
         }

31.03.2008 20:14

19 Peter

Ich habs jetzt, der letzte Fehler lag hier:
      $preis = $dsatz['$preis'];
      $mitnehmer = $dsatz['$mitnehmer'];
      $halter = $dsatz['$halter'];  

ohne den "$"
      $preis = $dsatz['preis'];
      $mitnehmer = $dsatz['mitnehmer'];
      $halter = $dsatz['halter'];  

haut es hin.

Danke für eure große Geduld und Hilfe, hier stande ich mir mal wieder selbst im Weg ;-)

Viele Grüße
Peter

31.03.2008 20:23

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]