Die Domain www.v-basic.de steht zum Verkauf: Interesse?

 
 Statistik  FAQ   RSS-ABO  Impressum 
Partner: nicolas-stey.de | drsoong | Herbert Software | legalsoft | The Trouble Shooter | v-basic

Willkommen Gast, aktuell ist der 07.02.2012, 20:04 Uhr

Partner der Proco werden?
 Übersicht  Registrieren  Suche  Neue Posts  Tipps & Tuts  Chat 
 Programming Community » Sprachen » PHP / MySQL / SQLite » SQL Abfrage in php mit mehreren Abfrageoptionen
     [Passwort vergessen]

Neuer Thread Neue Antwort  
 
Beobachter: 1  |  Moderiert von: cinicDrSoong

SQL Abfrage in php mit mehreren Abfrageoptionen

Seite: 1
Autor
Beitrag
Profil Savage Beitrag  SQL Abfrage in php mit mehreren Abfrageoptionen - Beitrag verfasst: 06.11.2006, 13:34 Uhr        Post den Moderatoren melden    Zitieren  
Beginner

Anmeldedatum: 06.11.2006
2 Posts und 1 Themen.


Hallo,

ich hoffe ist hier der richtige Platz für die Frage.
Mein Problem:
Ich möchte meine Datenbank nach mehreren sachen abfragen, wo ich per optionsfeld jeweils die suchmöglichkeiten vorgebe (wie zum Beispielbei Autoscout24.de)
habe in meinem Fall jetzt zur Zeit nur 2 Suchpotionen (Bundesland,Geschlecht)und das nur von Usern die aktiviert sind.
Habes erstmal alles in eine Suchanfrage gesteckt also :
Code:
1 "SELECT * FROM user WHERE aktiv=1 AND regionid like '%".$regionid."%' AND geschlbin like '%".$geschlbin."%' "

Möchte aber noch meh sachen zum Auswählen vorgeben, aber auch so, daß wenn der User eine sache nicht auswählt das diese dann sozusagen icht brücksichtigt wird und nur die sachen gesucht werden die er auch selektiert.
Also er will zum Beispiel nur User sehen die weiblich sind das Bundesland ist ihm egal.
jetzt habe ich es so gemacht das ich alleBundesländer 001-016 vergeben haben und wenn er sozusagen alle Bundesländer auswählt das dann für die suche like "0" eingesetzt wird weil ja die 0 so in allen vorkommt geht ist aber wie ich finde kein saubere Lösung.
Möchte auch gerne noch die Optionen des Alters dazumachen aber wie.Der User soll frei wählen können halt von 20-30 Jahre also mit zwei Feldern einmal startalter und das maxalter, in eine richtung wäre mir klar mit < oder > und dann die Zahl.
aber wie wenn beide zusammen sein sollen also alles dazwischen genommen werden soll.
Vieleicht hat ja jemand von euch so ein Script fertig wo ich halt die Datenbankbezeichnungen ändern müßte und die entsprechnden Kategorien.
Hoffe es war einigermaßen verständlich.
Schonmal Danke im vorraus.
Mannlernt ja am besten von anderen scripten aber diese Datenbankabfragen findet man ja auf den seiten nicht also die Quelltexte.

Mit freundlichen Grüßen
Savage


   Link  Link  85.178.54.44 Nach Oben Nach oben
Profil cinic Beitrag   Beitrag verfasst: 06.11.2006, 13:51 Uhr        Post den Moderatoren melden    Zitieren  
Admin





Anmeldedatum: 05.08.2004
426 Posts und 116 Themen.


Du kannst die SQL-Anweisung nach und nach bestücken.
Außerdem solltest du bei solchen Abfragen möglichst von dem Parameter "like" abrücken, wenn es auch anders geht, da dieser einerseits sehr langsam arbeitet und andererseits auch sicherheitstechnisch anfälliger ist.

