Datenfilter !

skype20

Mitglied
Hallo , Ich bin gerade dabei Php zu lernen leider bin ich nicht so gut das ich so genanten Datenfilter codieren kann. Jetzt komm ich näher zum Filter, der Filter soll halt Mitglieder nach bestimmten kritieren filtern wie alter , wohnort , status und ect. und sollte sie natürlich durch dropdown menü auswählen können. Ich habe nach Tutorials und derart gesucht leider bin ich nicht fündig geworden was ziehmlich schade und dies ist hier meine letzte Hoffung.. und deshalb hoffe ich hier auf eine Antwort oder einen Gedankenstoß...

lg skype20
 
Ich habe folgendes gemacht

Html code

Code:
<!-- Formular -->
<form action="index.php?site=registered_users" method="post">
    Text 1:<input type="text" name="text1" /><br />
    Text 2:<input type="text" name="text2" /><br />
    Zahl 3:<input type="text" name="zahl3" /><br />
    <input type="submit" name="submit" />
</form>
<hr />

Php

PHP:
if(isset($_POST['submit'])){
    // Array initializieren. Falls kein argument angegeben wurde,
    // dann ist die Argumentliste ein leeres Array
    $wheres = array();
    if($_POST['text1']) $wheres[] = "text1='{$_POST['text1']}'";
    if($_POST['text2']) $wheres[] = "text2='{$_POST['text2']}'";
    if($_POST['zahl3']) $wheres[] = "zahl3={$_POST['zahl3']}";

    // WHERE-Tel des SQL-String zusammenstellen
    if(count($wheres)>0) $wherestring = "WHERE ".implode(' AND ', $wheres);
    $sql = "SELECT * FROM ".PREFIX."user {$wherestring}";


    $n = 1;
if($sql) {
 if(mysql_num_rows($sql)==0)  echo '&bull; Es wurde kein Benutzer gefunden.';
while($sm=mysql_fetch_array($sql)) {
$avatar='<img style="height:70px;width:70px;" src="http://www.tutorials.de/images/avatars/'.getavatar($sm['avatar']).'" alt="" />';
$avatar = '<a style="color: #000000;" href="index.php?site=profile&amp;id='.$sm['userID'].'">'.$avatar.'</a>';
$nickname = '<a href="index.php?site=profile&id='.$sm['userID'].'">'.$sm['nickname'].'';
$nickname = htmlspecialchars($sm['nickname']);
if(strlen($nickname) > 7) $nickname = substr($nickname, 0,7).'...';




eval("\$result_usersearch = \"".gettemplate("registered_users")."\";");
echo $result_usersearch;



 $n++;
  }
 }


Ich kriege immer eine meldung die mir sagt das kein benutzer gefunden wurde. Bitte um Aufklärung...

p.s. Prefix ist eine Kostante in der , der Tabellen namen anfang gespeichert ist.

mfg

skype20
 
Zuletzt bearbeitet:
mysql_num_rows() liefert dir die Anzahl der Ergebnisse eines Result-Sets, was du vorher natürlich mit mysql_query() abholen musst.
 
hmmm ich habe es mal so versucht ohne die Schleife hier anzugeben denn der Compiler meckert über die syntax was ich nicht wirklich verstehe...

HTML

HTML:
<form method="post" name="post" action="index.php?site=result_usersearch">

<select name="sex">
<option value="m">m&auml;nnlich</option>
<option value="w">weiblich</option>
<option value="u">egal</option>
</select>

<input type="submit" value="suche" name="submit" id="submit" />

</form>


PHP:
PHP:
$sex = mysql_real_escape_string($_POST['sex']);
$where = 'WHERE';
if(isset($_POST['sex']) {
    $where .= " sex = '".$sex."'";
}

$query = "SELECT * FROM ".PREFIX."user ".$where;
$query = mysql_query($query);


Fehlermeldung:

Parse error: syntax error, unexpected '{' in C:\xampplite\htdocs\webspell\result_usersearch.php on line 8
 
Schau noch mal genau hin, alle Klammern, die geöffnet werden, müssen auch geschlossen werden:

PHP:
if(isset($_POST['sex'])  // << fehlt da nicht was?
 
PHP:
$sex = $_POST['sex'];
$where = 'WHERE';
if(isset($_POST['sex']) && $sex != 'egal') {
    $where .= " sex = '".$sex."'";
}

ja stimmt :) danke , aber jetzt habe ich folgendes Problem undzwar kann ich nach männlichen Personen filtern aber nicht nach den weiblichen und wenn ich nach egal filter filtert er mir die user raus die keine Angabe als Geschlecht haben.
 
Warum gibst du so oder so ein 'WHERE' aus? Wenn du 'egal' wählst, hast du 'SELECT.... FROM.... WHERE' ohne WHERE-Argumente.
In meinem Beispiel von weiter oben siehst du wie man das Problem löst.

Für 'egal' vergleichst du den String 'egal'. Die Option hat jedoch den Wert 'u' im Formular und nicht 'egal'.

Wenn 'weiblich' nicht zum filtern geht, solltest du mal die Einträge der DB vergleichen. Steht dort 'w' oder etwas anderes?
 
Dankeschön Yaslaw hat mir sehr geholfen :) . Aber ich hätte da jetzt ne andere Frage undzwar wie sieht es denn aus wenn ich between in meine Abfrage will sprich Select * from mytable where alter 17 between 21 , und das gleich auch für like Select * from mytable where nickname like 'user 1' ?
 
Genau gleich wie alles andere. Prüfen ob die Werte aus dem Formular kommen und dann ein Between schreiben
 
Zurück