Zoekfunctie probleem
zoek.html
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<HTML>
<h2>Search</h2>
<form name="search" method="post" action="zoeken.php">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="naam">Merk telefoon</option>
<Option VALUE="inlog">Type telefoon</option>
<Option VALUE="afdeling">Genre</option>
</Select>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>
</HTML>
<h2>Search</h2>
<form name="search" method="post" action="zoeken.php">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="naam">Merk telefoon</option>
<Option VALUE="inlog">Type telefoon</option>
<Option VALUE="afdeling">Genre</option>
</Select>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>
</HTML>
zoeken.php
Code (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
<?
$hostname_mysql = "localhost";
$database_mysql = "telefoonlijst";
$username_mysql = "gebruikersnaam";
$password_mysql = "wachtwoord";
$db = mysql_connect($hostname_mysql, $username_mysql, $password_mysql);
mysql_select_db($database_mysql, $db);
error_reporting(E_ALL);
ini_set("display_errors", 1);
if ($searching =="yes")
{
echo "<h2>Resultaten<br></h2><p>";
echo "<b>Gezocht naar: </b>" .$find."<br><br>";
if ($find == "")
{
echo "<p>Voer een zoekterm in aub.";
exit;
}
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$result = mysql_query($query,$db);
$data = mysql_query("SELECT intern FROM telefoonlijst WHERE upper($field) LIKE'%$find%' OR naam LIKE '%$find'");
/*Type LIKE '%zoekterm%' OR Merk LIKE '%$zoekterm' OR Genre LIKE '%zoekterm%' OR Eigenschappen LIKE '%zoekterm%'"; */
echo "
<table>
<tr>
<td>";
while($result = mysql_fetch_array( $data ))
{
echo $result['naam'];
echo " ";
echo $result['afdeling'];
echo "<br>";
echo $result['inlog'];
echo "<br><br>";
}
echo"
</td>
</tr>
</table>";
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, er is niets gevonden met uw zoekopdracht<br><br>";
}
}
?>
$hostname_mysql = "localhost";
$database_mysql = "telefoonlijst";
$username_mysql = "gebruikersnaam";
$password_mysql = "wachtwoord";
$db = mysql_connect($hostname_mysql, $username_mysql, $password_mysql);
mysql_select_db($database_mysql, $db);
error_reporting(E_ALL);
ini_set("display_errors", 1);
if ($searching =="yes")
{
echo "<h2>Resultaten<br></h2><p>";
echo "<b>Gezocht naar: </b>" .$find."<br><br>";
if ($find == "")
{
echo "<p>Voer een zoekterm in aub.";
exit;
}
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$result = mysql_query($query,$db);
$data = mysql_query("SELECT intern FROM telefoonlijst WHERE upper($field) LIKE'%$find%' OR naam LIKE '%$find'");
/*Type LIKE '%zoekterm%' OR Merk LIKE '%$zoekterm' OR Genre LIKE '%zoekterm%' OR Eigenschappen LIKE '%zoekterm%'"; */
echo "
<table>
<tr>
<td>";
while($result = mysql_fetch_array( $data ))
{
echo $result['naam'];
echo " ";
echo $result['afdeling'];
echo "<br>";
echo $result['inlog'];
echo "<br><br>";
}
echo"
</td>
</tr>
</table>";
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, er is niets gevonden met uw zoekopdracht<br><br>";
}
}
?>
Foutmelding:
"; while($result = mysql_fetch_array( $data )) { echo $result['naam']; echo " "; echo $result['afdeling']; echo "
"; echo $result['inlog']; echo "
"; } echo" "; $anymatches=mysql_num_rows($data); if ($anymatches == 0) { echo "Sorry, er is niets gevonden met uw zoekopdracht
"; } } ?>
Kunt u mij helpen?
Gewijzigd op 01/01/1970 01:00:00 door Rick
Al geprobeerd krijg geen foutmeldingen te zien gewoon hetzelfde als nu.
Je maakt gebruik van iets wat ze noemen register globals. $find zou vervangen moeten worden door iets als $_POST['find']. Verder controleer je niks en beveilig je niks dus ik kan nu niet alleen -alle- records opvragen maar ook je database leeggooien.
Ik vind nergens een waarde voor '$query'
SanThe schreef op 04.03.2009 09:47:
Sorry, maar dit is niet altijd de oplossing.Zet dit bovenin je script.
Het verbaast mij dat je echt ALTIJD dat als eerste zegt. Volgens mij heb je op dat moment ook nog geen blik geworpen op de code van de TS.
Dennis Mertens schreef op 04.03.2009 10:08:
Het verbaast mij dat je echt ALTIJD dat als eerste zegt. Volgens mij heb je op dat moment ook nog geen blik geworpen op de code van de TS.
SanThe schreef op 04.03.2009 09:47:
Sorry, maar dit is niet altijd de oplossing.Zet dit bovenin je script.
Het verbaast mij dat je echt ALTIJD dat als eerste zegt. Volgens mij heb je op dat moment ook nog geen blik geworpen op de code van de TS.
Natuurlijk wel, hij ziet toch dat het er niet in staat en de TS geeft ook niet aan dat die een melding krijgt. -> Kreeg de ts een melding, dan had hij het probleem waarschijnlijk wel zelf op kunnen lossen. Vaak is dat handiger/ beter voor het leerproces dan dat iemand zegt dat hij $_POST['varnaam'] moet gebruiken.
Die foutmelding lijkt mij gewoon HTML text ipv PHP text.. heeft de server wel PHP ondersteuning en staat de hele meuk tussen PHP tags?
maar mij leek die foutmelding ook htmltekst vandaar dat ik het niet begrijp. En alles staat tussen PHP tags
Robert_Deiman schreef op 04.03.2009 10:41:
Natuurlijk wel, hij ziet toch dat het er niet in staat en de TS geeft ook niet aan dat die een melding krijgt. -> Kreeg de ts een melding, dan had hij het probleem waarschijnlijk wel zelf op kunnen lossen. Vaak is dat handiger/ beter voor het leerproces dan dat iemand zegt dat hij $_POST['varnaam'] moet gebruiken.
1: Neem het maar op voor je mede-moderator.
2: Ik zeg ook, niet altijd. Ik gaf die reactie omdat het mij op valt dat hij dat ALTIJD zegt.
En kreeg de TS een melding dan zou hij dit zelf kunnen oplossen? Dat klopt ook niet echt.
Maar om even OnT te gaan:
@TS: Je maakt geen gebruik van super globels. Je 'overschrijft' de variabele $find veel te vaak. Eigenlijk hoef je dat helemaal niet te doen.
Je maakt op geen enkele manier een controle om sql-injections tegen te gaan.
Tips:
1: Gebruik super globals (in jouw geval _POST.
2: Overschrijf niet telkens een variabele. Wil je een bepaalde variabele door een functie gooien? Doe dit op de plek waar je die variabele wilt gebruiken. Zo blijft de variabele zelf ook 'origineel'.
3: Staat deze code wel eens in een .php bestand? En ondersteunt je host PHP?
4: De error_reporting etc. moet BOVENAAN (als eerste na
Vertel :), wat heb je precies veranderd?
Gewijzigd op 01/01/1970 01:00:00 door rick