Erweiterte Suche

thehasso

Erfahrenes Mitglied
Hallo,

ich wollte auf meienr webseite eine erweiterte suche hinzufügen, um mitglieder zu finden mit entsprechenden Kritieren die man im Suchformular eingeben kann. Meine einfache suche funktioniert und hab davon auch mein bisheriges skript irgendwie abgeleitet....

Komplex an der sache ist. das es sich um 2 tabellen handet in einer Tabelle befinden sich die User und in der anderen Tabelle die Kriterien sprich die Eigenschaften der USER.

USER TABELLE = tblbenutzer
EIGENSCFATEN = tbluser_profile


Hab mir das irgendwie so gedacht:

PHP:
<?php
  
  
  $geschlecht =$_POST['geschlecht'];
	    $jahr =$_POST['jahr'];
			    $beruf =$_POST['beruf'];


												
												
   mysql_connect("localhost","root","root"); // Server ; User ; Passwort
   mysql_select_db("lcg"); // Datenbank


    $SQL = sprintf("SELECT strVorname, strNachname, dateiname FROM tblbenutzer UNION SELECT tbluser_profile WHERE geschlecht ='%s' AND jahr='%i' AND beruf='%s'",$geschlecht, $jahr, $beruf);

    $REC = mysql_query($SQL);
    $RECrows = mysql_num_rows($REC);
   
    while($Datensatz = mysql_fetch_assoc($REC)){
   
		  $record['bild'] = $Datensatz['dateiname'];
          $record['firstname'] = $Datensatz['strVorname'];
          $record['secondname'] = $Datensatz['strNachname'];



       $DATA['SEARCH'][] = $record;
	   
	   mysql_error($SQL);
  }

?>


mit Post werden die Daten den Variablen zugeorndet und in im SQL Befehl eingefügt. sprich die Daten die mit Variable befüllt werden werden auch gesucht und entsprechend ausgegeben.


Das Ausgabe Skript hab ich wegen den große umfang nicht geposted. funktioniert aber..

bisherige Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\php_video_kurs\xampp\htdocs\fffk\Templates\nacheinloggen\Unbenannt-4.php on line 377

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\php_video_kurs\xampp\htdocs\fffk\Templates\nacheinloggen\Unbenannt-4.php on line 379


freu mich über jede hilfe!!
Danke
 
Zuletzt bearbeitet:
Hi,

geb doch mal den inhalt von $REC aus.
ich würde einfach mal sagen, dass dein mysql_query kein valides ergebnis liefert.
ein wenig mehr exception handling kann an der stelle nicht schaden ;)
wenn du den code da public laufen lassen willst, es auf jedenfall anzuraten
da in punkto sicherheit noch ein 'bissl' was zu machen.

@see http://php.net/pdo stichwort: sql-injection und param binding

greetz

P.S: Um auf deine eigentlich frage zurück zukommen ( sry^^ ), was du brauchst
um deine daten abzufragen ist ein join. http://dev.mysql.com/doc/refman/4.1/en/join.html
 
Zuletzt bearbeitet:
hallo,

danke dir für den tipp, hab mich nun bissel reingelesen und hier auch mal ein ergebnis.


PHP:
<?php
$querystr = "
SELECT
 tblbenutzer.strVorname,
 tblbenutzer.strNachname,
 tblbenutzer.dateiname
FROM tblbenutzer
LEFT JOIN tbluser_profile
 ON(tblbenutzer.intID = tbluser_profile.intID)
WHERE
 tbluser_profile geschlecht =  ' " . mysql_escape_string($geschlecht) . " ' AND
 jahr = '" . mysql_escape_string($jahr) . "' AND
 beruf = '" . mysql_escape_string($beruf) . "' AND
 heimatland = '" . mysql_escape_string($heimatland) . "' AND
 gebiet = '" . mysql_escape_string($gebiet) . "' AND
 heimatstadt = '" . mysql_escape_string($heimatstadt) . "' AND
 bundesland = '" . mysql_escape_string($bundesland) . "' AND
 ort = '" . mysql_escape_string($ort) . "' AND
 beziehung = '" . mysql_escape_string($beziehung) . "' AND
 politik = '" . mysql_escape_string($politik) . "'
