php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.12.2008, 21:47  
Neuer Benutzer
 
Registriert seit: 10.12.2008
Beiträge: 5
dominik_1984 befindet sich auf einem aufstrebenden Ast
Standard einfache PHP abfrage

halli hallo

ich habe ein formular mit

2 input feldern für eine erweiterte suche. einmal soll man nach username und einmal nach richtigem namen suchen können

Code:
<form method="post" action="">
User Name:  <input type="text" name="username" value="" />
Normaler Name:<input type="text" name="normalname" value="" />
<input type="submit" value="suchen" name="submit">
</form>

mein zugehöriges sql script

Code:
$sql = "
SELECT u.id, u.username, c.avatar, u.name, c.hits 
FROM #__users AS u RIGHT JOIN  #__comprofiler AS c 
ON u.id = c.user_id WHERE u.username LIKE '". mysql_real_escape_string($_POST['username']) ."%' 
OR u.name LIKE '". mysql_real_escape_string($_POST['normalname']) ."%'
LIMIT 30
";
irgend etwas funktioniert hier nicht

kann mir jemand helfen
dominik_1984 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.12.2008, 21:52  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Gibts keine Fehler? Schreib doch bitte mal was von MySQL an Fehlern kommt.

Ich bin bei deinen Tabellennamen etwas skeptisch. Ist '#' nicht auch ein MySQL Zeilenkommentar?
__________________
Phoscur ist offline  
Alt 10.12.2008, 21:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von dominik_1984 Beitrag anzeigen
irgend etwas funktioniert hier nicht
Dann ist das wohl irgendwo irgendein Fehler...

Symptome? Fehler-/Warn-Meldungen?
Steht
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);
am Anfang des Skripts? Wenn nicht, nachholen.

Hast Du
PHP-Code:
$result mysql_query($sql$mysqlconn) or die(mysql_error()) 
in Deinem Skript stehen?
David ist offline  
Alt 10.12.2008, 21:56  
Neuer Benutzer
 
Registriert seit: 10.12.2008
Beiträge: 5
dominik_1984 befindet sich auf einem aufstrebenden Ast
Standard

es kommt gar kein fehler jedoch sucht er auch nicht nach den usern. wenn ich folgendes script benütze funktioniert es :

Code:
SELECT u.id, u.username, c.avatar, u.name, c.hits 
FROM #__users AS u RIGHT JOIN  #__comprofiler AS c 
ON u.id = c.user_id WHERE u.username LIKE '". mysql_real_escape_string($_POST['username']) ."%' 

LIMIT 30
";
d.h. irgendwie funktioniert die OR verknüpfung nicht. Ich möchte einfach nur, dass er entweder beim usernamen oder beim normalen namen etwas eingeben kann und jenachdem in dem feld in der DB sucht. Später sollen noch mehr felder folgen.

was mach ich bei der or verknüpfung hier falsch???

Code:
OR u.name LIKE '". mysql_real_escape_string($_POST['normalname']) ."%'
dominik_1984 ist offline  
Alt 10.12.2008, 22:18  
Neuer Benutzer
 
Registriert seit: 10.12.2008
Beiträge: 5
dominik_1984 befindet sich auf einem aufstrebenden Ast
Standard

seh gerade das folgendes kommt

Code:
Notice: Undefined index: username user-suche.php on line 40

Notice: Undefined index: normalname in user-suche.php on line 41
wo liegt hier der fehlerß
dominik_1984 ist offline  
Alt 10.12.2008, 23:08  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von dominik_1984 Beitrag anzeigen
seh gerade das folgendes kommt

Code:
Notice: Undefined index: username user-suche.php on line 40

Notice: Undefined index: normalname in user-suche.php on line 41
wo liegt hier der fehlerß
wäre schon nett gewesen zeile 40 und 41 nochmal zu posten
aber das heißt das es einen array-index nicht gibt. mach doch mal vor deine mysql-anfrage ein
print_r($_POST);
und schau was das ausgibt. bzw. es ist generell bei sowas ne gute idee die mysql-query in eine variable zu schreiben und dann auszugeben. da sieht man dann oft ob was an der erstellten query nicht stimmt.

mfg
BlackWolf ist offline  
Alt 11.12.2008, 09:09  
Neuer Benutzer
 
