PHP/SQL vraag zoeken werkt niet.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit met een probleempje.
Ik ben bezig met een website waar in ik een zoekfunctie naar vragen in wil bouwen.
Nu werkt het allemaal wel, maar niet zoals de manier waarop ik het gewild zou hebben.

Dit is wat ik heb:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include("dbconnect.php");
?>
<html>
<head>
       <title>Zoeken</title>
</head>
<body>
<form action="zoek_vraag.php" method="post">
<input type="text" name="vraag" value="vraag">
<input type="Submit" value="Zoeken"

</form>

</body>
</html>


PHP:
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
<?php
include("dbconnect.php");

if (!empty($_POST)){

$query="select * from vragen WHERE
 vraag LIKE '%". $_post["vraag"] . "%'";
$result = mysql_query ($query) or die ("FOUT: " . Mysql_error());
$aantal = mysql_num_rows($result);
}else{
}
?>
<HEAD>
  <Title>Gezocht</title>
</HEAD>
<body>

<h3> U heeft gezocht naar: <?php echo($_post["vraag"]);?></h3>
<?php
if ($aantal == 0){
  echo("geen resultaat gevonden met <B> ".
  $_POST["vraag"]. "</b><BR>\n");
}else{
  echo("<b>query <hr>");
  echo("<b>Er werden $aantal records gevonden:</b><br>");
  while (list($gebruikersID, $vraagID, $antwoorden, $subgroepID, $vraag) =
  mysql_fetch_row($result)){

Echo("Record $vraagID: $antwoorden<BR><BR> $vraag <br>\n");

}}

?>
</body>
</html>


Allemaal leuk en aardig, maar als ik iets vaags in typ, zeg maar "iohwet" dan komt hij op het zelfde antwoord als de vorige keer, en meld niet dat er geen records zijn gevonden. Weet er iemand toevallig het antwoord op deze vraag?
Ik zie het namelijk niet.

[ Voor 20% gewijzigd door Verwijderd op 28-10-2003 11:20 ]


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Eerste wat opvalt:
gebruik $_POST ipv $_post

En edit je post even dat je [ php ] gebruikt ipv [ code ]

[ Voor 40% gewijzigd door Rotjeknor op 28-10-2003 11:16 ]

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • Scaror
  • Registratie: September 2003
  • Laatst online: 02-09 22:39

Scaror

Don't watch this!

Je gebruikt $_POST de ene keer wel goed, maar de andere keer gebruik je weer $_post. Volgens mijn MOET dit moet hoofdletters.

Edit: net te laat

[ Voor 8% gewijzigd door Scaror op 28-10-2003 11:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aargh, mijn eeuwige slordigheid :X
Mijn dank grenst aan hondsdolheid heren! :)

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Tipje:
Zet voortaan error_reporting(E_ALL); bovenaan elk script, dan hoef je voortaan niet meer dit soort vragen te stellen (-:

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank je wel voor de tip, scheelt hoop ik weer een topic ;)

O, en weet iemand trouwens hoe ik het kan regelen dat hij niet op hol slaat bij meer dan een woord?
Of wordt dat te ingewikkeld?

[ Voor 54% gewijzigd door Verwijderd op 28-10-2003 15:04 ]


Acties:
  • 0 Henk 'm!

  • Scaror
  • Registratie: September 2003
  • Laatst online: 02-09 22:39

Scaror

Don't watch this!

O, en weet iemand trouwens hoe ik het kan regelen dat hij niet op hol slaat bij meer dan een woord?
Of wordt dat te ingewikkeld?
Als je meerdere woorden invult dan zal je query nu weinig nuttigs opleveren. Daarom moet je even alle woorden afzonderlijk uit $_post["vraag"] trekken (hint: ze zijn gescheiden door spaties). Vervolgens kun je dan een query genereren in de vorm van:

SELECT * FROM vragen WHERE
vraag LIKE '%<woord1>%' AND
vraag LIKE '%<woord2>%' AND
enz enz.
vraag LIKE '%<woordn>%'

Je kunt ook AND veranderen door OR, het hangt er vanaf of elk van de gegeven woorden voor moet komen, of dat minimaal 1 woord voor moet komen.

Nog een opmerking, het is niet slim om input uit een formulier DIRECT in een query te stoppen. Een beetje hacker kan zo bijvoorbeeld de volgende zoekactie opgeven:
bla';DROP DATABASE; SELECT * from bla WHERE bla like 'bla

Ik weet niet of dit zo werkt, maar je kunt je voorstellen dat iemand zoiets in het zoekveld van je invult.

edit: typo

[ Voor 6% gewijzigd door Scaror op 28-10-2003 18:11 ]

Pagina: 1