Usersuche und Landerweiterung

Begonnen von pikar, 28 November 2007, 15:36:10

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

pikar

Hi@all

Ich habe einen Länderdatenbank erstellt nach dem Motto:
Nummer - Land - Bundesland - Stadt/Kreis

habe sie zum Testen mit Deutschland Österreich Schweiz Tschechien gefüllt...

und danach in die "mx_userfunctions_options.php" eingefügt.... also der Benutzer kann nun seine Herkunft aus einer Datenbank wählen.. und im Profil habe ich ne abfrage danach gemacht welche Nummer in der Datenbank ist und gebe danach halt einfach Land Bundesland und Stadt aus... geht alles Prima...

nur wie binde ich diese Datenbank in die Usersuche ein...

hab diese Usersuche zu Testzwecken...

http://www.pragmamx.org/Forum-topic-19805-start-msg146001.html#msg146001


da heir währe der Code:

$out .="<tr><td>Land:</td><td> <select name=\"user_from1\">";   // Stadt

   
$result2=sql_query("select cid, land, bundesland, stadt from ".$prefix."_land  order by land,bundesland", $dbi);

    while(list($cid, $land, $bundesland, $stadt) = sql_fetch_row($result2, $dbi)) {

   

        $out .= "<option value=\"$cid\">$land-->$bundesland-->$stadt</option>";

}



kann mir da mal jemand helfen?


lemming

Zitat von: pikar am 28 November 2007, 15:36:10
Hi@all

Ich habe einen Länderdatenbank erstellt nach dem Motto:
Nummer - Land - Bundesland - Stadt/Kreis


du meinst eine tabelle? mhm also die struktur ist sicherlich noch optimierbar.

der code den du gepostet hast ist noch bischen wenig, dort kannst du ja dann nur die sachen auswählen aber für die suche wird überhaupt noch nix übergeben etc.

geh einfach so vor, in deiner usersuche gibts ja schon das auswahlfeld "Geschlecht". im prinzipp selbe wie bei deiner länderauswahl. jetzt durchsuchst die ganze index.php nach "user_sexus" und fügst in ähnlichem stil dein land, bundesland etc hinzu.

wichtig ist halt, dass du auch $sql anpasst so dass dort land, bundesland auch ausgelesen wird.

hoffe ich konnt dir bischen weiterhelfen  :)

gruß,
jörg
greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*

pikar

Hi, danke für deine Antwort,

ja das ist nur die Länder abfrage, und nicht der ganze Code....

das Problem ist darin zu sehen, wie baue ich die Ausgabe ein. Wenn ich es dem Geschlechtsauswahlfeld gleich mache, kommen Fehlehrmeldungen, weil ja das Geschlecht nicht aus einer Datenbank abgefragt werden.

<tr valign="top">
<td class="borderzeile" bgcolor="<?echo"$bgcolor1";?>"><b>Geschlecht:</b></td>
<td class="borderzeile" colspan="3" bgcolor="<?echo"$bgcolor1";?>">
<select name='user_sexus' size='1'>
<option value=''<? if(empty($_POST["user_sexus"])) echo " selected"; ?>>egal</option>
<option value='0'<? if($_POST["user_sexus"] == "0") echo " selected"; ?>>nicht angegeben</option>
<option value='1'<? if($_POST["user_sexus"] == "1") echo " selected"; ?>>weiblich</option>
<option value='2'<? if($_POST["user_sexus"] == "2") echo " selected"; ?>>m&auml;nnlich</option>
</select>
</td>
</tr>


Wie baue ich nun meine Code heir ein?

Wie meinst du das mit optimirbar?

Ich habe auch noch eine weitere Datenbank mit Ländern erstellt ähnlich dem Kleinanzeigenmodul der Kategorien.... " Nummer, Kategorie, Unterkategorie, Eingabe erlaubt"  geht genauso und man braucht nicht jedes Land vor da Bundesland und nicht jedes Bundesland vor den Kreis setzen.... von der Tabellengröße ändert sich nicht viel... aber von der ersten Variante ist die Ausgabe dach Land usw... besser und einfacher..

lemming

Zitat von: pikar am 30 November 2007, 07:35:50
weil ja das Geschlecht nicht aus einer Datenbank abgefragt werden.

Wie baue ich nun meine Code heir ein?

hi  :),

glaub du bringst da bischen was durcheinder. das geschlecht wird auch aus der datenbank abgefragt, siehe

$sql="SELECT uid,name,uname,user_from,user_avatar,[b]user_sexus[/b],user_ingroup,user_lastvisit,user_regdate,user_famstatus, (YEAR( CURRENT_DATE ) - YEAR( user_bday )) -
( RIGHT( CURRENT_DATE, 5 ) < RIGHT( user_bday, 5 ) ) AS user_age FROM ".$user_prefix."_users WHERE name != 'deleted (admin)' AND name != 'deleted (self)'";


du musst ja irgendwann vergleichen ob das ausgewählte mit dem in der datenbank übereinstimmt.

aber ich glaub langsam versteh ich dein problem :)

mhmm

$out .= "</select>";


hast du aber schon noch hinten dran gehängt oder? weils in deinem ersten post fehlt.

und die richtige sql schreibweise wäre so:

$result2=sql_query("SELECT cid, land, bundesland, stadt FROM ".$prefix."_land  ORDER BY land, bundesland", $dbi);

while(list($cid, $land, $bundesland, $stadt) = sql_fetch_row($result2, $dbi))
{
   $out .= "<option value=\"$cid\">$land-$bundesland-$stadt</option>";
}

$out .= "</select>";


