[PHP]dynamisch pull- down menu

Pagina: 1
Acties:
  • 666 views

Onderwerpen


  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
Ik heb een dynamisch pull- down menu gemaakt die de waarde uit een tabel uit de rij woonplaats.
Maar nu wil ik als ik een plaats in de lijst selecteer dat hij alle gegevens uit mijn tabel laat zien van de persoon wat al is gelukt met een tekstveld maar nu nog met een drop down menu.

hier is mijn code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html> 
<table> 
 <body>
<?
require ("connection.php");
$tabelnaam = "vb_tabel_2";
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

echo '<select Woonplaats="Woonplaats">';

while ($Row = mysql_fetch_array ($result)){
    
    echo '<option>'.$Row['Woonplaats']. '</option>'; 
     "<br>\n";  
            
}
mysql_free_result($result);
?>
</body>
</table>
</html>

  • RangedNeedles
  • Registratie: Juli 2009
  • Niet online
Dus als ik het goed begrijp, als je een bepaalde optie kiest in die drop down, moet hij wat textfields gaan vullen? In dat geval, zet gewoon 'n onChange op je select waar je je URL aanpast met een ID over die bepaalde optie, en bij het refreshen van je pagina GET je die optie en vul je de textfields?

Of begrijp ik je verkeerd? In ieder geval, heb al eens zoiets gemaakt, dus het is mogelijk en nog te doen :P

  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
Nee de bedoeling is om eronder een tabel te laten zien met de gegevens van de personen die in de tabel staan met de geselecteerde woonplaats.

voorbeeld van die met het textveld:
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
<html>
<head>
</head>

<body>
<form name="form1" method="post">
woonplaats<input type="text" name="woonplaats"><br>
<input type="submit" name="Submit" value="verzend">
</body>
</html>
<?
if(isset($_POST['Submit'])){

if(empty($_POST['woonplaats'])){

    echo "Vul je woonplaats in!"; 

}else{


require ("connection.php");
$tabelnaam = "vb_tabel_2";
$woonplaats = ($_POST['woonplaats']);
$opdracht = "SELECT * FROM $tabelnaam WHERE woonplaats = '$woonplaats'";
$result = mysql_query($opdracht);
echo ("<TABLE width=90% border=1>");
while ($Rij = mysql_fetch_array ($result)){
    
    echo"<tr>";
    echo  ("<td> naam :$Rij[Naam] </td>\n");
    echo ("<td> Adres: $Rij[Adres]  </td>\n");
    echo ("<td>Postcode: $Rij[Postcode] </td>\n");
    echo ("<td>Woonplaats: $Rij[Woonplaats] </td>\n");
    echo ("</tr>\n");
}
echo("</TABLE>");
mysql_free_result($result);
}
}
?>

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
PHP:
10
echo '<select Woonplaats="Woonplaats">';


Dat kan nooit goed gaan ...

Tip: zet alle code tussen
code:
1
[code=php][/code]
tags, dan is je code een stuk leesbaarder en kunnen wij regelnummers gebruiken om een fout aan te wijzen.

[ Voor 58% gewijzigd door kluyze op 22-01-2012 21:45 ]


  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
hij weergeeft hem wel in de lijst kijk maar http://68722.ict-lab.nl/meoc1/opdracht63b.php
maar als het fout is wat moet ik dan doen?

[ Voor 19% gewijzigd door thomas_ op 22-01-2012 21:41 ]


  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

moet 't niet rij['naam'] zijn, met nadruk op de '?

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 13:50
Je hebt sowieso nog heel wat te leren. De opbouw van je HTML is een drama, en dan verwacht je wel met PHP uit de voeten te kunnen. Mijn mening: Leer eerst de basis van HTML om vervolgens te beginnen met PHP.

Want een pagina broncode die begint met:
HTML:
1
<html><table><body>
is een schande.

Laat ik de HTML even voor je voorkauwen:
HTML:
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title></title>
</head>
<body>
    <form action="scriptnaam.php" method="post">
        <select name="woonplaats" id="woonplaats">
            <option value="Optie 1">Optie 1</option>
            <option value="Optie 2">Optie 2</option>
            <option value="Optie 3">Optie 3</option>
        </select>
    </form>
    
    <table>
        <tr>
            <td>Naam</td>
            <td>Adres</td>
            <td>Woonplaats</td>
            <td>E-mail</td>
        </tr>
    </table>
</body>
</html>


Daarbij komt dat je PHP zelf erg makkelijk kunt debuggen. Echo tussen elke stap door even een tekst/melding om te kijken tot hoever het goed gaat. Weet je zeker dat je query goed is? Echo je query en plak deze in PhpMyAdmin om te kijken of dat werkt.

Wat heb je al geprobeerd? Als ik het zo doorlees nog erg weinig...

[ Voor 68% gewijzigd door Saeverix op 22-01-2012 21:52 ]

People who live in glass houses shouldn't throw stones.


  • Beatboxx
  • Registratie: April 2010
  • Laatst online: 26-10-2022

Beatboxx

Certified n00b

PHP:
1
 ($_POST['woonplaats']);