Registriert seit: 10.12.2008
Beiträge: 5
dominik_1984 befindet sich auf einem aufstrebenden Ast
Standard

also ich weiss jetzt woran es liegt jedoch nicht wie ich das technisch behebe

das problem ist das bei folgendem script

Code:
$sql = "
	SELECT u.id, u.username, c.avatar, u.name, c.hits 
	FROM #__users AS u, #__comprofiler AS c 
	WHERE u.id = c.user_id 	AND (u.username LIKE '". mysql_real_escape_string($_POST['username']) ."%'
	OR u.name LIKE '". mysql_real_escape_string($_POST['normalname']) ."%')
	LIMIT 30
";
also das Problem liegt darin, dass wenn natürlich ich nur im ersten feld etwas eingebe das zweit trotzdem noch erfüllt ist. Nun kam mir die Idee mittels

if ($username = null) abzufragen ob der wert null ist und wenn nicht dann mit einer AND Verknüpfung zu ergänzen. aber wie mache ich das technisch aslo im script.

Also der User sucht z.b. einmal nach Username "Blubb" dann erhält er den user mit diesem Username.

Das andere sucht er nach dem normalen Namen "Hugo" und bei Usernamen nach dem Anfangsbuchstaben "a" und erhält dann eine auswahl von mehreren.

Ich komm hier einfach nicht weiter. Kann mir jemand helfen ?

Hoff das war jetzt verständlich was ich möchte.

einfach eine advanced searchfunktion die mir 2 tabellen durchsucht
dominik_1984 ist offline  
Alt 11.12.2008, 09:16  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ich verstehe nicht wo dein Problem ist, du kannst doch einfach isset und einfache Stringverkettung benutzen?

PHP-Code:
$sql "SELECT ... ";

if(isset(
$_POST['username']) || isset($_POST['normalname'])){
  
$sql .= " WHERE ";
}

if(isset(
$_POST['username'])){
  
$sql .= " ... ";
}

if(isset(
$_POST['username']) && isset($_POST['normalname'])){
  
$sql .= " OR ";
}

if(isset(
$_POST['normalname'])){
  
$sql .= " ... ";

cycap ist offline  
Alt 11.12.2008, 10:01  
Neuer Benutzer
 
Registriert seit: 10.12.2008
Beiträge: 5
dominik_1984 befindet sich auf einem aufstrebenden Ast
Standard

ich bin kein php freak

habs jetzt so:

Code:
$sql = "SELECT u.id, u.username, c.avatar, u.name, c.hits 
	FROM #__users AS u, #__comprofiler AS c 
	WHERE u.id = c.user_id";

if(isset($_POST['username']) || isset($_POST['normalname'])){
  $sql .= " WHERE ";
}

if(isset($_POST['username'])){
  $sql .= " u.username LIKE '". mysql_real_escape_string($_POST['username']) ."%'";
}

if(isset($_POST['username']) && isset($_POST['normalname'])){
  $sql .= " OR ";
}

if(isset($_POST['normalname'])){
  $sql .= "u.name LIKE '". mysql_real_escape_string($_POST['normalname']) ."%'";
}

jetzt kommt jedoch als fehler

Code:
Invalid argument supplied for foreach() in /user-suche.php on line 69
diese zeile schaut so aus:

Code:
foreach ($rows as $row) {
	echo renderPhoto($row['id'], $row['username'], $row['avatar'], $row['name'], $row['hits']) . "\n";
}
dominik_1984 ist offline  
Alt 11.12.2008, 10:05  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

nun das wird wohl daran liegen das dein gebastel da oben 2 mal WHERE in deinen SQL-String schreibt, sowas sieht man wenn man sich mal $sql ausgibt und wenn man mit mysql_error arbeitet, dann wird einem auch gesagt das man einen Syntaxfehler hat

bisschen überlegen bitte
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
Abfrage in array? BartTheDevil89 Datenbanken 5 10.05.2005 14:21
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
[Erledigt] einfache abfrage klappt leider nicht Datenbanken 3 22.07.2004 13:22
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] Variable per GET übergeben und DB Abfrage nutzen PHP Tipps 2004 4 01.06.2004 15:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum