Her er koden. Jeg har ikke kunnet teste om jeg har lavet nogen fejl, da jeg ikke selv har tabellen, men hvis der går noget galt, så skriv og vi finder ud af det.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Søgning</title> </head>
// Vi tjekker om bruger nu også har foretaget et valg i en eller flere af felterne. if(isset($_POST['user']) OR $_POST['sex'] != 'NULL' OR $_POST['seeks'] != 'NULL' OR $_POST['alder'] != 'NULL') {
// Vi connecter. mysql_connect("localhost","root",""); mysql_select_db("YOURDB");
// Vi starter forsigtigt på at formulere søgestrengen. $search_for = "SELECT * FROM ld_users WHERE ";
// Vi tjekker hvilke felter der er foretaget valg i og ignorerer resten. if(isset($_POST['user'])) { $search_for = $search_for."user LIKE '%".$_POST['user']."%' AND "; } if($_POST['sex'] != "NULL") { $search_for = $search_for."sex LIKE '%".$_POST['sex']."%' AND "; } if($_POST['seeks'] != "NULL") { $search_for = $search_for."seeks LIKE '%".$_POST['seeks']."%' AND "; } if($_POST['alder'] != "NULL") { // Udfyld selv. }
// Vi hugger det sidste AND væk. $search_for = substr($search_for, 0, strrchr($search_for, "A"));
// Vi færdiggør vores søgestring med en order by, så resultaterne bliver udskrevet i alfabetisk rækkefølge efter navnet. $search_for = $search_for."ORDER BY user";
// Endelig sender vi søgningen afsted. $result = mysql_query($search_for);
// Så viser vi resultatet. Som det er nu vises kun brugernavne på dem der findes. Du må selv sætte links ind, eller hvad der nu skal ske. echo "<table>\n"; while($row = mysql_fetch_array($result)) { echo "<tr><td>".$row['user']."</td></tr>\n"; } echo "</table>\n"; }
// Hvis brugeren har submitted formen uden at vælge nogen søgekriterier, kommer der en fejlmeddelse. } else { echo "Du skal definere en søgning!"; } } ?>
Det virker ikke.. Har rettet det til men den kommer med denne fejl: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in --- on line 101
og du har glemt at lave til den der hedder region.. Men her er tabellen: CREATE TABLE ld_users ( id int(11) NOT NULL auto_increment, username varchar(50) NOT NULL default '', password varchar(50) NOT NULL default '', realname mediumtext NOT NULL, age int(3) NOT NULL default '0', email varchar(50) NOT NULL default '', sex varchar(6) NOT NULL default '', seek varchar(20) NOT NULL default '', region varchar(20) NOT NULL default '', height int(3) default NULL, weight int(3) default NULL, haircolor varchar(30) default NULL, eyecolor varchar(30) default NULL, areacode int(4) NOT NULL default '0', birthday varchar(30) NOT NULL default '', starsign varchar(50) default NULL, smooking varchar(50) default NULL, job varchar(50) default NULL, education varchar(50) default NULL, info longtext NOT NULL, status varchar(20) NOT NULL default '', userstatus int(2) NOT NULL default '0', oprettet varchar(30) NOT NULL default '', picture varchar(80) NOT NULL default '0', profilehits int(10) default NULL, PRIMARY KEY (id), UNIQUE KEY id (id) ) TYPE=MyISAM;
og koden som jeg har rettet den til: <? session_start(); include("inc/mysql.php"); include("inc/tjek_login.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Søgning</title> <STYLE type=text/css> #form{ background:#F2F2F2; border:1px dotted; font-size: 12px; font-family: verdana; color: #CC0000; } </STYLE> </head>
// Vi tjekker om bruger nu også har foretaget et valg i en eller flere af felterne. if(isset($_POST['user']) OR $_POST['sex'] != 'NULL' OR $_POST['seeks'] != 'NULL' OR $_POST['alder'] != 'NULL') {
// Vi starter forsigtigt på at formulere søgestrengen. $search_for = "SELECT * FROM ld_users WHERE ";
// Vi tjekker hvilke felter der er foretaget valg i og ignorerer resten. if(isset($_POST['user'])) { $search_for = $search_for."username LIKE '%".$_POST['user']."%' AND "; } if($_POST['sex'] != "NULL") { $search_for = $search_for."sex LIKE '%".$_POST['sex']."%' AND "; } if($_POST['seeks'] != "NULL") { $search_for = $search_for."seek LIKE '%".$_POST['seeks']."%' AND "; } if($_POST['alder'] != "NULL") { // Udfyld selv. }
// Vi hugger det sidste AND væk. $search_for = substr($search_for, 0, strrchr($search_for, "A"));
// Vi færdiggør vores søgestring med en order by, så resultaterne bliver udskrevet i alfabetisk rækkefølge efter navnet. $search_for = $search_for."ORDER BY username";
// Endelig sender vi søgningen afsted. $result = mysql_query($search_for);
// Så viser vi resultatet. Som det er nu vises kun brugernavne på dem der findes. Du må selv sætte links ind, eller hvad der nu skal ske. echo "<table>\n"; while($row = mysql_fetch_array($result)) { echo "<tr><td>".$row['username']."</td></tr>\n"; } echo "</table>\n"; }
// Hvis brugeren har submitted formen uden at vælge nogen søgekriterier, kommer der en fejlmeddelse. } else { echo "Du skal definere en søgning!"; }
?>
</body> </html>
Håber du lige vil rette til og lave den der hedder region :)
Her er koden der virker. Det viste sig at du havde givet mig de forkerte navne på databasefelterne. Desuden har jeg tilføjet region samt en funktion der fortæller brugeren hvis søgningen ikke fandt noget. Forresten... når den side det skal på engang bliver til noget, så smid lige et link til andreasm snabela softhome punktum net. Så jeg kan se "værket" i funktion ;-)
<? session_start(); include("inc/mysql.php"); include("inc/tjek_login.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Søgning</title> <STYLE type=text/css> #form{ background:#F2F2F2; border:1px dotted; font-size: 12px; font-family: verdana; color: #CC0000; } </STYLE> </head>
// Vi tjekker om bruger nu også har foretaget et valg i en eller flere af felterne. if($_POST['username'] != '' OR $_POST['sex'] != 'NULL' OR $_POST['seek'] != 'NULL' OR $_POST['region'] != 'NULL' OR $_POST['age'] != 'NULL') {
// Vi starter forsigtigt på at formulere søgestrengen. $search_for = "SELECT * FROM ld_users WHERE ";
// Vi tjekker hvilke felter der er foretaget valg i og ignorerer resten. if($_POST['username'] != '') { $search_for = $search_for."username LIKE '%".$_POST['username']."%' AND "; }
if($_POST['sex'] != "NULL") { $search_for = $search_for."sex LIKE '%".$_POST['sex']."%' AND "; }
if($_POST['seek'] != "NULL") { $search_for = $search_for."seek LIKE '%".$_POST['seek']."%' AND "; }
if($_POST['region'] != "NULL") { $search_for = $search_for."region LIKE '%".$_POST['region']."%' AND "; }
if($_POST['age'] != "NULL") { // Udfyld selv. }
// Vi hugger det sidste AND væk. $search_for = substr($search_for, 0, -4);
// Vi færdiggør vores søgestring med en order by, så resultaterne bliver udskrevet i alfabetisk rækkefølge efter navnet. $search_for = $search_for."ORDER BY username";
// Endelig sender vi søgningen afsted. $result = mysql_query($search_for);
// Vi tjekker om søgningen overhovedet fandt nogen brugere der passer på søgningen. if(mysql_num_rows($result) > 0) { // Så viser vi resultatet. Som det er nu vises kun brugernavne på dem der findes. Du må selv sætte links ind, eller hvad der nu skal ske. echo "<table>\n"; while($row = mysql_fetch_array($result)) { echo "<tr><td>".$row['username']."</td></tr>\n"; } echo "</table>\n"; } else { // Hvis søgningen ikke fandt nogen. echo "Søgningen fandt ikke nogen brugere der passer på kriterierne."; }
// Hvis brugeren har submitted formen uden at vælge nogen søgekriterier, kommer der en fejlmeddelse. } else { echo "Du skal definere en søgning!"; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.