krijg geen gegevens te zien ( get, sql, like )
1. onderstaande code laat niet's zien waarom is dat en hoe kan ik het verbeteren?
2. hoe kan ik er voor zorgen dat als er "letter=c" staat dat dan C en c hetzelfde is
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
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
<?php
if(isset($_GET['letter']))
{
$letter= intval($_GET['letter']);
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
//We get the IDs, usernames and emails of users
$sql = "SELECT id, naam, geslacht, toegevoegd, foto1
FROM persoon
WHERE naam LIKE '.$letter.' ORDER BY id ASC";
# Check of query is gelukt
if (($result = mysql_query($sql)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# De query is gelukt, we kijken of er een rij is die dit id heeft.
if(mysql_num_rows($result) == 0)
{
# Er is geen lid met dit id!
echo 'Er is geen persoon die begint met deze letter!';
}
else
{
?>
if(isset($_GET['letter']))
{
$letter= intval($_GET['letter']);
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
//We get the IDs, usernames and emails of users
$sql = "SELECT id, naam, geslacht, toegevoegd, foto1
FROM persoon
WHERE naam LIKE '.$letter.' ORDER BY id ASC";
# Check of query is gelukt
if (($result = mysql_query($sql)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# De query is gelukt, we kijken of er een rij is die dit id heeft.
if(mysql_num_rows($result) == 0)
{
# Er is geen lid met dit id!
echo 'Er is geen persoon die begint met deze letter!';
}
else
{
?>
Ik gebruik voor de verandering ook foutafhandeling!
Alvast bedankt
De laatste else is leeg en niet afgesloten? Regel 23 sluit je de if-rows- af, dan else op 24 welke je open op 25... en daar stopt het?
En dit: WHERE naam LIKE '.$letter.' zoekt naar een string met als inhoud de waarde van $letter met daar omheen aan beide kanten een . (punt). In dit script dus .0.
Dus je query zal lukken maar niks vinden.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = 'SELECT id, naam, geslacht, toegevoegd, foto1
FROM persoon
WHERE naam LIKE "'.mysql_real_escape_string($_GET['letter']).'" ORDER BY id ASC';
?>
$sql = 'SELECT id, naam, geslacht, toegevoegd, foto1
FROM persoon
WHERE naam LIKE "'.mysql_real_escape_string($_GET['letter']).'" ORDER BY id ASC';
?>
Zoiets? :P
wat wil deze error zeggen en hoe los ik deze op?
Quote:
De laatste else is leeg en niet afgesloten? Regel 23 sluit je de if-rows- af, dan else op 24 welke je open op 25... en daar stopt het?
dit komt doordat dit enkel een stukje van de code is.
Toevoeging op 07/07/2011 11:05:34:
niemand?
Gewijzigd op 06/07/2011 19:25:22 door php knipper
Je hebt wel goed gekeken of je de juiste quotes en double quotes heb gebruikt?
Heb je hier al gekeken? http://www.sitemasters.be/forum/1/27018 Daar staat ook iets in over het gebruik van deze quotes en escapen. Wellicht toen je het overnam, is er ergens iets fout gegaan?
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
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
<?php
// Fill up array with names
$query = "SELECT naam, id FROM persoon ORDER by id ASC";
$result = mysql_query( $query ) or trigger_error( mysql_error() );
$num_results = mysql_num_rows($result);
for($i = 0; $i < $num_results; $i++)
{
$row = mysql_fetch_array($result);
$a[] = $row['naam'];
}
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint="<ul><li>".$a[$i]."</li>";
}
else
{
$hint=$hint."<li>".$a[$i]."</li>";
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
{
$response="Er is geen persoon die begint met deze letter!";
}
else
{
$response=$hint."</ul>";
}
//output the response
echo $response;
?>
// Fill up array with names
$query = "SELECT naam, id FROM persoon ORDER by id ASC";
$result = mysql_query( $query ) or trigger_error( mysql_error() );
$num_results = mysql_num_rows($result);
for($i = 0; $i < $num_results; $i++)
{
$row = mysql_fetch_array($result);
$a[] = $row['naam'];
}
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint="<ul><li>".$a[$i]."</li>";
}
else
{
$hint=$hint."<li>".$a[$i]."</li>";
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
{
$response="Er is geen persoon die begint met deze letter!";
}
else
{
$response=$hint."</ul>";
}
//output the response
echo $response;
?>