Ich würde nun jeder Auswahlbox, um sie optional zu machen, einfach eine Option voranstellen, die "Bitte wählen" oder im Fall des Bundeslandes dann eben "Alle" heißt, wie du sie bereits hast.

Code:
1
2
3
4
5
6
7
8
9
10
$query="SELECT * FROM user WHERE aktiv=1";

//Beispielsweise mit einer IF-ABfrage

IF ($_POST[bundesland]!=""){
   $query.=" AND $regionid='$regionid'";
}
IF ($_POST[geschlecht]!=""){
   $query.=" AND geschlbin='$geschlbin'";
}


____________________
v-basic.de
   Link  62.227.139.253 Nach Oben Nach oben
Profil Savage Beitrag   Beitrag verfasst: 07.11.2006, 1:10 Uhr        Post den Moderatoren melden    Zitieren  
Beginner

Anmeldedatum: 06.11.2006
2 Posts und 1 Themen.


Danke erstmal, nur leider komm ich damit noch imme nicht zurecht. Hab da immernoch Fehlermeldung Query was empty

ich hab das ganze auf 2 Seiten gemacht also eine Seite die Suchmaske und die 2. Seite die suche selber und die Ergebnisausgabe.

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
include "config.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

</head>
<body>



<table width="500" border="0" cellspacing="0" cellpadding="5" class="rahmen">
              
<tr> 
                
<td colspan="2"><b>Usersuche</b></td>
</tr>
              
<tr> 
                
<td colspan="2"> 
                  
<form name="suche" method="post" action="index.php?open=suchetop">
                    
<table width="430" cellspacing="0" align="center" cellpadding="0" border="0">
                      
<tr> 
                        
<td colspan="3" valign="top">  </td>
</tr>
                      
<tr> 
                        
<td width="225"> 
                          
<div align="left">Wählen Sie ein Bundesland<br>
                            
<select name='regionid' class="fld_c">
                              
<option value="" selected>bitte wählen</option>
                              
<option value="1">Baden-Württemberg</option>
                              
<option value="2">Bayern</option>
                              
<option value="3">Berlin</option>
                              
</select>
                          </div></td>
<td width="10" valign="top"></td>
<td valign="top" width="225">suche (optional)<br>
  <select name='geschlsuche' class="fld_c">
    <option value="" selected>bitte wählen</option>
    <option value="">keine Angabe</option>
    <option value="1">Mann</option>
    <option value="2">Frau</option>
    <option value=""></option>
  </select></td>
</tr>
                      
<tr>
                        
<td width="225"></td>
<td width="10" valign="top"></td>
<td valign="top" width="225"></td>
</tr>
<tr>
<td valign="top" width="225">Geschlecht (optional)<br>
                      
<select name='geschlbin' class="fld_c">
                            
<option value="" selected>bitte wählen</option>
                            
<option value="">keine Angabe</option>
                            
<option value="2">Frau</option>
                            
<option value="1">Mann</option>

</select>                        
</td>
<td width="10" valign="top"></td>
<td valign="top" width="225"></td>
</tr>
<tr>
                        
<td width="225"></td>
<td width="10" valign="top"></td>
<td valign="top" width="225"></td>
</tr>
  <tr>
    <td valign="top" width="225"></td>
    <td ></td>
    <td width="225"></td>
</tr>
                    
<tr> 
                        
<td colspan="3"></td>
</tr>
     
                      
<tr> 
                        
<td width="225" valign="top"> 
</td>
</tr>
                      
<tr> 
                        
<td colspan="3" valign="middle"> 
                          
<div align="center"><img src="../gfx/dot.gif" width="1" height="5"><br>
                            
<input type="submit" name="Abschicken" value="Suche starten">
                          </div></td>
</tr>
</table>
</form></td>
</tr>
</table>

</body>
</html>