Naar mijn weten hoeft er geen () omheen? En een sql_injection maakt je ook niet uit?

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

O.a. wat kluyze zegt.

Nog wat tips:
• Valideer je input! (wat is sql-injectie?)
• Echo heeft geen haakjes nodig
• Gebruik een IDE om te ontwikkelen en de code tags op het forum, dan zul je zien dat er code niet klopt (missende quotes, missende accolades, etc)
• Je code is totaal niet consistent; hoofdletters en kleine letters door elkaar, tags die niet gesloten worden, missende attributen.
• Waar is je </form> tag gebleven?
• Na </html> hoort er geen content meer te komen. Bij jou komt er content als er gepost is :?
Beatboxx schreef op zondag 22 januari 2012 @ 21:52:
PHP:
1
 ($_POST['woonplaats']);


Naar mijn weten hoeft er geen () omheen? En een sql_injection maakt je ook niet uit?
Dan is/staat de input veilig tussen haakjes :+

[ Voor 19% gewijzigd door Bee.nl op 22-01-2012 21:54 ]


  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
Ik ben net begonnen met php en ja ik maak nu grote fouten maar omdat ik al heel de avond naar een oplossing zit te zoeken vraag ik het hier en ik heb nog niks over beveiliging gehad.

  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
@ werner het probleem is dat ik die steden moet uitlezen uit de tabel met
PHP:
1
2
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

en dus niet even een value kan geven anders was het me wel gelukt

[ Voor 14% gewijzigd door thomas_ op 22-01-2012 22:09 ]


  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

thomasv15 schreef op zondag 22 januari 2012 @ 22:08:
@ werner het probleem is dat ik die steden moet uitlezen uit de tabel met
PHP:
1
2
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

en dus niet even een value kan geven anders was het me wel gelukt
Heb je error_reporting en display_errors al aangezet? Dan worden eventuele fouten duidelijk op het scherm neergezet.

Maar wáár loop je nu op vast? En dan bedoel ik niet een missende quote oid, maar iets in de code wat je niet begrijpt.

Je selecteert een woonplaats, submit het formulier, je controleert of POST geset is en ga je vervolgens de gegevens opzoeken en tonen. Waar in de schakel schort het? Dat is me niet duidelijk.

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 13:50
thomasv15 schreef op zondag 22 januari 2012 @ 22:08:
@ werner het probleem is dat ik die steden moet uitlezen uit de tabel met
PHP:
1
2
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

en dus niet even een value kan geven anders was het me wel gelukt
Dat hoeft geen reden om zulke html te gebruiken... Dat kun je makkelijk met een while loop doen. Maar zorg eerst dat je weet wat je doet.

Leer debuggen om te achterhalen wat er mis gaat. Alleen dan moet je wel weten wat er nu niet goed gaat en wat de bedoeling is.

PHP:
1
2
3
4
5
6
// Zoals aangegeven zijn haakjes niet nodig. Wel moet je single quotes gebruiken om de key van de array die je gebruikt.
// En ook wil ik je aanraden om variabelen te scheiden van de tekst die je echoed. Dit maakt het een stuk leesbaarder.
echo ("<td> Adres: $Rij[Adres]  </td>\n");

// Dan krijg je iets als dit
echo "<td>Adres: ".$rij['adres']."</td>\n";

People who live in glass houses shouldn't throw stones.


  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
Me bedoeling is om uit deze tabel http://68722.ict-lab.nl/meoc1/opdracht62_uitlees.php
de gegevens te laten zien.

@ werner bedankt ik zal er op letten om he iets beter te ordenen .

[ Voor 23% gewijzigd door thomas_ op 22-01-2012 22:27 ]


  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

thomasv15 schreef op zondag 22 januari 2012 @ 22:08:
@ werner het probleem is dat ik die steden moet uitlezen uit de tabel met
PHP:
1
2
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

en dus niet even een value kan geven anders was het me wel gelukt
In je code zie ik ook:

PHP:
1
$opdracht = "SELECT * FROM $tabelnaam WHERE woonplaats = '$woonplaats'";


Is het de kolom Woonplaats of woonplaats? Wederom, let op hoofd- en kleine letters ;)
Saeverix schreef op zondag 22 januari 2012 @ 22:22:
[...]

Dat hoeft geen reden om zulke html te gebruiken... Dat kun je makkelijk met een while loop doen. Maar zorg eerst dat je weet wat je doet.

Leer debuggen om te achterhalen wat er mis gaat. Alleen dan moet je wel weten wat er nu niet goed gaat en wat de bedoeling is.

PHP:
1
2
3
4
5
6
// Zoals aangegeven zijn haakjes niet nodig. Wel moet je single quotes gebruiken om de key van de array die je gebruikt.
// En ook wil ik je aanraden om variabelen te scheiden van de tekst die je echoed.
echo ("<td> Adres: $Rij[Adres]  </td>\n");

// Dan krijg je iets als dit
echo "<td>Adres: ".$rij['adres']."</td>\n";
Ja of met accolades om de array heen, net wat je prefereert :)
PHP:
1
echo "<td> Adres: {$Rij['Adres']} </td>\n";

