php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 09-10-2006, 14:03
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy Suchabfrage in MySQL

Hallo,

Ich habe ein kleines Forumlar dieses sieht so aus. (siehe anhang)


ebenfalls habe ich eine DB mit einer Tabelle namens 'mp3s'. Mit folgenden Spalten:

id (PK)
filename
artist
title
album
year
track
cd
genre
sekunden
size
bitrate
comment
v2version
id3v2


Ich möchte mir eine abfrage stellen die mir den entsprechenden Datensatz sucht. Das heißt wenn ich bei artist z.B. %die% eingebe soll er mir alle Interpreten die irgendwo ein 'die' enthalten haben auflisten. Da smacht er auch ohne Probleme. Allerdings will ich das wenn ich bei Artist %die% eingebe UND bei Titel %das% eingebe das er mir alle interpreten mit 'die' und bei Titel alle Titel von dem Interpreten die irgendwo ein 'das' stehen haben. Natürlich kann es aber auch sein das ich was bei Titel udn ALbum eingebe oder dann mal wieder nur bei Jahr oder oder oder. ALso ihr seht das muss immer funktionieren.

Wie gehe ich an das Problem ran? Habe einfach keine Ideen dazu. Vieleicht ein kelienr Tipp oder ein Beispiel.

Danke udn Grüße
Jochen
Angehängte Grafiken
Dateityp: jpg neues bild (5).jpg (17,4 KB, 65x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt 09-10-2006, 14:21
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Suchabfrage in MySQL

Stelle die WHERE-Klausel deiner Abfrage dynamisch zusammen - und nehme darin nur die Spalten auf, in denen gesucht werden soll. Verbinde mehrere Suchkritierien mit einem geeigneten logischen Operator wie AND oder OR.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 09-10-2006, 14:33
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also sprich ich muss auslesen wo der User was eingegeben hat und mir daraus dann meine SQL Abfrage zusammen bauen?

Sprich

if user hat eingegeben artist AND Titel then Select * from mp3s where artist LIKE usereingabe AND title LIKE usereingabe.

Wenn ich das so mache wird das doch endlos, denn der USer hat ja x beliebige Möglichkeiten.

um genau zu sein habe ich 12 Felder für die EIngabe und der User kann in jedes Feld was rein schrieben was so viel heißt wie 12 hoch 12 Möglichkeiten.
Mit Zitat antworten
  #4 (permalink)  
Alt 09-10-2006, 14:45
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Vorsicht! nicht getestet
PHP-Code:
$where="";
$felder=array('id','artist','title','album','year',
                       
'track','cd','genre','sekunden','size',
                       
'bitrate','comment','v2version','id3v2');
foreach(
$felder as $f){
if(!empty(
$_POST[$f]))
 
$where.=" ".$f." like'".mysql_real_escape_string($_POST[$f])."' and";
}

$query="select * from keineahnung where".substr($where,0,-3);

$hand=mysql_query($query)
or die(
mysql_error()."bei ".$query); 
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #5 (permalink)  
Alt 09-10-2006, 15:35
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

okay sinn habe ich soweit einigermaßen glaube ich verstanden.

Nu was soll das:

if(!empty($_POST[$f]))

was ist $_POST von $f???

und wenn ich das gedanklich richtig entlang gehe dann wird doch zum Schluss in $where auf jedenn fall noch ein AND stehen oder?

Schon mal vielen Dank.

LG Jochen
Mit Zitat antworten
  #6 (permalink)  
Alt 09-10-2006, 15:56
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Jache84
okay sinn habe ich soweit einigermaßen glaube ich verstanden.

Nu was soll das:

if(!empty($_POST[$f]))

was ist $_POST von $f???

und wenn ich das gedanklich richtig entlang gehe dann wird doch zum Schluss in $where auf jedenn fall noch ein AND stehen oder?

Schon mal vielen Dank.

LG Jochen
<<Nu was soll das: if(!empty($_POST[$f]))>>
ich gehe davon aus, dass du die formularfelder mit gleichn namen wie Tabellenspalten benennst.
Was $_POST ist, miss du wissen.

<<<und wenn ich das gedanklich richtig entlang gehe dann wird doch zum Schluss in $where auf jedenn fall noch ein AND stehen oder?>>
nee
dafür habe ich
substr($where,0,-3)
gemacht
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #7 (permalink)  
Alt 09-10-2006, 16:31
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay wenn ich das so mache:

PHP-Code:
$ID3FELDER=array
    (
    
"ID:",
    
"Dateiname:",
    
"Interpret:",
    
"Titel:",
    
"Album:",
    
"Aufnahmedatum:",
    
"Tracknummer:",
    
"CD:",
    
"Genre:",
    
"Länge:",
    
"Dateigröße:",
    
"Bitrate:",
    
"Kommentar:",
    
"ID3V2 Version:"
    
);
$id=$_GET['id'];
$artist=$_GET['artist'];
$album=$_GET['album'];
$year=$_GET['year'];
$track=$_GET['track'];
$cd=$_GET['cd'];
$genre=$_GET['genre'];
$lenght=$_GET['lenght'];
$size=$_GET['size'];
$bitrate=$_GET['bitrate'];
$comment=$_GET['comment'];


$felder=array('id','artist','title','album','year',
                       
'track','cd','genre','sekunden','size',
                       
'bitrate','comment','v2version','id3v2');
$where "";
foreach(
$felder as $f){
    
if(!empty(
$_POST[$f]))

 
$where=" ".$f." like '".mysql_real_escape_string($_POST[$f])."' and";
}
echo 
$where
dann bekomme ich in $where nichts ausgegeben. Woran kann das liegen?

Das Problem liegt irgendwie in meiner if abfrage. Denn wenn ich $f in der foreach schleife ausgeben lasse bekomme ich das richtige angezeigt.


Im Internet Explorer sieht meine Leiste folgendermaßen aus, sprich im Moment möchte ich halt nur nach dem Interpreten suchen:

(siehe Anhang)


Danke und Gruß
Jochen
Mit Zitat antworten
  #8 (permalink)  
Alt 09-10-2006, 16:34
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier jetzt der Anhang
Angehängte Grafiken
Dateityp: jpg neues bild (8).jpg (59,6 KB, 73x aufgerufen)
Mit Zitat antworten
  #9 (permalink)  
Alt 09-10-2006, 16:35
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

solltest dich entscheiden, ob du mit POST oder GET arbeitest...

zusätzlich fehlt dir noch n punkt


where.=

weiter habe ich noch nicht geschaut. bereinige das erstmal...
__________________
**********
arkos
**********
Mit Zitat antworten
  #10 (permalink)  
Alt 09-10-2006, 16:36
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava

Was $_POST ist, miss du wissen.

im screenshot sehe ich aber, dass du mit get arbeiten willst...
__________________
**********
arkos
**********
Mit Zitat antworten
  #11 (permalink)  
Alt 09-10-2006, 16:39
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich ahbe jetzt das $POST durch $GET ersetzt und den Punkt wieder hin gemacht, ahtte ich vergessen *schäm*

bereinigt:

PHP-Code:
$ID3FELDER=array
    (
    
"ID:",
    
"Dateiname:",
    
"Interpret:",
    
"Titel:",
    
"Album:",
    
"Aufnahmedatum:",
    
"Tracknummer:",
    
"CD:",
    
"Genre:",
    
"Länge:",
    
"Dateigröße:",
    
"Bitrate:",
    
"Kommentar:",
    
"ID3V2 Version:"
    
);
$id=$_GET['id'];
$artist=$_GET['artist'];
$album=$_GET['album'];
$year=$_GET['year'];
$track=$_GET['track'];
$cd=$_GET['cd'];
$genre=$_GET['genre'];
$lenght=$_GET['lenght'];
$size=$_GET['size'];
$bitrate=$_GET['bitrate'];
$comment=$_GET['comment'];


$felder=array('id','artist','title','album','year',
                       
'track','cd','genre','sekunden','size',
                       
'bitrate','comment','v2version','id3v2');
$where "";
foreach(
$felder as $f){
    
if(!empty(
$_GET[$f]))

 
$where.=" ".$f." like '".mysql_real_escape_string($_GET[$f])."' and";
}
echo 
$where
allerdings bekomme ich jetzt folgende fehlermeldung.
Angehängte Grafiken
Dateityp: jpg fehler.jpg (64,1 KB, 67x aufgerufen)
Mit Zitat antworten
  #12 (permalink)  
Alt 09-10-2006, 16:57
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

1) mysql_connect muss natürlich in jedem fall durch geführt werden
2)
dieser Block
$id=$_GET['id'];
$artist=$_GET['artist'];
$album=$_GET['album'];
$year=$_GET['year'];
$track=$_GET['track'];
$cd=$_GET['cd'];
$genre=$_GET['genre'];
$lenght=$_GET['lenght'];
$size=$_GET['size'];
$bitrate=$_GET['bitrate'];
$comment=$_GET['comment'];

ist nicht nur überflüssig, sondern auch bei eingeschalteten
error_reporting(E_ALL) (sieh forenregeln)
auch fehlerhaft ist.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #13 (permalink)  
Alt 09-10-2006, 16:59
Jache84
 Junior Member
Links : Onlinestatus : Jache84 ist offline
Registriert seit: Sep 2006
Beiträge: 155
Jache84 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja ich habe es gerade gefunden. DANKE an ALLE!!! Funktioniert einwandfrei.

Liebe Grüße
Jochen
Mit Zitat antworten
  #14 (permalink)  
Alt 09-10-2006, 17:06
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von arkos
im screenshot sehe ich aber, dass du mit get arbeiten willst...
Gute Auge!
du hast nicht nur meine Schreibfehler gefunden, sondern auch die Variablen in Adressleiste von dem Bild erkannt.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #15 (permalink)  
Alt 09-10-2006, 17:20
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
Gute Auge!
du hast nicht nur meine Schreibfehler gefunden, sondern auch die Variablen in Adressleiste von dem Bild erkannt.
ja, auch ich habe meine hellen und wachen momente...

... darauf ruh ich mich jetzt erstmal aus
__________________
**********
arkos
**********
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:19 Uhr.