Fahrtenbuch genial!
-


Hinweise


Thema geschlossen
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 04.09.2005, 11:35   #1
pop
TP-Senior
 
Registriert seit: Oct 2001
Ort: schweiz
pop macht alles soweit korrekt

such-abfrage klappt nicht


Hallo zusammen,

ich versuche ein abfrage zu erstellen, leider klappt es nicht, denn sobald ich auf suchen klicke erscheint folgende siehe unten Fehler, vielen dank für eure hilfe.


Database error: Invalid SQL: SELECT * FROM news WHERE ORDER BY
MySQL Error: 1064 (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 'ORDER BY' at line 1)
Session halted.

PHP-Code:
  <?php
  $query_zusatz 
"WHERE";
  if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){
      if(isset(
$_POST['id']) AND $_POST['id']!=""){
          if(
$query_zusatz!="WHERE"){
              
$query_zusatz.=" AND ";
          }
          
$query_zusatz .=" id=".$_POST['id']."";

      }
          if(isset(
$_POST['titel']) AND $_POST['titel']!=""){
          if(
$query_zusatz!="WHERE"){
              
$query_zusatz.=" AND ";
          }
          
$query_zusatz .=" titel='".$_POST['titel']."'";
      }
  
            
$db->query("SELECT * FROM news ".$query_zusatz." ORDER BY ".$id);
            while(
$db->next_record()) {
                
$stil=="#EFEFEF"?$stil "#FFFFFF":$stil="#EFEFEF";
?>
pop ist offline  


Alt 04.09.2005, 11:55   #2
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
Es wurde keine WHERE- Bedingung angegeben (WHERE feld Blabla = 'Blablub'). Da steht nur das WHERE im Query.. Deswegen kommt die Fehlermeldung.
Schreibe dein Query erst mal in eine Variabel und echoe die dann. Damit kannst du dann sehen, was wo wie wann nicht richtig zusammengesetzt wird..
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline  
Alt 04.09.2005, 12:22   #3
pop
TP-Senior
 
Registriert seit: Oct 2001
Ort: schweiz
pop macht alles soweit korrekt

error


klappt auch nicht, wie kann ich denn die query in ein Variabel nehmen?

PHP-Code:
<?php 
  $query_zusatz 
"WHERE"
  if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){ 
      if(isset(
$_POST['id']) AND $_POST['id']!=""){ 
          if(
$query_zusatz!="WHERE id"){ 
              
$query_zusatz.=" AND "
          } 
          
$query_zusatz .=" id=".$_POST['id'].""

      } 
          if(isset(
$_POST['titel']) AND $_POST['titel']!=""){ 
          if(
$query_zusatz!="WHERE titel"){ 
              
$query_zusatz.=" AND "
          } 
          
$query_zusatz .=" titel='".$_POST['titel']."'"
      } 
   
            
$db->query("SELECT * FROM news ".$query_zusatz." ORDER BY ".$id); 
            while(
$db->next_record()) { 
                
$stil=="#EFEFEF"?$stil "#FFFFFF":$stil="#EFEFEF"
?>
pop ist offline  
Alt 04.09.2005, 12:34   #4
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
$query = "SELECT * FROM news ".$query_zusatz." ORDER BY ".$id.");
echo $query;
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline  
Alt 04.09.2005, 12:40   #5
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
Nur so zur Info: du setzt bei Query Zusatz ja das WHERE mit rein.. Aber du musst auch angeben, wie diese Bedingungen erfüllt wird.

Dein Query sieht immer maximal so aus (ich versuche es mal in einen Satz umzuformen):

Hole alle Felder aus der Tabelle news wo Feld und sortiere es nach

Du siehst, daß da irgendwie was fehlt. Und das musst du auch mitliefern und das tust du in deinem Script nicht.
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline  
Alt 04.09.2005, 12:42   #6
pop
TP-Senior
 
Registriert seit: Oct 2001
Ort: schweiz
pop macht alles soweit korrekt

kein fehlermeldung plötzlich


jetzt wird kein fehlermeldung angezeigt !!
was muss ich noch an den WHERE ändern damit die Suchabfrage funkt. ?
pop ist offline  
Alt 04.09.2005, 12:47   #7
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Hast du nen Debuger?
Dann teste es doch mal so aus
PHP-Code:
<?php
// Test-Vars
$_POST['Submit'] = "Suchen";
$_POST['id'] = 2;
$_POST['titel'] = "test";

$query_zusatz "WHERE";

if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){
    if(isset(
$_POST['id']) AND $_POST['id']!=""){
        if(
$query_zusatz!="WHERE"){
            
$query_zusatz.=" AND";
        }
        
$query_zusatz .=" id=".$_POST['id']."";
    }
    if(isset(
$_POST['titel']) AND $_POST['titel']!=""){
        if(
$query_zusatz!="WHERE"){
            
$query_zusatz.=" AND";
        }
        
$query_zusatz .=" titel='".$_POST['titel']."'";
    }

    echo 
"SELECT * FROM news ".$query_zusatz." ORDER BY id";
}
?>
Ausgabe: SELECT * FROM news WHERE id=2 AND titel='test' ORDER BY id

Aber:
-Warum soll die ORDER BY-Klausel eine Var sein? Willst du damit einen String angeben, oder soll nach id sortiert werden? Dann muss das $ weg (siehe Bsp.).
-Deine if-Abfrage zum hinzufügen eines AND ist nicht gerade logisch. Frag doch einfach so ab, das $query_zusatz nicht nur WHERE ist, sondern schon erweitert ist (siehe Bsp.)
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline  
Alt 04.09.2005, 12:49   #8
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
PHP-Code:
<?php  
  $query_zusatz 
"WHERE";  
  if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){  
      if(isset(
$_POST['id']) AND $_POST['id']!=""){  
          
$query_zusatz .=" id=".$_POST['id']." AND ";  

      }  
          if(isset(
$_POST['titel']) AND $_POST['titel']!=""){  
          
$query_zusatz .=" titel='".$_POST['titel']."'";  
      }  
      if(
$query_zusatz=="WHERE"$query_zusatz="";
            
$db->query("SELECT * FROM news ".$query_zusatz." ORDER BY ".$id);  
            while(
$db->next_record()) {  
                
$stil=="#EFEFEF"?$stil "#FFFFFF":$stil="#EFEFEF";  
?>
Deine Abfragen auf $query_zusatz waren falsch!
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline  
Alt 04.09.2005, 12:53   #9
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
@Steffen
Und was passiert, wenn man nur nach der id sucht?
Also ich würde es nicht so machen.
$query_zusatz zu leeren, wenn nur WHERE enthalten ist, ist nicht schlecht, aber ich würde dann ehr hingehen und die Suchfleder zu prüfen und dann auszugeben, dass kein Suchbegriff angegeben wurde.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline  
Alt 04.09.2005, 12:54   #10
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
stimmt Mark.

Ich mach es eigentlich immer so und nehm dann die letzten Zeichen weg, also das letzte "AND "

if(substr($query_zusatz,-4)=="AND ") $query_zusatz=substr($query_zusatz,0,strlen($query_zusatz)-4));

Das ist hier vielleicht ein wenig überkandidelt, aber wenn man mehrere Suchbedingungen prüft, ist das die einfachste Form, ein WHERE zusammenzusetzen.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer

Geändert von steffenk (04.09.2005 um 12:59 Uhr).
steffenk ist offline  
Alt 04.09.2005, 13:02   #11
pop
TP-Senior
 
Registriert seit: Oct 2001
Ort: schweiz
pop macht alles soweit korrekt

error


ich möchte nach id sortieren, das ist aber nicht wichtig, ich hab deine variante getestet und siehe fehlermeldung :

SELECT * FROM news WHERE ORDER BY id

Database error: Invalid SQL: SELECT * FROM news WHERE ORDER BY
MySQL Error: 1064 (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 'ORDER BY' at line 1)
Session halted.
pop ist offline  
Alt 04.09.2005, 13:03   #12
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
So, hier mal eine dyn Lösung, so muss man nicht zig Schleifen schreiben.
PHP-Code:
<?php
// Test-Vars
$_POST['Submit'] = "Suchen";
$_POST['id'] = 2;
$_POST['titel'] = "test";

$query_zusatz "WHERE ";

if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){
    foreach(
$_POST as $key => $value){
        if(
$key != "Submit"){
            if(isset(
$key) AND $key!=""){
                if(
$query_zusatz!="WHERE ")    $query_zusatz.=" AND ";
                if(
gettype($value) == "integer"$query_zusatz .=$key."=".$value;
                else 
$query_zusatz .=$key."='".$value."'";
            }
        }
    }
    echo 
count($_POST) == "SELECT * FROM news ORDER BY id" "SELECT * FROM news ".$query_zusatz." ORDER BY id";
}
?>
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline  
Alt 04.09.2005, 13:05   #13
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User


Das einzig gefährliche bei Deiner Lösung ist count($_POST). Was ist, wenns noch weitere Felder im Formular gibt ? Das muss man wissen und statt 1 die Anzahl der nicht relevanten POST-Felder eintragen.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline  
Alt 04.09.2005, 13:10   #14
pop
TP-Senior
 
Registriert seit: Oct 2001
Ort: schweiz
pop macht alles soweit korrekt

klappt immer noch nicht


genau @Steffen, ich werde das formular erweitern und kommen ein paar weitere felder dazu, ich hab deine Lösung getestet leider immer gleich error :

Database error: Invalid SQL: SELECT * FROM news ORDER BY
MySQL Error: 1064 (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 '' at line 1)
Session halted.

hier nochmals den code:

PHP-Code:
<?php   
  $query_zusatz 
"WHERE";   
  if(isset(
$_POST['Submit']) AND $_POST['Submit']=="Suchen"){   
      if(isset(
$_POST['id']) AND $_POST['id']!=""){   
          
$query_zusatz .=" id=".$_POST['id']." AND ";   

      }   
          if(isset(
$_POST['titel']) AND $_POST['titel']!=""){   
          
$query_zusatz .=" titel='".$_POST['titel']."";   
      }   
      if(
$query_zusatz=="WHERE"$query_zusatz=""
            
$db->query("SELECT * FROM news ".$query_zusatz." ORDER BY ".$id