hab auch mal die klammern weggelassen, vllt. machen die probs. kanns hier grad leider nicht testen. versuchs mal.

gruß



greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*

pikar

Hi, ja nun klar die Abfrage des Geschlechtes kommt natürlich aus der Datenbank, aber der Wert des Auswahlfeldes nicht...

so hab den Code hinbekommen musste so kommische "?>" einfügen... ich musste nur lange genug testen und üben

<td class="borderzeile" bgcolor="<?echo"$bgcolor1";?>"><b>Land:</b></td>
<td class="borderzeile" colspan="3" bgcolor="<?echo"$bgcolor1";?>">
<select name='user_land' size='1'>
<option value="" selected>-</option>
<?   

$result2=sql_query("SELECT cid, land, bundesland, stadt FROM ".$prefix."_land  ORDER BY land, bundesland", $dbi);

while(list($cid, $land, $bundesland, $stadt) = sql_fetch_row($result2, $dbi))
{
   echo "<option value='$cid'>$land-$bundesland-$stadt</option>";
}
?>
</select>

</td>
</tr>


habs auch kommplet in die Suche eingebaut... als nächstes ist nun das Feld Beruf drann... hab da auch ne Tabelle mit allen Berufen erstellt..... ( um Fehler beim Schreiben zu vermeiden)

danke für deine Mühen...

JoergK

@pikar

Das gehört jetzt zwar nicht zum Kontext, sondern ist mehr grundsätzlicher Natur, aber...
wenn Du Dir und allen anderen (die nen Code von Dir lesen oder bekommen) nen Gefallen tun willst, dann solltest Du statt
<?
immer
<?php
verwenden. Denn nicht auf allen Servern steht short-open-tag auf On.
Und somit wäre fehlerhaften Seitenausgaben und Nachfragen vorgebeugt. ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

pikar

so nun noch ein Frage an einen SQL Profi....

Wenn ich nun meine Ländertabelle mit dem befehl Group aufrufe....

$result2=sql_query("SELECT cid, land, landid FROM ".$prefix."_land Group by land  ORDER BY land", $dbi);

while(list($cid, $land,$landid) = sql_fetch_row($result2, $dbi))
{
   echo "<option value='$landid'>$land</option>";
}


so kommen alle Länder... das funz... ja mal schon... hab nun noch ein Feld in meine Tabelle eingefügt die "landid" heißt.... jedes Land hat ja eine ID...

so in der Tabelle "users" steht im Feld "user_land" zb. die Zahl "120" 

Wenn ich aber mit der Funktion group arbeite habe ich ja diesen wert nicht...

jetzt müsste ich ne Zwischenabfrage machen... was steht in den Felder "user_land" in der Tabelle "user"  und such mir dann in der Tabelle Land den Wert des Landes im Feld "landid" oder?

$land = mysql_fetch_array(sql_query("SELECT uname,user_land FROM ${user_prefix}_users WHERE uname='$uname'"));
$land2 = $land["user_land"];



$land3 = mysql_fetch_array(sql_query("SELECTcid, land,landid, bundesland, stadt FROM ".$prefix."_land WHERE cid='$land2'"));

$land4 = $land["land"];


wie baue ich jetzt das ganze in meine Suche ein?

hoffentlich checkt das einer was ich meine.... :red:

lemming

#7
hi :),
das lässt sich mit nem join machen

ist hier erklärt:
http://www.w3schools.com/sql/sql_join.asp
greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*

pikar

Ok das ist einfach zu hoch für mich... ich weiß nicht mal wo ich anfangen soll....

Währe es da nicht einfacher in der Tabelle Users nochmal ein Feld anzulegen im dem das LAnd gespeicher wird?

habs mal gemacht nur wie mache ich es jetz das mit einem Dropdouwnfeld zwei werte in die Datenbank gespeichtert werden?

$out="<tr valign=\"top\"><td bgcolor=\"$bgcolor2\"><b>Land<br>Bundesland/Stadt:</b></td><td colspan=\"3\" bgcolor=\"$bgcolor3\">\n";
$galres = sql_query("select cid, land,landid, bundesland, stadt from ".$prefix."_land  order by land,bundesland,stadt");
if (sql_num_rows($galres)>0)
{
$out.="<select name=\"user_land\" size=\"1\">";
while ($galitem=sql_fetch_array($galres))
{
$out.="<option value=\"".$galitem['cid']."\"";
if (isset($pvs['user_land']))
{
if ($galitem['cid']==$pvs['user_land'])
{$out.="selected";}
}




$out.=">".$galitem['land']."-->".$galitem['bundesland']."-->".$galitem['stadt']."</option>\n";


}
$out.="</select>";





}
else
{
$out.="<p>"._NOGALLERY."</p>";






}
$out.="</td></tr>";





return $out;
##################################
# Land Select Ende #
##################################
}

function save_user_land ($user_land)
{


$fields="user_land = '$user_land'"; 


   
return $fields;

}


Wie könnte ich hier z.b. den wert "landid" in dem Feld "user_land1" speichern lassen? der Wert "cid" wird im Feld "user_land" gespeichert?

pikar

hi @ all

noch mal nachfrag...

hat jemand ne ide wie man mit einem select feld bei einer auswahl aus dem feld zwei werte in der Datenbank speichert?  oder ein Beispiel dafür?  hab bisher noch nix gefunden?

ach ja hab eine abfrage eingebaut mit der man nach usern die nur online sind suchen kann änlich der suche nach usern mit Bild....

und es werden jetzt bei Usern die kein Bild haben einfach ein nopic Bild angezeigt...

nur komme ich halt mit dem Land nicht weiter...

sollte was unklar geschrieben sein einfach noch mal nachfragen....