MitgliederSuche... funktioniert leider nicht bitte um helfe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
argument
beitrag
fehlermeldung
formen
held
klammern
mitglied
resource
result
sinnen
sites members
sonderzeichen
spalt
spart
spa
statement
username
verbesserung
zeile
zuweisung
-
Hi Leutz,
Ich wollte mir die Tage mal eine Mitglieder Suchemaske erstellen für meine Community.Habe allerdings noch nicht soviel erfahrung mit Datenbank. Naja lange rede kurzer Sinn. Ich habe folgendes programmiert und es funktioniert leider nicht nun würde ich euch um hilfe bzw. verbesserung bitten. Danke schonmal im voraus:
FormTag:
<form action="index.php?action=sites/members.php&search=yes" method="post" enctype="multipart/form-data" name="search" id="search">
<tr><td><input name="searchname" type="text" id="searchname" size="18" maxlength="20" onfocus="this.value=''" tooltip="Ihr Username" style="background-image: url('gfx/edna&usw/nick.jpg')"/>
<select name ='searchsex'><option value='Männlich'>Männlich</option><option value='Weiblich'>Weiblich</option><option value="" SELECTED>Keine Angabe</option></select>
<p align="right"><input name="submit" type="submit" id="submit" value="Suche starten" tooltip="Suchabfrage starten"></td></tr>
</form>
SuchCode:
<?php
if(isset($_GET['search'])){
if($_POST[searchname]!=""){
$name="`username` LIKE '%$searchname%'";
}
else{
$name="";
}
if($_POST[searchsex]!=""){
if($_POST[searchsex]=="Männlich"){
$sexask="`sex` = 'Männlich'";
}
elseif($_POST[searchsex]=="Weiblich"){
$sexask="`sex` = 'Weiblich'";
}
else{
$sexask="";
}
if($name!=""){
$sex="AND ".$sexask."";
}
else{
$sex=$sexask;
}
}
else{
$sex="";
}
$searchstring='"SELECT * FROM `user` WHERE"'.$name.'';
$result = mysql_query($searchstring);
while ($array = mysql_fetch_array($result)){
echo "<tr><td width='100%'><a href='index.php?action=sites/profile.php&look=".$array['username']."'><font style='font-family:Arial,sans-serif; font-size:12px'>".$array['username']."</a></td></tr>";
}
}
else{
?>
Beitrag geaendert: 27.1.2007 20:12:48 von ghostrider -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich bin jetzt mal kurz verwirrt
Also in Threadtitel steht es funtzt nicht, aber im Beitrag steht es funtzt???
Also nehmen wir mal an es funtzt nicht, sonst würde dieser Thread keinen Sinn ergeben. Ups, habe ich nicht gerade festgestellt, dass dem nicht so ist?
Jetzt Spaß beiseite.
Wenns nicht funtzt, welche Fehlermeldung kommt? Und ich würde mal ganz spontan darauf tippen, dass die letzte "else {"-Klammer nicht geschlossen wird, aber dass kann auch nur ein versehen beim kopiern sein. Also bitte ich um eine kurze Aufklärung
Wenn es funtzt, dann kann ich nur sagen schönes Script
EDIT: Okay, jetzt ist alles klar! Wie stehts mit der letzten Klammer? Und welche Fehlermeldung?
Beitrag geaendert: 27.1.2007 20:19:09 von schurli -
isses normal das du einmal $_GET['']; und ein anderes mal $_POST[''] verwendest?
-
ja weil alles per post rein kommt aber der search befehl selber über get mit:
<form action='index.php?action=sites/members.php&search=yes' method='post' enctype='multipart/form-data' name='search' id='search'> -
Gut jetzt wirds schon etwas klarer, aber noch nicht am klärsten ;)
Es wäre auch noch eine große Hilfe zu wissen welche Zeile die Nummer 41 hat, ist es vielleicht die letzte Zeile des Scriptes? -
Da du ja nicht die ganze Seite reingepostet hast, kann ich mit der Fehlermeldung nichts Anfagen... Welches ist denn Line 41 ?
-
Ach ghostrider - weil du es bist ...
... und du meine eDNA benutzt ;)
EDIT: Arghhh scheis l...-code - ersetzt alle "" durch '
Da is der Code:
http://nopaste.php-q.net/271599
Nen bisschen auf die Form des Codes achten schadet nicht ;)
Im übrigen sollte man ein SELECT Statement nur mit * starten wenn man auch wirklich alle Spalten einer Tabelle benötigt. Ansonsten sollte man nur die entsprechenden Spalten abfragen -> spart Zeit.
Und wenn nur eine Spalte abgerufen werden soll, dann nimmt man am besten mysql_fetch_row und bekommt ein Array auf das nur per Zahlenindex referenziert werden kann. - spart nochmal Zeit und Speicher.
Beitrag geaendert: 27.1.2007 21:33:30 von izskisurfer
Beitrag geaendert: 27.1.2007 21:37:20 von izskisurfer -
Also ein wenig seltsam finde ich, dass du oben if($_POST[searchname]!='') schreibst, aber in der Zeile darunter nur noch $searchname ohne vorher explizit eine Zuweisung gemacht zu haben. Wenn register_globals on ist, ist das egal, aber schon allein aus Prinzip solltest du noch eine Zuweisung in der Form $searchname=$_POST[searchname] machen.
Unten führst du die Variable $sex ein, aber im query kommt die nicht mehr mit vor. Ich denke mal die hast du nur vergessen. Hier mal mein Vorschlag, wobei ich nicht viel geändert hab:
if(isset($_GET['search'])) { if($_POST[searchname]!='') { $name=\"`username` LIKE '%$searchname%'\"; }else{ $name=''; } if($_POST[searchsex]!='') { if($_POST[searchsex]=='Männlich') { $sexask=\"`sex` = 'Männlich'\"; }elseif($_POST[searchsex]=='Weiblich'){ $sexask=\"`sex` = 'Weiblich'\"; }else{ $sexask=''; } if($name!='') { $sex=\"AND $sexask\"; }else{ $sex=$sexask; } }else{ $sex=''; } $searchstring=\"SELECT * FROM `user` WHERE $name.$sex\"; $result = mysql_query($searchstring); while ($array = mysql_fetch_array($result)) { echo '<tr><td width='100%'><a href='index.php?action=sites/profile.php&look='.$array['username'].''><font style='font-family:Arial,sans-serif; font-size:12px'>'.$array['username'].'</a></td></tr>'; } }
Allerdings solltest du den Code nicht aus dem Forum kopieren, da hier bei Lima alle doppelten Anführungszeichen durch einfache ersetzt werden. Die doppelten hab ich deshalb mit \ gekennzeichnet. Also alles mit \" durch doppelte Anführungszeichen ersetzen.
edit: aber irgendwie mag er das auch nicht
das erste hier $name=\"`username` LIKE '%$searchname%'\"; muss auch doppelt sein
Beitrag geaendert: 27.1.2007 21:40:03 von tct -
Cool Danke dir du bist mein Held es geht soweit bis auf Männlich und ne schleife wenn nichts angegeben ist fehlt noch hehe außerdem wäre es noch cool wenn das ausgewählte oben steht mal schauen was ich noch machen kann THX aber allen sollte nochma nen prob kommen melde ich mich
-
Das Problem bei Männlich könnte das ä sein, probier es mal mit ae.
-
Also auf register_globals überprüf ich keine fremden scripts mehr - wer darauf nicht selber achtet, dem gehört auch nicht geholfen :P
man sollte im inet im quelltext sowieso nur alphanumerics und ein paar wenige sonderzeichen wie _ verwenden ...
Beitrag geaendert: 27.1.2007 21:44:48 von izskisurfer -
Habe es jetz auf Male umgestellt und noch nen paar zusätzliche sachen eingebaut funktioniert ohne problemem nochma an alle vielen Dank und merkt euch DENKT IMMER AN DIE SONDERZEICHEN
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage