Avatar billede menthos Nybegynder
23. maj 2004 - 19:24 Der er 31 kommentarer og
1 løsning

søgefuntion i php

jeg har lavet søgefunktionen men den virker ikke helt...:
<html>

<head>
<title>Søge fuktion</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<form action="simpel.php" method="get">
    <p align="center">Søge fuktion</p>
    <p><input type="radio" name="køn" value="Kvinde">Kvinde &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="køn" value="Mand" checked>Mand</p>
    <br>Alder
    mellem <input type="text" name="alderfra" maxlength="2" size="2"> og <input type="text" name="aldertil" maxlength="2" size="2">
    år<br><br>højde mellem <input type="text" name="højdefra" size="3" maxlength="3">
    og <input type="text" name="højdetil" size="3" maxlength="3"> cm<br><br>vægt
    mellem <input type="text" name="vægtfra" maxlength="3" size="3"> og <input type="text" name="vægttil" maxlength="3" size="3">
    kg<br><br><br></p>
    <table border="0" cellpadding="0" cellspacing="0" width="325" height="106">
        <tr>
            <td width="324" height="3" colspan="6">
                <p>Hårfarve:<br></p>
            </td>
            <td width="1" height="3"></td>
        </tr>
        <tr>
            <td width="3" height="103" rowspan="2">&nbsp;</td>
            <td width="93" height="102">
                <p><input type="checkbox" name="blond">Blond <br><input type="checkbox" name="brunt">Brunt<br><input type="checkbox" name="gråt">Gråt<br><input type="checkbox" name="andet">Andet</p>
            </td>
            <td width="2" height="102"></td>
            <td width="118" height="102">
                <p><input type="checkbox" name="Mørkeblond">Mørkeblond<br><input type="checkbox" name="mørkebrunt">Mørkebrunt<br><input type="checkbox" name="rødt">Rødt<br><input type="checkbox" name="skaldet">Skaldet</p>
            </td>
            <td width="2" height="102"></td>
            <td width="106" height="102">
                <p><input type="checkbox" name="lysebrunt">lysebrunt<br><input type="checkbox" name="sort">Sort<br><input type="checkbox" name="mørkerødt">Mørke
                rødt<br>&nbsp;</p>
            </td>
            <td width="1" height="102"></td>
        </tr>
        <tr>
            <td width="93" height="1"></td>
            <td width="2" height="1"></td>
            <td width="118" height="1"></td>
            <td width="2" height="1"></td>
            <td width="106" height="1"></td>
            <td width="1" height="1"></td>
        </tr>
    </table>
    <p>&nbsp;</p>
<table>
<TR>
<TD width="488" colspan="3">
            <p>Søger:</p>
</TD>
</TR>
<TR>
<TD width=160><INPUT type=checkbox value=Ven/Veninde
name=Wants0>Ven/Veninde</TD>
<TD width=160><INPUT type=checkbox value="Den eneste ene" name=Wants1>Den eneste
ene</TD>
<TD width=160><INPUT type=checkbox value=Kæreste name=Wants2>Kæreste</TD></TR>
<TR>
<TD width=160><INPUT type=checkbox value="Kæreste samme køn" name=Wants3>Kæreste
samme køn</TD>
<TD width=160><INPUT type=checkbox value=Par name=Wants4>Par</TD>
<TD width=160><INPUT type=checkbox value="Gå-i-byen venner"
name=Wants5>Gå-i-byen venner</TD></TR>
</table>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
<table>
<TR>
<TD width="488" colspan="3">
            <p>Partnerstatus:</p>
</TD>
</TR>
<TR>
<TD width=160><INPUT type=checkbox value=Fraskilt
name=partnerstatus0>Fraskilt</TD>
<TD width=160><INPUT type=checkbox value=Gift name=partnerstatus1>Gift</TD>
<TD width=160><INPUT type=checkbox value=Kæreste
name=partnerstatus2>Kæreste</TD></TR>
<TR>
<TD width=160><INPUT type=checkbox value=Single name=partnerstatus3>Single</TD>
<TD width=160><INPUT type=checkbox value="Løst forhold" name=partnerstatus4>Løst
forhold</TD>
        <td></td>
</TR>
</table>
    <p>&nbsp;</p>
<table>
<TR>
<TD width="488" colspan="3">
            <p>Ryger:</p>
</TD>
</TR>
<TR>
<TD width=160><INPUT type=checkbox value=Ikke name=Smokes0>Ikke</TD>
<TD width=160><INPUT type=checkbox value=Cigaretter name=Smokes1>Cigaretter</TD>
<TD width=160><INPUT type=checkbox value="Kun til fester" name=Smokes2>Kun til
fester</TD></TR>
<TR>
<TD width=160><INPUT type=checkbox value="Som en skorsten" name=Smokes3>Som en
skorsten</TD>
<TD width=160><INPUT type=checkbox value=Pibe name=Smokes4>Pibe</TD>
<TD width=160><INPUT type=checkbox value=Cigar name=Smokes5>Cigar</TD></TR>
</table>
    <p>&nbsp;</p>
    <p align="center">&nbsp;<input type="submit" name="    søg    " value="søg" style="margin:5;"></p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