Alleen herkent GoT de syntax niet.
De bedoeling is duidelijk, niet wáár het misgaat. Je leert er het meest van als je zelf leert debuggen ipv dat wij hapklare code aanleveren.

  • thomas_
  • Registratie: Maart 2010
  • Laatst online: 09-09 21:49
Nee dat is ook niet de bedoeling dat jullie heel de code gaan schrijven maar kunnen jullie zeggen vanaf waar ik fout ga
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html> 
 <body>
<?
require ("connection.php");
$tabelnaam = "vb_tabel_2";
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

echo '<select Woonplaats="Woonplaats">';

while ($Row = mysql_fetch_array ($result)){
    
    echo '<option>'.$Row['Woonplaats']. '</option>'; 
     "<br>\n";  
            
}
mysql_free_result($result);
?>
</body>
</html>

  • aZuL2001
  • Registratie: September 2002
  • Laatst online: 12-10 22:55
thomasv15 schreef op zondag 22 januari 2012 @ 21:57:
Ik ben net begonnen met php en ja ik maak nu grote fouten maar omdat ik al heel de avond naar een oplossing zit te zoeken vraag ik het hier en ik heb nog niks over beveiliging gehad.
Huiswerk opdracht ?

Abort, Retry, Quake ???


  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 13:50
thomasv15 schreef op zondag 22 januari 2012 @ 22:33:
maar kunnen jullie zeggen vanaf waar ik fout ga
Je gaat al mis bij je HTML. Dus begin daar eerst eens.

Let verder op je hoofdletter gebruik. En als je eenmaal iets hebt geschreven op je eigen manier, gebruik diezelfde manier dan in al je code. En niet zoals je nu doen: van alles door elkaar.

Er zijn genoeg basis tutorials te vinden om je op weg te helpen. En als je het echt wilt leren is een goed boek ook geen slechte investering.

People who live in glass houses shouldn't throw stones.


  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:26

Ventieldopje

I'm not your pal, mate!

thomasv15 schreef op zondag 22 januari 2012 @ 22:33:
Nee dat is ook niet de bedoeling dat jullie heel de code gaan schrijven maar kunnen jullie zeggen vanaf waar ik fout ga
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html> 
 <body>
<?
require ("connection.php");
$tabelnaam = "vb_tabel_2";
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

echo '<select Woonplaats="Woonplaats">';

while ($Row = mysql_fetch_array ($result)){
    
    echo '<option>'.$Row['Woonplaats']. '</option>'; 
     "<br>\n";  
            
}
mysql_free_result($result);
?>
</body>
</html>
Bij regel 1 mis je de DOCTYPE, bij regel 2 vergeet je de hele head, bij regel 3 gebruik je php short tags, dit is not done en bij veel hosts standaard uitgeschakelt, altijd <?php gebruiken dus! Bij regel 4 require_once gebruiken, bij regel 5 is $tabelnaam overbodig en bij sommige configuraties zelfs een beveiligings fout, de tabelnaam moet je dus hard coden in de query van regel 6. In regel 6 begin je je query met een spatie, dat hoort niet.

*zucht*, regel 9, <select> heeft geen property Woonplaats. Ik geef op, óf beter opletten in de klas en je klasgenoten om hulp vragen óf je leraar een schop tussen de benen geven (ik zou voor het 1e gaan). Ten tweede zou ik een boek aanschaffen over HTML en daarna een boek over PHP 5.

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 03-11 20:03

Creepy

Tactical Espionage Splatterer

thomasv15 schreef op zondag 22 januari 2012 @ 22:33:
Nee dat is ook niet de bedoeling dat jullie heel de code gaan schrijven maar kunnen jullie zeggen vanaf waar ik fout ga
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html> 
 <body>
<?
require ("connection.php");
$tabelnaam = "vb_tabel_2";
$opdracht = " SELECT DISTINCT Woonplaats FROM $tabelnaam ";
$result = mysql_query($opdracht);

echo '<select Woonplaats="Woonplaats">';

while ($Row = mysql_fetch_array ($result)){
    
    echo '<option>'.$Row['Woonplaats']. '</option>'; 
     "<br>\n";  
            
}
mysql_free_result($result);
?>
</body>
</html>
Eeh, nee. Zo werkt het hier dus niet. En al helemaal niet voor schoolopdrachten die je zelf zonder hulp zou moeten kunnen maken. In Het algemeen beleid #quickstart staat prima uitgelegd hoeeen topicstart eruit zou moeten zien. Alleen aangeven wat je wil en daarbij je code dumpen is zeker niet de bedoeling. Dat je nog niet weet hoe het werkt is een excuus dat je zeker voor een schoolopdracht echt niet kan gebruiken. We vragen hier net even wat meer inzet, dus bij een eventueel volgende topic zul je meer informatie moeten geven wat je zelf al had bedacht en geprobeerd etc. Maar als je de quickstart doorleest wordt je dat gelijk duidelijk.

[ Voor 9% gewijzigd door Creepy op 23-01-2012 13:25 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.