krijg geen gegevens te zien ( get, sql, like )

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Php knipper

php knipper

06/07/2011 17:27:59
Quote Anchor link
Ik heb dit bestand gemaakt "ledenlijst.php" nu moet dat werken als het "ledenlijst.php?letter=c" word ( of andere letter ) nu heb ik daar 2 vragen over.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
    {
?>


Ik gebruik voor de verandering ook foutafhandeling!
Alvast bedankt
 
PHP hulp

PHP hulp

18/04/2024 13:49:05
 
Kevin Ellen

Kevin Ellen

06/07/2011 17:39:28
Quote Anchor link
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?
 
- SanThe -

- SanThe -

06/07/2011 17:42:12
Quote Anchor link
Dit: $letter= intval($_GET['letter']); geeft een 0 (nul) want een character is geen integer en heeft dus geen integerwaarde.

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.
 
Kevin Ellen

Kevin Ellen

06/07/2011 18:21:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
?>

Zoiets? :P
 
Php knipper

php knipper

06/07/2011 19:22:15
Quote Anchor link
nu geeft hij een error "unexpected T_CONSTANT_ENCAPSED_STRING"

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
 
Kevin Ellen

Kevin Ellen

11/07/2011 10:55:43
Quote Anchor link
Hmmm die error is wel vaag. Ik had je PB gezien en thuis even snel tussendoor gekeken; hij werkt bij mij gewoon?
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?
 
Koen Vlaswinkel

Koen Vlaswinkel

11/07/2011 11:15:29
Quote Anchor link
Probeer dit eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.