</form>

<p>&nbsp;</p>
</body>

</html>

det er den første fil


<?
session_start();
?>
<HTML>
<HEAD>
</HEAD>
<?
include ('config.php');
include ('func.php');
if ($s_navn && $s_password) {
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$result = mysql_query("select * from dating_users where `alder` BETWEEN $alderfra AND $aldertil AND `køn` LIKE '$køn' AND `højde` BETWEEN $højdefra AND $højdetil AND `vægt` BETWEEN $vægtfra AND $vægttil") or die(mysql_error());
$number = mysql_num_rows($result);
print  "Din søgning gav $number resultater";
while ($row = mysql_fetch_array($result)) {
print "<li><b><a href=\"http://www.dk/visprofil.php?id=$row[brugernavn]\" target=\"_blank\">$row[brugernavn]</a></b></li>";
}
} elseif ($sog) {
print "Du skrev ikke noget søgeord!!";
} else {
}
InsertUser();
?>
og det er så den anden... problemet er at:
1. hvis der ikke står noget  i felterne ka den ikke finde ud af det
2. den mangler at tage checkboxene med..
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:04 #1
Søger man kun på de felter man skriver noget i?
Avatar billede menthos Nybegynder
23. maj 2004 - 20:26 #2
ja
Avatar billede menthos Nybegynder
23. maj 2004 - 20:31 #3
og hvis der ik er skrevet i nogle felter ska den bare vise en lsite over alle der er oprettet... evt. lave noget med 15 eller 20 på hver side
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:44 #4
Der hvor du har:
$result = mysql_query("select * from dating_users where `alder` BETWEEN $alderfra AND $aldertil AND `køn` LIKE '$køn' AND `højde` BETWEEN $højdefra AND $højdetil AND `vægt` BETWEEN $vægtfra AND $vægttil") or die(mysql_error());

prøv istedet med:
$sql = "SELECT * FROM dating_users WHERE 1=1 ";

if(!empty($alderfra) ) {
  $alderfra = invtal($alderfra);
  $sql .= "AND alder >= '$alderfra' ";
}
if(!empty($aldertil) ) {
  $aldertil = invtal($aldertil);
  $sql .= "AND alder <= '$aldertil' ";
}
if(!empty($køn) ) {
  $køn = addslashes($køn);
  $sql = "AND `køn` = '$køn' ";
}
if(! empty($højdefra) ) {
  $højdefra = intval($højdefra);
  $sql .= "AND `højde` >= '$højdefra' ";
}
if(!empty($højdetil) ) {
  $højdetil = invtal($højdetil);
  $sql .= "AND `højde` <= '$højdetil' ";
}
if(! empty($vægtfra) ) {
  $vægtfra = intval($vægtfra);
  $sql .= "AND `vægt` >= '$vægtfra' ";
}
if(!empty($vægttil) ) {
  $vægttil = invtal($vægttil);
  $sql .= "AND `vægt` <= '$vægttil' ";
}

$result = mysql_query($sql) or die(mysql_error());
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:45 #5
Prøv at se om dette virker.. Så kan vi se på checkboxene.
Avatar billede menthos Nybegynder
23. maj 2004 - 20:55 #6
der var lige nogle invtal istedet for intval :P men det fik jeg da rettet..

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND `køn` = 'Mand' AND `højde` >= '170' AND `højde` <= '180'' a
Avatar billede dennismp Nybegynder
23. maj 2004 - 20:58 #7
hehe :-)

prøv at skrive $sql ud, lige før du bruger mysql_query(). Past koden her.
Avatar billede menthos Nybegynder
23. maj 2004 - 21:20 #8
AND `køn` = 'Mand' AND `højde` >= '170' AND `højde` <= '180' AND `vægt` >= '50' AND `vægt` <= '60'
Avatar billede menthos Nybegynder
23. maj 2004 - 21:32 #9
et glemt punktum kan gøre meget :P
$sql = "AND `køn` = '$køn' ";
Avatar billede dennismp Nybegynder
23. maj 2004 - 22:07 #10
Jep - det er herligt du selv finder det :-)

