<html>
<head>
<title>dbase</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


Hallo,

Ik heb een script in elkaar gedraaid waarbij de webcams uit een database over 3 kolommen worden weergegeven.
Nu lukt het mij niet een selectbox te maken waarbij ik een land kan selecteren en dat dan de webcams van dat land uit de databse worden gehaald en conform de beschreven indeling wordt verdeeld over de pagina.

Wie weet een oplossing?

<body>
<?php


$dbhost = 'localhost';
$dbuser = 'admin';
$dbpass = 'pass';
$dbname = 'webcams';


$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

// how many columns
$columns = 3;

// how many rows to show per page
$rowsPerPage = 3;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;


$query = "SELECT * FROM sionvalais ORDER BY resort LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');
$numrows = mysql_num_rows($result);

echo "<TABLE BORDER=\"0\">\n";

//changed this to a for loop so we can use the number of rows
for($i = 0; $i < $numrows; $i++) {
$row = mysql_fetch_array($result);
if($i % $columns == 0) {
//if there is no remainder, we want to start a new row
echo "<TR>\n";
}
echo "<TD><a href=" . $row['image'] . "><img src=" . $row['image'] . " /></a> <br />" . $row['resort'] . "<br />" . $row['country'] . " </TD>\n";
if(($i % $columns) == ($columns - 1) || ($i + 1) == $num_rows) {
//if there is a remainder of 1, end the row
//or if there is nothing left in our result set, end the row
echo "</TR>\n";
}
}
echo "</TABLE>\n";



// how many rows we have in database
$query = "SELECT COUNT(*) AS numrows FROM sionvalais";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

$self = $_SERVER['PHP_SELF'];

// creating 'previous' and 'next' link
// plus 'first page' and 'last page' link

// print 'previous' link only if we're not
// on page one
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"$self?page=$page\">[Prev]</a> ";

$first = " <a href=\"$self?page=1\">[First Page]</a> ";
}
else
{
$prev = ' [Prev] '; // we're on page one, don't enable 'previous' link
$first = ' [First Page] '; // nor 'first page' link
}

// print 'next' link only if we're not
// on the last page
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"$self?page=$page\">[Next]</a> ";

$last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
}
else
{
$next = ' [Next] '; // we're on the last page, don't enable 'next' link
$last = ' [Last Page] '; // nor 'last page' link
}

// print the page navigation link
echo $first . $prev . " Showing page <strong>$pageNum</strong> of <strong>$maxPage</strong> pages " . $next . $last;



// Number of rows
echo $numrows;
echo "webcams in database";

echo "<br /><br />";



enhanced_list_box(array(
'table' => 'sionvalais',
'id_field' => 'id',
'value_field' => 'country',
'highlight_id' => 4));


function enhanced_list_box($options){

$sql = "select " . $options['id_field'];
$sql .= ", " . $options['value_field'];
$sql .= " from " . $options['table'];

/* append any where criteria to the sql */
if(isset($options['where_statement'])) {
$sql .= " where " . $options['where_statement'] ;
}

/* set the sort order of the list */
$sql .= " order by " . $options['value_field'];

$result = mysql_query($sql)
or die("error in SQL");

echo '<select name="', $options['id_field'], '" size="1">';

while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
if($row[0] == $options['highlight_id']) {
echo '<option value="', $row[0], '" SELECTED>',
$row[1], '</option>';
} else {
echo '<option value="', $row[0], '">',
$row[1], '</option>';
}
}

echo '</select>';
}



// Close db connection


mysql_close($conn);
?>







</body>
</html>






Beste Mark Henry,

Je zult ontdekken dat wanneer je je vraag iets subtieler stelt er meer mensen de tijd voor je probleem zullen nemen, je plaatst tegen de tweehonderd regels code en verwacht dat de mensen van het forum wel een oplossing zullen aandragen.

Meestal werkt het beter als je de significate stukken code plaatst, en per stuk code je probleem weergeeft. Hierdoor laat je zien dat je moeite hebt gedaan voor je site, en kan je met meer aankomen dan de vermelding "Het doet het niet".

Zie ook de slimme vragen tutorial:

http://www.phphulp.nl/php/tutorials/10/143/
maar 't wordt waarschijnlijk zoiets:
<SELECT name="country">
<OPTION value="land_1">Land 1</OPTION>
<OPTION value="land_2">Land 2</OPTION>
<OPTION value="land_3">Land 3</OPTION>
</SELECT

En dan query SELECT * FROM tabel WHERE country='" . $_GET['country'] . "'";

Dat heb je waarschijnlijk al geprobeerd, maar het zou wel moeten werken :)
Beste Kasper,

Ik heb onderstaande syntax ingevoegd, maar het gaat niet goed. Wordt de selectie wel doorgegeven aan de query? Hoe komt de query weer in de layoutindeling terug die ik heb gedefinieerd?



echo '<form method="post" action=""><select name="country" size=1 onChange="if (form.country.selectedIndex != 0) location = form.country.options[form.country.selectedIndex].value; "><OPTION value="austria">austria</OPTION><OPTION value="switzerland">switzerland</OPTION> <OPTION value="france">Land france</OPTION></SELECT></form>';

$query = "SELECT * FROM sionvalais WHERE country='" . $_GET['country'] . "'";

Maak van de method GET in plaats van POST...
Ja, dat is inderdaad nodig, maar het zit hem voornamelijk in de Onchange functie. Als ik nu switserland selecteer dan gaat hij op zoek naar een pagina switzerland (die er niet is) zie:
http://www.sionvalais.com/sql/view.php
het is de bedoeling dat het resultaat weer in de pagina view.php word gegooid, zodat het script weer van begin af aan wordt doorlopen, maar dan met slechts de selectie "switzerland".

groet,

Mark
<form method="GET" action="<?php print $_SERVER['PHP_SELF']; ?>" name="country">
<INPUT TYPE="hidden" name="checked" value="1">
<select name="country">
<OPTION value="austria">austria</OPTION>
<OPTION value="switzerland">switzerland</OPTION> <OPTION value="france">Land france</OPTION>
</SELECT>
<INPUT type="submit" name="submit" value="show!">
</form>';

$query = "SELECT * FROM sionvalais WHERE country='" . $_GET['country'] . "'";

Heb hem veranderd zodat je op een button moet klikken. Weet niet zoveel van javascript, maar er is ongetwijfeld een oplossing voor jouw probleem.
Je kan hem laten door lopen door een if else constructie in te voegen:

<?php
if(isset($_GET['checked'])) {
// voer code uit
}else{
// originele pagina laten zien
}
?>
YEAH! Het werkt!!! Hier ben ik echt dolblij mee...
Moet alleen nog de navigatie functie aanpassen want deze begrijpt niet dat er door de selectie minder cams en pagina's zijn.

Bedankt!


groetjes,

Mark
Nu is het wel met een button, wat minder mooi maar wel een goede tijdelijke oplossing he ;)

Blij dat ik je heb kunnen helpen :)

Reageren