Bekijk Volledige Versie : [php-mysql-html] Sorteren van DB.
Hallo allemaal,
Kan iemand mij misschien helpen met het volgende:
Ik heb een php-site met daar aan een db. Die db wil ik gesorteerd in mijn
scherm hebben aan de hand van een select/combo box. Weten jullie misschien
hoe ik mijn query zo op kan stellen dat wat achter de SORT BY staat,
afhankelijk is wat er in de select/combo box gekozen is.
Met vriendelijk groet,
Robert van de Vijver.
Daniel Tryba
08/05/03, 19:05
Muse <Robert101083@warmepost.com> wrote:
> Ik heb een php-site met daar aan een db. Die db wil ik gesorteerd in mijn
> scherm hebben aan de hand van een select/combo box. Weten jullie misschien
> hoe ik mijn query zo op kan stellen dat wat achter de SORT BY staat,
> afhankelijk is wat er in de select/combo box gekozen is.
Dat is wel erg triviaal, op
http://www.php.net/manual/en/language.types.string.php staat een heel
arsenaal aan voorbeelden hoe je variabelen en strings construeert.
bv: echo "A banana is {$fruits['banana']}." Maar dan natuurlijk ipv
fruits het betreffende array waar je variabele instaan en ipv banana
natuurlijk de goede naam.
--
Daniel Tryba
Daniel Tryba wrote:
> Muse <Robert101083@warmepost.com> wrote:
>> Ik heb een php-site met daar aan een db. Die db wil ik gesorteerd in
>> mijn scherm hebben aan de hand van een select/combo box. Weten
>> jullie misschien hoe ik mijn query zo op kan stellen dat wat achter
>> de SORT BY staat, afhankelijk is wat er in de select/combo box
>> gekozen is.
>
> Dat is wel erg triviaal, op
> http://www.php.net/manual/en/language.types.string.php staat een heel
> arsenaal aan voorbeelden hoe je variabelen en strings construeert.
>
> bv: echo "A banana is {$fruits['banana']}." Maar dan natuurlijk ipv
> fruits het betreffende array waar je variabele instaan en ipv banana
> natuurlijk de goede naam.
Heel erg bedankt voor je snelle reactie, maar hier kan ik niet echt iets
mee.
Het gaat mij om de "verbinding" tussen de select/combo box en de query.
Mvg,
Robert van de Vijver.
Ronald Paul
08/05/03, 19:35
"Muse" <Robert101083@warmepost.com> schreef:
>Het gaat mij om de "verbinding" tussen de select/combo box en de query.
De waarde van die drop-down listbox krijg je gewoon in je script
binnen in $_POST of $_GET bij verzending van het formulier. Je moet er
dan alleen nog even voor zorgen dat het formulier met die drop-down
listboek verzonden wordt als hij veranderd word. Dat doe je met een
submit-knop, of met een stukje JavaScript aan het onChange-event van
deze listbox.
--
Groet, Ronald
Daniel Tryba
08/05/03, 19:35
Muse <Robert101083@warmepost.com> wrote:
>> bv: echo "A banana is {$fruits['banana']}." Maar dan natuurlijk ipv
>> fruits het betreffende array waar je variabele instaan en ipv banana
>> natuurlijk de goede naam.
>
> Heel erg bedankt voor je snelle reactie, maar hier kan ik niet echt iets
> mee.
>
> Het gaat mij om de "verbinding" tussen de select/combo box en de query.
Laat de query nu een string zijn en de selectbox een variabele in een
array!
--
Daniel Tryba
"Muse" <Robert101083@warmepost.com> schreef in bericht
news:1052410411.137106@cache1...
> Hallo allemaal,
>
> Kan iemand mij misschien helpen met het volgende:
>
> Ik heb een php-site met daar aan een db. Die db wil ik gesorteerd in mijn
> scherm hebben aan de hand van een select/combo box. Weten jullie misschien
> hoe ik mijn query zo op kan stellen dat wat achter de SORT BY staat,
> afhankelijk is wat er in de select/combo box gekozen is.
Even een waarschuwing: check de waarde die je binnenkrijgt, of dat ook
daadwerkelijk een waarde is die in de combobox voorkomt, anders kunnen
mensen bij je hele database (ff googlen op SQL injection)
Mark
Daniel Tryba wrote:
> Muse <Robert101083@warmepost.com> wrote:
>>> bv: echo "A banana is {$fruits['banana']}." Maar dan natuurlijk ipv
>>> fruits het betreffende array waar je variabele instaan en ipv banana
>>> natuurlijk de goede naam.
>>
>> Heel erg bedankt voor je snelle reactie, maar hier kan ik niet echt
>> iets mee.
>>
>> Het gaat mij om de "verbinding" tussen de select/combo box en de
>> query.
>
> Laat de query nu een string zijn en de selectbox een variabele in een
> array!
Ik ben vrij nieuw met php, dus zag in de tekst niet zo snel een "link" met
wat ik wil berijken. Sorry.
Mvg,
Robert.
Muse wrote:
> Hallo allemaal,
>
> Kan iemand mij misschien helpen met het volgende:
>
> Ik heb een php-site met daar aan een db. Die db wil ik gesorteerd in
> mijn scherm hebben aan de hand van een select/combo box. Weten jullie
> misschien hoe ik mijn query zo op kan stellen dat wat achter de SORT
> BY staat, afhankelijk is wat er in de select/combo box gekozen is.
>
> Met vriendelijk groet,
> Robert van de Vijver.
SORT BY moest dus ook zijn ORDER BY :S
Maar dat zullen de meeste van jullie al gezien hebben. :-)
Ronald Paul wrote:
> "Muse" <Robert101083@warmepost.com> schreef:
>
>> Het gaat mij om de "verbinding" tussen de select/combo box en de
>> query.
>
> De waarde van die drop-down listbox krijg je gewoon in je script
> binnen in $_POST of $_GET bij verzending van het formulier. Je moet er
> dan alleen nog even voor zorgen dat het formulier met die drop-down
> listboek verzonden wordt als hij veranderd word. Dat doe je met een
> submit-knop, of met een stukje JavaScript aan het onChange-event van
> deze listbox.
Ik heb nu dit, maar het wil nog niet helemaal:
Ideetje?
Mvg,
Robert.
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Test</TITLE>
<?php
error_reporting(E_ALL);
$db = mysql_connect("localhost","","");
mysql_select_db("test",$db);
$requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY `$_GET`";
$result = mysql_query ($requete,$db);
?>
<body>
<P>
<form method="post" name="instellingen">
<select id=select name=select1 onChange="sort (this.value)">
<option selected value=0>Sorteren op...</option>
<option value=ID>ID</option>
<option value=NAAM>Naam</option>
<option value=LAND>Land</option>
<option value=JAAR>Jaar</option>
<option value=STAAT>Staat</option>
<option value=PRIJS>Prijs</option>
</select>
<select id=select name=select2 onChange="">
<option value="0" selected>5</option>
<option value="1">10</option>
<option value="2">15</option>
<option value="3">20</option>
<option value="4">25</option>
<option value="5">30</option>
<option value="6">35</option>
</select>aandelen per pagina weergeven.
</form>
</P>
<?php
echo "<table width = \"50%\" border = 0><tr
align=\"left\"><th>ID</th><th>NAAM</th><th>LAND</th><th>DETAILS</th></tr>";
while ($row = mysql_fetch_object($result)) {
echo "<tr><td>" . $row->ID . "</td><td>" . $row->NAAM . "</td><td>" .
$row->LAND . "</td><td>" . $row->DETAILS . "</td></tr>";
} // END: while loop
echo "</table>";
mysql_free_result($result);
?></head>
</BODY>
</HTML>
Daniel Tryba
08/05/03, 20:35
Muse <vandevijver@no_spam@quicknet.nl> wrote:
>> Laat de query nu een string zijn en de selectbox een variabele in een
>> array!
>
> Ik ben vrij nieuw met php, dus zag in de tekst niet zo snel een "link" met
> wat ik wil berijken. Sorry.
Ach, ik had het ook kunnen voorkauwen, maar daar leer je helemaal
_niets_ van...
$requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY `$_GET`";
is was je in een andere posting al geprobeerd hebt.
$_GET is echter een array en de string zal dan ook letterlijk:
"SELECT * FROM `testdb` WHERE 1 ORDER BY `Array`" zijn.
De goede waarde ddie je zoekt staat is $_GET['hierdenaamvanjeselect'],
wat dus samen met mijn eerst voorbeeld:
.... ORDER BY `{$_GET['hierdenaamvanjeselect']`" wordt.
--
Daniel Tryba
Daniel Tryba wrote:
> Muse <vandevijver@no_spam@quicknet.nl> wrote:
>>> Laat de query nu een string zijn en de selectbox een variabele in
>>> een array!
>>
>> Ik ben vrij nieuw met php, dus zag in de tekst niet zo snel een
>> "link" met wat ik wil berijken. Sorry.
>
> Ach, ik had het ook kunnen voorkauwen, maar daar leer je helemaal
> _niets_ van...
>
> $requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY `$_GET`";
> is was je in een andere posting al geprobeerd hebt.
>
> $_GET is echter een array en de string zal dan ook letterlijk:
> "SELECT * FROM `testdb` WHERE 1 ORDER BY `Array`" zijn.
>
> De goede waarde ddie je zoekt staat is $_GET['hierdenaamvanjeselect'],
> wat dus samen met mijn eerst voorbeeld:
> ... ORDER BY `{$_GET['hierdenaamvanjeselect']`" wordt.
Bendant voor je reactie. Het werkt nog niet, maar dat geeft niet, ik kom er
wel achter.
<OT>
Wat het voorkauwen betreft. Ik leer zelf het beste van een goed werkend
voorbeeld, to-the-point en dus niet abstract. Daar kan ik meestal de logica
wel uithalen en toepassen bij andere dingen.
</OT>
Mvg,
Robert van de Vijver.
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:b9e75k$5m1$1@news.tue.nl...
> Muse <vandevijver@no_spam@quicknet.nl> wrote:
> >> Laat de query nu een string zijn en de selectbox een variabele in een
> >> array!
> >
> > Ik ben vrij nieuw met php, dus zag in de tekst niet zo snel een "link"
met
> > wat ik wil berijken. Sorry.
>
> Ach, ik had het ook kunnen voorkauwen, maar daar leer je helemaal
> _niets_ van...
>
> $requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY `$_GET`";
> is was je in een andere posting al geprobeerd hebt.
>
> $_GET is echter een array en de string zal dan ook letterlijk:
> "SELECT * FROM `testdb` WHERE 1 ORDER BY `Array`" zijn.
>
> De goede waarde ddie je zoekt staat is $_GET['hierdenaamvanjeselect'],
> wat dus samen met mijn eerst voorbeeld:
> ... ORDER BY `{$_GET['hierdenaamvanjeselect']`" wordt.
Maar dus eerst checken of de waarde geldig is, anders vervang je in de url
de veldnaam (bv leeftijd) door:
leeftijd UNION ALL (insert willekeurige query hier)
Mark
<KNIP KNIP>
> Maar dus eerst checken of de waarde geldig is, anders vervang je in
> de url de veldnaam (bv leeftijd) door:
>
> leeftijd UNION ALL (insert willekeurige query hier)
>
> Mark
Ik zou niet weten wat ik in de url moet aanpassen, omdat het ophoud bij
http://localhost/TestPHP/testdb.php
Mvg,
Robert van de Vijver.
Dit is de huidige stand van zaken:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Aandelen</TITLE>
<?php
error_reporting(E_ALL);
$db = mysql_connect("localhost","","");
mysql_select_db("test",$db);
$requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY {$_GET['select1']}";
$result = mysql_query ($requete,$db);
?>
<body>
<P>
<form method="post" name="instellingen">
<select name=select1 size="1" id=select1 onChange="submit()">
<option selected value=0>Sorteren op...</option>
<option value="ID">ID</option>
<option value="NAAM">Naam</option>
<option value="LAND">Land</option>
<option value="JAAR">Jaar</option>
<option value="STAAT">Staat</option>
<option value="PRIJS">Prijs</option>
</select>
<select name=select2 size="1" id=select2 onChange="">
<option value="0" selected>...</option>
<option value="1">10</option>
<option value="2">15</option>
<option value="3">20</option>
<option value="4">25</option>
<option value="5">30</option>
<option value="6">35</option>
</select>aandelen per pagina weergeven.
</form>
</P>
<?php
echo "<table width = \"50%\" border = 0><tr
align=\"left\"><th>ID</th><th>NAAM</th><th>LAND</th><th>DETAILS</th></tr>";
while ($row = mysql_fetch_object($result)) {
echo "<tr><td>" . $row->ID . "</td><td>" . $row->NAAM . "</td><td>" .
$row->LAND . "</td><td>" . $row->DETAILS . "</td></tr>";
} // END: while loop
echo "</table>";
mysql_free_result($result);
?></head>
</BODY>
</HTML>
"Muse" <vandevijver@no_spam@quicknet.nl> schreef in bericht
news:1052423478.943558@cache1...
> <KNIP KNIP>
> > Maar dus eerst checken of de waarde geldig is, anders vervang je in
> > de url de veldnaam (bv leeftijd) door:
> >
> > leeftijd UNION ALL (insert willekeurige query hier)
> >
> > Mark
>
> Ik zou niet weten wat ik in de url moet aanpassen, omdat het ophoud bij
> http://localhost/TestPHP/testdb.php
maakt niet uit, dan pas je de POST request aan. Dit kan ofwel mbv een
bookmarklet die de select in een textbox veranderd, ofwel gewoon met bv
telnet. Post is zelfs mooier want dat wordt niet gelogd, dus mensen kunnen
rare dingen op je site uitspoken zonder dat je het doorhebt.
Zie de volgende site voor info
http://www.hackinthebox.org/print.php?sid=6899
Mark
Daniel Tryba
08/05/03, 23:35
Muse <vandevijver@no_spam@quicknet.nl> wrote:
> Dit is de huidige stand van zaken:
> $requete = "SELECT * FROM `testdb` WHERE 1 ORDER BY {$_GET['select1']}";
^^^
> <form method="post" name="instellingen">
^^^^
Het is ahndig als beide methoden het zelfde zijn :)
--
Daniel Tryba