";
?>



müsst das so nicht gehen oda ist da noch was falsch

lgg david
 
Hallo,

der interpreter meckert nicht, obs funktioniert oder nicht kann ich leider auch nicht wissen, wegen der ausgabe...

in php gibt man ja normal echo "$VARIABLE"; aus.
in dem fall steht ja vor der Variable immer der tabellenname noch. In dem Sinne weiß ich gar nicht wie ich das mit der ausgabe machen soll. Hab aber mal den SQL Befehl ausgegeben. Da wird nichts angezeigt.




PHP:
<form id="form1" name="form1" method="post" action="<? echo $_SERVER['PHP_SELF'];?>">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="15%">geschlecht</td>
      <td width="85%"><select name="geschlecht" id="geschlecht" style="width:300px;">
            <option value=""></option>
              <option value="männlich">männlich</option>
              <option value="weiblich">weiblich</option>
            </select> </td>
    </tr>
    <tr>
      <td>jahr</td>
      <td>              <select name="jahr" id="jahr" style="width:75px;">
                <option value=""></option>
                <option value="2009">2009</option>
                <option value="2008">2008</option>
                <option value="2007">2007</option>
                <option value="2006">2006</option>
                <option value="2005">2005</option>
                <option value="2004">2004</option>
                <option value="2003">2003</option>
                <option value="2002">2002</option>
                <option value="2001">2001</option>
                <option value="2000">2000</option>
                <option value="1999">1999</option>
                <option value="1998">1998</option>
                <option value="1997">1997</option>
                <option value="1996">1996</option>
                <option value="1995">1995</option>
                <option value="1994">1994</option>
                <option value="1993">1993</option>
                <option value="1992">1992</option>
                <option value="1991">1991</option>
                <option value="1990">1990</option>
                <option value="1989">1989</option>
                <option value="1988">1988</option>
                <option value="1987">1987</option>
                <option value="1986">1986</option>
                <option value="1985">1985</option>
                <option value="1984">1984</option>
                <option value="1983">1983</option>
                <option value="1982">1982</option>
                <option value="1981">1981</option>
                <option value="1980">1980</option>
                <option value="1979">1979</option>
                <option value="1978">1978</option>
                <option value="1977">1977</option>
                <option value="1976">1976</option>
                <option value="1975">1975</option>
                <option value="1974">1974</option>
                <option value="1973">1973</option>
                <option value="1972">1972</option>
                <option value="1971">1971</option>
                <option value="1070">1070</option>
      </select></td>
    </tr>
    <tr>
      <td>heimatland</td>
      <td><?php

  $heimatland = file('D:\php_video_kurs\xampp\htdocs\fffk\textdateien\heimatland.txt');
  $length = count($heimatland);
  echo "<select name='heimatland' id='heimatland' style=width:350px;' >";
  for($i = 0; $i < $length; $i++) {
    echo "<option value=\"$heimatland[$i]\">$heimatland[$i]</option>";
  }
  echo '</select>';

?>
      <label>
        <input type="submit" name="senden" id="senden" value="Senden" />
      </label>
      </span></td>
    </tr>
  </table>
</form>
<script type="text/javascript">
<!--

//-->
</script>


<?php
$querystr = "
SELECT
 tblbenutzer.strVorname,
 tblbenutzer.strNachname,
 tblbenutzer.dateiname
FROM tblbenutzer
LEFT JOIN tbluser_profile
 ON(tblbenutzer.intID = tbluser_profile.intID)
WHERE
 tbluser_profile geschlecht =  ' " . mysql_escape_string($geschlecht) . " ' AND
 jahr = '" . mysql_escape_string($jahr) . "' AND
 heimatland = '" . mysql_escape_string($heimatland) . "'
";

?>


<?php

echo $querystr;

echo tblbenutzer.strVorname;

?>


danke lg =)
 
Zurück