Avatar billede bubbibjqrn Nybegynder
10. januar 2008 - 13:09 Der er 8 kommentarer og
1 løsning

søgnings fejl i MySqL

Hej mit spørgsmål går ud på at jeg har denne her kode:

<form action="sogning.php" method="POST">
<table>
  <tr>
    <td><input type="checkbox" name="villa" value="villa">Villa</td>
    <td><input type="checkbox" name="raekkehus" value="raekkehus">Rækkehus</td>
    <td><input type="checkbox" name="ejerlejlighed" value="ejerlejlighed">Ejerlejlighed</td>
    <td><input type="checkbox" name="villalejlighed" value="villalejlighed">Villalejlighed</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="andelsbolig" value="andelsbolig">Andelsbolig</td>
    <td><input type="checkbox" name="boligprojekter" value="boligprojekter">Boligprojekter</td>
    <td><input type="checkbox" name="fritidshus" value="fritidshus">Fritidshus</td>
    <td><input type="checkbox" name="huspaalandet" value="huspaalandet">Hus på landet</td>
  </tr>
  <tr>
      <td><input type="checkbox" name="landbrug" value="landbrug">Landbrug</td>
      <td><input type="checkbox" name="helaarsgrund" value="helaarsgrund">Helårsgrund</td>
      <td><input type="checkbox" name="fritidsgrund" value="fritidsgrund">Fritidsgrund </td>
  </tr>
</table>
<br />
<table>
  <tr>
    <td width="70px">Kontant:</td>
    <td>Fra:<input type="text" name="minimum"></td>
    <td>Til:<input type="text" name="maximum"></td>
  </tr>
</table>
<table>
  <tr>
    <td width="70px">Areal:</td>
    <td>Fra:<input type="text" name="minimum_areal"></td>
    <td>Til:<input type="text" name="maximum_areal"></td>
  </tr>
</table>
<br />
<table>
  <tr>
      <td width="70px">Vejnavn:</td>
      <td><input type="text" name="vejnavn"></td>
  </tr>
</table>
<table>
  <tr>
      <td width="70px">Bynavn:</td>
      <td><input type="text" name="bynavn"></td>
  </tr>
</table>
<table>
  <tr>
      <td width="70px">Post nr:</td>
      <td><input type="text" name="postnr"></td>
  </tr>
</table>
<input type="submit" value="Søg"/>
</form>



$villa = $_POST['villa'];
$raekkehus = $_POST['raekkehus'];
$ejerlejlighed = $_POST['ejerlejlighed'];
$villalejlighed = $_POST['villalejlighed'];
$andelsbolig = $_POST['andelsbolig'];
$boligprojekter = $_POST['boligprojekter'];
$fritidshus = $_POST['fritidshus'];
$huspaalandet = $_POST['huspaalandet'];
$landbrug = $_POST['landbrug'];
$helaarsgrund = $_POST['helaarsgrund'];
$fritidsgrund = $_POST['fritidsgrund'];
$minimum = $_POST['minimum'];
$maximum = $_POST['maximum'];
$minimum_areal = $_POST['minimum_areal'];
$maximum_areal = $_POST['maximum_areal'];
$vejnavn = $_POST['vejnavn'];
$bynavn = $_POST['bynavn'];
$postnr = $_POST['postnr'];


$connection = mysql_connect("localhost","root");

if (!$connection)
{
  die('Kunne ikke forbinde til serveren: ' . mysql_error());
}
mysql_select_db("boligsalg", $connection);

$sql = mysql_query("SELECT * FROM sag WHERE type LIKE '%".$raekkehus."' OR LIKE '%".$villa."'");

$test = mysql_fetch_array($sql);

echo $test['type'];

men problemet er at jeg ikke kan få den til at fungere den vil bare ikke give mig de rigtige ting ud som jeg søger på. hvis det er jeg fjerner  OR LIKE '%".$villa."'" så kan jeg godt få et resultat ud men lige så snart jeg vil have flere så virker den ikke..

håber der er nogen der kan hjælpe mig
Avatar billede pidgeot Nybegynder
10. januar 2008 - 13:11 #1
$sql = mysql_query("SELECT * FROM sag WHERE type LIKE '%".$raekkehus."' OR LIKE '%".$villa."'");

skal ændres til

$sql = mysql_query("SELECT * FROM sag WHERE type LIKE '%".$raekkehus."' OR type LIKE '%".$villa."'");

Det er i øvrigt en rigtig god ide at bruge or die(mysql_error()) umiddelbart efter slut parantesen  - så får du at vide hvis der er fejl i din query, og hvor fejlen er.
Avatar billede w13 Novice
10. januar 2008 - 13:12 #2
Du skal skrive type igen:

$sql = mysql_query("SELECT * FROM sag WHERE type LIKE '%".$raekkehus."' OR type LIKE '%".$villa."'");

Muligvis vil dette også fungere, så du kun skal skrive type én gang:

$sql = mysql_query("SELECT * FROM sag WHERE type LIKE ('%".$raekkehus."' OR '%".$villa."')");
Avatar billede bubbibjqrn Nybegynder
10. januar 2008 - 13:15 #3
det virker stadigvæk ikke den ignorer fuldstændig det der bliver skrevet den smider bare typen villa ud osse selv om jeg markere raekkehus
Avatar billede w13 Novice
10. januar 2008 - 13:19 #4
Hvad kan feltet type indeholde?
Avatar billede bubbibjqrn Nybegynder
10. januar 2008 - 13:22 #5
jeg har nogle check bokse som jeg afkrydser og ud fra dem skal sql'en så lave en søgning i databasen og finde det jeg har afkrydset f.eks. hvis jeg afkrydser villa så skal den gå databasen og søge efter villa, men hvis jeg så både vil søge på villa og raekkehus så skal den gå ind og lede efter begge dele
Avatar billede w13 Novice
10. januar 2008 - 13:25 #6
Hvorfor bruger du så "LIKE", hvorfor ikke bare:

$sql = mysql_query("SELECT * FROM sag WHERE type = '".$raekkehus."' OR type = '".$villa."'");

Og muligvis bør du udskrive værdierne af $raekkehus og $villa for at se, om begge er sat rigtigt.
Avatar billede bubbibjqrn Nybegynder
10. januar 2008 - 13:40 #7
har fundet fejlen

$sql = mysql_query("SELECT * FROM sag WHERE type = '".$raekkehus."' OR type = '".$villa."'");

så send du bare et svar
Avatar billede w13 Novice
10. januar 2008 - 14:11 #8
Okidoke.
Avatar billede w13 Novice
10. januar 2008 - 15:00 #9
Takker for point!
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
Computerworld tilbyder specialiserede kurser i database-management

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