2. Seite suchetop.php

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?
start_page
("Die 50 neuesten Mitglieder");
echo 
"<table width="100%" border="0" bgcolor="#990000" cellpadding="0" cellspacing="3" background="images/barbg2.gif">
<TR><TD><FONT color="#ff9933"><b>Die 50 neuesten Mitglieder</b></FONT></TD></TR></TABLE>
<
table width="100%" border="0" bgcolor="#000000" cellpadding="3" cellspacing="0" style="border-style: solid; border-width: 1px; border-color:#990000">
<
TR><TD valign="top"><FONT color="#CCCCCC">
";
$query ="
select from user where aktiv=";

if (!empty($regionid)) {
$query.= "
AND regionid '".$regionid."' ";
}

if (!empty($geschlsuche)) {
$query.= "
AND geschlsuche '".$geschlsuche."' ";
}

if (!empty($geschlbin)) {
$query.= "
AND geschlbin '".$geschlbin."' ";
}


$query.= "
ORDER BY id DESC LIMIT 50";
$select = mysql_query($query);




$i=1;

$result1=mysql_db_query($dbname,$query1,$conn) or die (mysql_error());
while($date=mysql_fetch_array($result1))
{
$id= $date[id];
$user= $date[user];
$jahre= $date[jahre];
$hoehe= $date[gross];
$gewicht= $date[gewicht];
$headline= $date[headline];
$ichsuche= $date[ichsuche];
$online= $date[online];
if ($online=="
online" AND $ichsuche!="Unsichtbar") {
$headline="
$headline";
$onzeiger="
<FONT color=#00ff00><FONT size=3>      $ichsuche</FONT></FONT>";
} else {
$headline="$headline";
$onzeiger="";
}
$dateiname="nix";
$query3="SELECT * FROM userbilder WHERE userid='$id' AND zeigen='vorschau' LIMIT 1";
$result3=mysql_db_query($dbname,$query3,$conn) or die (mysql_error());
while(
$date=mysql_fetch_array($result3))
{
$dateiname$date[dateiname];
$jugendschutz$date[jugendschutz];
$freigeschaltet$date[freigeschaltet];
}
$color = ($i 2) ? "#272727" "#000000";
if (
$dateiname!="nix") {
if (
$jugendschutz=="1" OR $freigeschaltet=="0") {
echo 
"<TR><TD vAlign="TOP" width="60" bgcolor="$color"><a style='cursor:pointer;cursor:hand;' onclick="window.open('index.php?open=profil&user=$id','profil','resizable=no, location=no, menubar=no, status=no,scrollbars=yes,width=500,height=550')"><IMG src="images/ab18.gif" borde="0" width="60" alt=""></A></TD><TD vAlign="TOP" bgcolor="$color"> <a style='cursor:pointer;cursor:hand;' onclick="window.open('index.php?open=profil&user=$id','profil','resizable=no, location=no, menubar=no, status=no,scrollbars=yes,width=500,height=550')"> <b>$user</b></A> - $jahre | $hoehe | $gewicht $onzeiger<br><br>$headline</TD></TR>";
} else {
echo 
"<TR><TD vAlign="TOP" width="60" bgcolor="$color"><a style='cursor:pointer;cursor:hand;' onclick="window.open('index.php?open=profil&user=$id','profil','resizable=no, location=no, menubar=no, status=no,scrollbars=yes,width=500,height=550')"><IMG src="userbilder/$id/klein/$dateiname" borde="0" width="60" alt=""></A></TD><TD vAlign="TOP" bgcolor="$color"> <a style='cursor:pointer;cursor:hand;' onclick="window.open('index.php?open=profil&user=$id','profil','resizable=no, location=no, menubar=no, status=no,scrollbars=yes,width=500,height=550')"> <b>$user</b></A> - $jahre | $hoehe | $gewicht $onzeiger<br><br>$headline</TD></TR>";
}} else {
echo 
"<TR><TD vAlign="TOP" width="60" bgcolor="$color"></TD><TD vAlign="TOP" bgcolor="$color"> <a style='cursor:pointer;cursor:hand;' onclick="window.open('index.php?open=profil&user=$id','profil','resizable=no, location=no, menubar=no, status=no,scrollbars=yes,width=500,height=550')"> <b>$user</b></A> - $jahre | $hoehe | $gewicht $onzeiger<br><br>$headline</TD></TR>";
}
$i++;
}
echo 
"</FONT></TD></TR></TABLE>";
stop_page();
?>


