[PHP/SQL] niet het gewensde resultaat.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nu bezig met de volgende simpele code, maar ik kom er niet uit.

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php

//De connectie maken, wordt later vervangen door een incluide
$db=mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db('project', $db) or die (mysql_error());
$result = mysql_query("SELECT automerk FROM autoselectie WHERE
         automerk LIKE '%". $_POST["automerk"] . "%'") or die (mysql_error());

?>

<html>
<head>
    <title>Een voorbeeld van een selectielijst voor de inbouwdatabase</title>
</head>
<body>
<?php
// controleer of pagina voor het eerst wordt geopend, of
// dat de pagina zichzelf heeft aangeroepen

if (empty($_POST)){?>
    <h2>Kies een Automerk ID</h2>
    <form name="form1" action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
    ID: <select name="Automerk">
        <?php
        // de selectielijst vullen met beschikbare ID's
        while (list($id) = mysql_fetch_row($result)){
            echo("<option value=\"$id\">$id</option>\n");
        }?>
        </select>
    <input type="Submit" value="Tonen">
    </form>

<?php
}else{
    // Als de pagina zichzelf heeft aangeroepen het else-blok uitvoeren
    echo("<h2>Doorgegeven ID: " . $_POST["automerk"] . "</h2>\n");
    while (list($automerk) =
    mysql_fetch_row($result)){
        echo("Automerk = $automerk<br>\n");
        //echo("Autotype = $Autotype<br>\n");
        //echo("Bouwjaar = $Bouwjaar<br>\n");

        echo("<a href=\"" . $_SERVER["PHP_SELF"] . "\">Ander merk
                selecteren</a>");
    }   ?>

<br>
<br>
<b>Zoek naar inbouwgegevens;</B>
<br>
<br>
<b>Auto Alarm</b><br>

<form action="Inbouwdata.php" method="post">
<input type="text" name="Cruise Control" value="" size="30">
<input type="Submit" value="Zoeken">
<br>
<b>Cruise Control</b>
<br>
<br>
<form action="Inbouwdata.php" method="post">
<input type="text" name="Cruise Control" value="" size="30">
<input type="Submit" value="Zoeken">
<?php
}?>

<?php
// verbinding afsluiten
mysql_close($db);
?>
<br>
<br>
<input type="Button" value="Terug" onclick="javascript:history.back();">
</body>
</html>


Wanneer ik zoek krijg ik eigenlijk alleen maar een lijst met alle resultaten(op alfabethische volgorde), niet speciefiek degene waar ik naar op zoek ben.
Iemand een oplossing?

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 00:12
Misschien een domme vraag, maar wat moet het stukje code doen én wat doet het dan wel??

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01:23
Zou je deze regel kunnen vervangen voor een andere?
PHP:
1
2
$result = mysql_query("SELECT automerk FROM autoselectie WHERE 
         automerk LIKE '%". $_POST["automerk"] . "%'") or die (mysql_error());


PHP:
1
2
3
$query = "SELECT automerk FROM autoselectie WHERE automerk LIKE '%". $_POST["automerk"] . "%'";
echo $query;
$result = mysql_query($query) or die (mysql_error());


Zo krijg je een debug te zien van wat er nu in de query staat, ook als je hem aanroept met de waarde.

Acties:
  • 0 Henk 'm!

Verwijderd

while (list($automerk) =
mysql_fetch_row($result)){
Ik kan wat gemist hebben hoor maar je query is toch $result?

Dus probeer eens:

PHP:
1
2
3
4
 while (mysql_fetch_row($result))
 {
     echo("Automerk = $automerk<br>\n"); 
 }


En ik zou ook niet met je root account blijven werken ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
T-MOB schreef op 04 november 2004 @ 12:24:
Misschien een domme vraag, maar wat moet het stukje code doen én wat doet het dan wel??
Ik ben geloof ik degene met de domme vragen. ;)
Het is een selectielijstje met daarin een rijtje automerken, alleen wanneer ik een automerk selecteer zou hij alleen dat merk op de volgende(of eigenlijk de zelfde, maar dat terzijde) pagina moeten tonen. Alleen geeft hij gewoon de rij met merken die ik in mijn database heb ingevoerd.

Dus, hij geeft de rij met merken helemaal door, terwijl ik eigenlijk alleen het geselecteerde merk zou willen hebben.

Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01:23
Verwijderd schreef op 04 november 2004 @ 12:27:
Dus, hij geeft de rij met merken helemaal door, terwijl ik eigenlijk alleen het geselecteerde merk zou willen hebben.
Dan moet je ook niet dit doen:
code:
1
WHERE automerk LIKE '%waarde%'

maar dit:
code:
1
WHERE automerk LIKE 'waarde'

(of automerk = waarde).

De % betekend dat er van alles mag staan (1 teken, een hele zin, etc., zolang er dan maar een keer waarde in voor komt).

http://www.w3schools.com/sql/sql_where.asp

[ Voor 7% gewijzigd door Postman op 04-11-2004 12:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Postman schreef op 04 november 2004 @ 12:30:
[...]

Dan moet je ook niet dit doen:
code:
1
WHERE automerk LIKE '%waarde%'

maar dit:
code:
1
WHERE automerk LIKE 'waarde'

(of automerk = waarde).

De % betekend dat er van alles mag staan (1 teken, een hele zin, etc., zolang er dan maar een keer waarde in voor komt).

http://www.w3schools.com/sql/sql_where.asp
Hm, als ik dat doe is mijn selectielijst opeens leeg :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 04 november 2004 @ 12:25:
[...]


Ik kan wat gemist hebben hoor maar je query is toch $result?

Dus probeer eens:

PHP:
1
2
3
4
 while (mysql_fetch_row($result))
 {
     echo("Automerk = $automerk<br>\n"); 
 }


En ik zou ook niet met je root account blijven werken ;)
Als ik dat doe werkt het wel maar krijg ik helemaal geen resultaten.

EDIT: Heren, mijn dank maar inmiddels werkt het al. Bedankt voor de geboden hulp en tips. :)

[ Voor 13% gewijzigd door Verwijderd op 04-11-2004 12:40 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 00:12
Verwijderd schreef op 04 november 2004 @ 12:34:
[...]
Hm, als ik dat doe is mijn selectielijst opeens leeg :?
Dan zou je met 2 queries moeten werken, of de where clause optioneel moeten maken:

PHP:
1
2
3
4
//where clause komt $WHERE
$WHERE = (empty($_POST)) ? '' : ' WHERE automerk LIKE "%' .$_POST['automerk'] .'%"';

$query = 'SELECT etc FROM tabel' .$WHERE;


Let wel dat dit vraagt om mysql_injection. Je zult dus zelf iets moeten bedenken om dit te voorkomen...

[ Voor 8% gewijzigd door T-MOB op 04-11-2004 13:00 ]

Regeren is vooruitschuiven

Pagina: 1