db Abfrage mit Formular

Hallo tombe!
Danke für deine Antwort!
1. nur für mich als Erklärung: warum kann es so nicht funktionieren
2. Ich habe es versucht so zu machen!bekomme jetzt zwar eine Ausgabe aber von den gesamten Einträgen.und eine Fehlermeldung: Warning: Wrong parameter count for implode() in
Ich hab bereits nach der Fehlermeldung gesucht aber noch nichts genaues gefunden!

DANKE
Gruß
Larnhof!
 
Zuletzt bearbeitet:
zu 1)
= vergleicht genau gleich. Like vergleicht mit Platzhalter

Wenn du mit LIKE arebiten willst, solltest du die Funktion etwa so anpassen
PHP:
function createWherePart(&$wert, $spalte){
    switch($GLOBALS['allowedPost'][$spalte]){
        case 'string':
            $wert = "{$spalte}  LIKE '{$wert}'";
            break;
        case 'date':
            //TODO: Format noch anpassen. Ist nicht umbedingt MySQL-Konform
            $wert = "{$spalte} =". vsprintf('%02d-%02d-%04d', explode('.', $wert));
            break;
        case 'number':
            //Bei Number braucht es keine Formatierung "$spalte = 123"
        default:
            $wert = "'{$wert}'";
    }
    $wert = "{$spalte} = {$wert}";    
}

Zu 2)
Die Fehlermeldung ist wahrscheinlich in der Zeile
PHP:
$where = implode(' AND ', $where);
Ergo wird da $where nicht sauber gefüllt sein.
Das kann passieren wenn dein Code nicht stimmt oder wenn du keine Variablen übergibts (mittels $_POST)
 
Zuletzt bearbeitet:
Wenn du mit Jokern "%" arbeitest, kannst du nicht mit "=" vergleichen sondern musst dafür LIKE nehmen.

Wenn du bein Namen jetzt "Schmid" angibst, werden alles gefunden die "Schmid", "Schmidt", "Schmidchen", ... heißen. Wenn du genau nach dem eingegebenen Namen suchen willst, dann musst du mit schon mit dem "=" arbeiten. Dafür aber das "%" weglassen.

Dann würde es so aussehen:

Code:
SELECT * FROM projekte WHERE name = 'user' AND firma = 'GMBH' AND datumv = '15-02-2010'

Der Fehler hat nichts mit der Abfrage zu tun. Da musst du mal überall da prüfen wo du die IMPLODE Funktion im einsatz hast. Da müsste dann der Fehler stecken.
 
Hallo yaslaw!!

Echt GROSSES DANKE
Also es funktioniert soweit.
Nur wenn ich jetzt eine Auswahl treffe zum Bsp.:
Auswahl Name: User
bekomme ich in der Ausgabe alle Namen ausser User sollte aber gerad umgekehrt sein.
müsste hier ein != ungleich einbauen
Die Auswahl per Datum funktioniert auch noch nicht kann es sein das es noch an der Formatierung hängt oder an den Platzhalter?

@tombe
Auch dir en GROSSES DANKE!!
Hab etwas zu komplizeirt gedacht und Zusammenhang nicht gleich verstanden was aber eigentlich einfach ist:)

DANKE
Gruß
Larnhof
 
Gibt doch mal den Wert von $sql am Bildschirm aus. Dann siehst du wie die Abfrage genau aussieht und du kannst am schnellsten nachvollziehen wo der Fehler liegt (geht mir zumindest immer so).
 
Genau was tombe sagt...

Und zum Datum. In meinem Code steht dort ein //TODO. Also musst du dort noch etwas machen. Aber das findest du mit der MySQL-Doku selber heraus
 
also ich hab den fehler denk ich gefunden
wenn ich mir echo $sql ausgeben lasse bekomme ich folgendes:
SELECT * FROM projekte WHERE Name = Name LIKE 'User'
also kann es nicht funktionieren oder?

@yaslaw formatierung für das datum werde ich schon hinbekommen nur war meine Frage nur ob es an dem liegen könnte
Also werd ich dann dieses Format ändern

DANKE!!
 
@yaslaw
So hab es jetzt so weit geschafft und das Datum funkt auch!!:D
DANKE DANKE DANKE!
jetzt hätte ich noch eine aller letzte Frage
ist es möglich mit diesem script eine Auswahl für einen bestimten Datumszeitraum zu treffen?
select * from projekte where Datumv >='2010-02-01' and Datumv<='2010-02-15'
also es sollen dann alle datensätze in diesen Zeitraum ausgegeben werden

Vielen Dank im Voraus
Gruß
Larnhof

Ps.: wenn es möglich wäre, würde ich dir eine Kiste Bier spendieren
 
Zurück