Sorry ich weiß ist echt viel jetzt hier geworden aber leider weiß ich selbst nicht wo hier genau der Fehler steckt und wenn ihr mir helfen wollt und nur so kleine sachen schreibt mgen die zwar richtig sein aber ich weiß teilweise trotzdem noch nicht genau wo sie dann hingehören.
Hab echt schon jetzt Tage und Nächtelang zig Seiten durchgelesen aber wenn ich was finde funktioniert es nicht (weil ich bestimmt auch nicht alles richtig mache) aber die meisten Hilfen zur Datenbankabfrage gehen immer davon aus , das alles auf jeden fall abgefragt wird und arbeitenmit der Zeile von oben aus meinem ersten Beitrag.

Trotdem nochmalschon ganz vielen Dank für die Unterstützung.
   Link  Link  85.178.54.44 Nach Oben Nach oben
Profil cinic Beitrag   Beitrag verfasst: 08.11.2006, 19:19 Uhr        Post den Moderatoren melden    Zitieren  
Admin





Anmeldedatum: 05.08.2004
426 Posts und 116 Themen.


Code:
1
2
3
4
5
6
7
$select = mysql_query($query);


$i=1;

$result1=mysql_db_query($dbname,$query1,$conn) or die (mysql_error());
while($date=mysql_fetch_array($result1))


Hey ganz einfach, du hast die Ergebnismenge in $select, aber verweist auf $query1
Des Weiteren habe ich gesehen, dass du immer mit mysql_db_query abfragst.
Du könntest auch einmal im Script oben die Datenbank auswählen
mit:

Code:
1 mysql_select_db("[datenbankname]",$conn);


Nun kannst du statt

mysql_db_query($dbname,$query1,$conn);

Verkürzt
mysql_query($query1);

schreiben.


Also:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query ="select * from user where aktiv=1 ";

if (!empty($regionid)) {
$query.= "AND regionid = '".$regionid."' ";
}

if (!empty($geschlsuche)) {
$query.= "AND geschlsuche = '".$geschlsuche."' ";
}

if (!empty($geschlbin)) {
$query.= "AND geschlbin = '".$geschlbin."' ";
}


$query.= ") ORDER BY id DESC LIMIT 50";

$i=1;

$result1=mysql_query($query);
while($date=mysql_fetch_array($result1)) 
...
...


____________________
v-basic.de
   Link  62.227.173.73 Nach Oben Nach oben
Seite: 1

Neuer Thread Neue Antwort  
 


Information
Wo bin ich?
 Programming Community » Sprachen » PHP / MySQL / SQLite » SQL Abfrage in php mit mehreren Abfrageoptionen
Rechte
Du darfst: Beiträge lesen, Themen eröffnen, auf Beiträge antworten und hier keine Umfragen erstellen
Statistik
Seit dem 31.07.2002 (3478 Tage) wurden 7013 Beiträge in 1977 Themen verfasst.
Wir haben 1278 User und begrüßen unser neustes Mitglied: g.schief
Rekord: 8 registrierte waren gleichzeitig hier (27.07.2006, 14:54 Uhr).
Im Moment: 0 registrierte Benutzer und 1 Gast online! 

excel access datum outlook excel mysql sql access datenbank timer string datei auslesen array vb und php sqlite exe exe zu vbp converter uhr mail ftp listbox

cin.board | v1.07 2004-2009 Datenschutzerklärung

© STEY MEDIA
Nicolas Stey - Internetdienstleistungen |||  | |