Virker det så nu?
Avatar billede menthos Nybegynder
23. maj 2004 - 22:09 #11
ja så mangler checkboxene bare... :)
Avatar billede dennismp Nybegynder
24. maj 2004 - 21:46 #12
Er det alle checkboxes man skal kunne søge på?
Avatar billede menthos Nybegynder
24. maj 2004 - 21:59 #13
hvordan mener du?
Avatar billede dennismp Nybegynder
24. maj 2004 - 22:28 #14
Når jeg kigger i koden er der en masse checkboxes.. Er det dem, eller de andre fra forrige spørgsmål, du "mangler".
Avatar billede menthos Nybegynder
24. maj 2004 - 22:31 #15
det er kun dem der står i den her kode... de andre ting behøves man ikke kunne søge på :)
Avatar billede menthos Nybegynder
25. maj 2004 - 22:02 #16
jeg ville være glad hvis du kunne nå og lave den til i aften eller aller senest i morgen :)
Avatar billede dennismp Nybegynder
25. maj 2004 - 23:34 #17
Jeg kigger på det nu (er kommet hjem for en times siden fra uni)..
Avatar billede dennismp Nybegynder
25. maj 2004 - 23:57 #18
Kan du ikke lave dine hårfarve checkboxes på samme måde som fx. partnerstatus-checkboxe?

Så:
<input type="checkbox" name="blond">Blond

bliver til:
<input type="checkbox" name="hårfarve" value="blond">Blond..

I så fald har jeg et forslag:
<?php
$fieldCheckMap = array();
// til hårfarve: $fieldCheckMap[ ... ] ..
$fieldCheckMap['type'] = array( 'Wants0', 'Wants1', 'Wants2', 'Wants3', 'Wants4');
$fieldCheckMap['status'] = array( 'partnerstatus0', 'partnerstatus1', 'partnerstatus2', 'partnerstatus3', 'partnerstatus4');
$fieldCheckMap['rygning'] = array( 'smokes0', 'smokes1', 'smokes2', 'smokes3', 'smokes4', 'smokes5');

// Lav SQL
$checkClause = array();
foreach($fieldCheckMap as $field => $checkBoxNames) {
  $checkClause = array();
  foreach($checkBoxNames as $cBName ) {
      if( isset($_POST[$cBName]) && !empty($_POST[$cBName]) ) {
        $checkClause[] = $field.'=\'' . addslashes($_POST[$cBName]) . '\'';
      }
  }
  if( count($checkClause) > 0 )
      $sql .= ' AND ( ' . join(' OR ', $checkClause) . ' ) ';
}

Så er SQL'en klar..

Lidt forklaring til
$fieldCheckMap['type'] = array( 'Wants0', 'Wants1', 'Wants2', 'Wants3', 'Wants4');

'type' er feltnavnet i databasen.
'Wants0' .. 'Wants4' .. er de checkboxes der indeholder værdier, som skal sammenlignes med feltet i databasen. Hvis Wants0 og Wants3 hakkes af, så bliver SQL'en til: type='Værdien af Wants0' OR type='Værdien af Wants3'..
Avatar billede menthos Nybegynder
26. maj 2004 - 12:59 #19
hvordan fører jeg den så sammen med det andet sql du har lavet?
Avatar billede menthos Nybegynder
26. maj 2004 - 13:29 #20
du ska lige huske at php'en ikke ligger i samme fil som formlen gør...
Avatar billede dennismp Nybegynder
26. maj 2004 - 22:15 #21
Du tilføjer den bare i slutningen af koden .. før
$result = mysql_query($sql) or die(mysql_error());

og efter if(..)'erne.
Avatar billede menthos Nybegynder
26. maj 2004 - 22:31 #22
den virker ikke... :( den viser bare hvid skærm... :S
Avatar billede dennismp Nybegynder
26. maj 2004 - 22:57 #23
Prøv at print $sql'en ud på skærmen
Avatar billede menthos Nybegynder
26. maj 2004 - 22:59 #24
har prøvet så gir det også bare hvis skærm :(
Avatar billede dennismp Nybegynder
26. maj 2004 - 23:16 #25
Prøv at bruge show source og se om der er en fejl gemt i sourcen...

ellers giv mig en url, så kan jeg prøve (er snart færdig så jeg kan komme hjem og se ordenligt).
Avatar billede menthos Nybegynder
26. maj 2004 - 23:20 #26
Avatar billede dennismp Nybegynder
27. maj 2004 - 12:21 #27
Hvor er selve søgesiden?
Avatar billede menthos Nybegynder
27. maj 2004 - 12:34 #28
Avatar billede dennismp Nybegynder
27. maj 2004 - 12:57 #29
Prøv at rette så den form har method="post" (eller ret i simpel.php så den bruger $_GET istedet for $_POST)
Avatar billede menthos Nybegynder
27. maj 2004 - 13:28 #30
det hjalp :) nu virker det :D svar så får du dine points :)
Avatar billede dennismp Nybegynder
27. maj 2004 - 13:37 #31
Herligt :)

Beklager jeg ikke fik set på det igår - men nu er det da løst :)
Avatar billede menthos Nybegynder
27. maj 2004 - 13:46 #32
det går nok :) jeg kunne heller ikke kommer på i går aftes :( mit internet fuckede lidt op..
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester