Hallo allemaal,

ik probeer het paginanummeringscript van de library te gebruiken http://www.phphulp.nl/php/scripts/3/869/ maar ik doe iets niet goed. Kan iemand even over mijn pagina heen kijken wat er mis mee is?
Moet ik mijn query aanpassen?


<link rel="stylesheet" href="../opmaak.css" type="text/css"> 
<? 
//------------------------// 
// DATABASE CONFIGURATIE  // 
//------------------------// 
$mysql_user = "xx"; // je mysql login naam
$mysql_pass = "xx"; // je mysql wachtwoord
$mysql_host = "xx"; // de host van je mysql database (localhost is meestal wel oke)
$mysql_dbn = "xx"; // de naam van je database

if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))) 
{ 
    //--- De verbinding is nu dus mislukt, geef hier een melding van 
    echo "database connectie mislukt!"; 
     
    //--- Zorg ervoor dat het script stopt. 
    exit(); 
} 

else 
{ 

    $sql = "SELECT id,naam,plaats,soort FROM dagjes WHERE provincie LIKE '%$_POST[group1]%' AND soort LIKE '%$_POST[group2]%' ORDER BY naam ASC"; 
     
    // Voer SQL code uit 
    $res = mysql_query($sql); 
     
    // Kijk of er 1 of meerdere rijen gevonden zijn 
    if (mysql_num_rows($res) >= 1) 
    { 

$row['naam'] = htmlentities($row['naam']); 
$row['plaats'] = nl2br(htmlentities($row['plaats'])); 

echo '<table width="100%"  border="0" cellspacing="0" cellpadding="6">'; 
echo '<tr bgcolor="#EEEEEE" class="zoekstandaardvetlicht">'; 
echo '<td width="60%" valign="top" valign="top"></td>'; 
echo '<td width="20%" valign="top">Soort</td>'; 
echo '<td width="20%" valign="top">Plaats</td>'; 
echo '</tr>'; 
echo '</table>'; 

$a = 0; 
     echo "<table>"; 
while ($row = mysql_fetch_array($res)) { 

     $rij_kleur = ($a++ % 2) ? "#D1E0EF" : "#FFFFFF"; 

echo '<table width="100%"  border="0" cellspacing="0" cellpadding="6">'; 
echo '<tr bgcolor="'.$rij_kleur.'">'; 
echo '<td width="60%" valign="top" class="zoekstandaardvet" valign="top"><a href="index3.php?more='.$row['id'].'">' . $row['naam'] . '</td>'; 
echo '<td width="20%" class="zoekstandaard" valign="top">' . $row['soort'] . '</td>'; 
echo '<td width="20%" class="zoekstandaard" valign="top">' . $row['plaats'] . '</td>'; 
echo '</tr>'; 
} 
     echo "</table>"; 
$a++; 

function bladwijzer($sql, $aantal, $scheiding, $pagenaam) {
// Wat belangrijke variabelen
$pagnaam = isset($pagenaam) ? $pagenaam : 'page';
$page = isset($_GET[$pagnaam]) ? $_GET[$pagnaam] : '1';
$begin = ($page-1) * $aantal;
if ($scheiding == '-') {
unset($scheiding);
}

// De URL geschikt maken (De page=[deze pagina] weghalen en kiezen tussen ? en &)
if (isset($page)) {
$envraagarray = array($pagnaam.'='.$page.'&', '&'.$pagnaam.'='.$page, '?'.$pagnaam.'='.$page);
$filtered = str_replace($envraagarray, '', $_SERVER['REQUEST_URI']);
$explode = explode('.', $filtered);
$envraag = strlen($explode[1]) == 3 ? '?' : '&';
$url = $filtered.$envraag;
}
else {
$explode = explode('.', $_SERVER['REQUEST_URI']);
$envraag = strlen($explode[1]) == 3 ? '?' : '&';
$url = $_SERVER['REQUEST_URI'].$envraag;
}

// De results voor deze pagina
$return['sql'] = mysql_query($sql." LIMIT ".$begin.",".$aantal);

// De results voor alle pagina's
$sqlgedaan = mysql_query($sql);
$totaal = mysql_num_rows($sqlgedaan);

$aantpages = ceil($totaal/$aantal);

// Vorige (plus ...)
// $vorigepuntjes = $page-$scheiding > 1 && isset($scheiding) ? '<a href="'.$url.'page=1">1</a> ...' : '';
$vorigepuntjes = $page-$scheiding > 1 && isset($scheiding) ? '...' : '';
$vorige = $page > 1 ? '<a href="'.$url.$pagnaam.'='.($page-1).'">vorige</a> '.$vorigepuntjes : '';

// Variabelen voor het inspringen (voor de $scheiding)
$i_begin = isset($scheiding) ? $page-$scheiding : 1;
$i_eind_extra = $i_begin < 1 ? 1-$i_begin : 0;
$i_eind = isset($scheiding) ? $page+$scheiding : $aantpages;
$i_begin_extra = $i_eind > $aantpages ? $scheiding-($aantpages-$page) : 0;
$i_begin = $i_begin < 1 ? 1 : $i_begin;
$i_begin = $i_begin - $i_begin_extra;
$i_eind_extra = $i_begin < 1 ? $i_eind_extra+(1-$i_begin) : $i_eind_extra;
$i_begin = $i_begin < 1 ? 1 : $i_begin;
$i_eind = $i_eind == 1 ? 0 : $i_eind + $i_eind_extra-$i_begin_extra;
$i_eind = $i_eind > $aantpages ? $aantpages : $i_eind;

// De getallen
for ($i = $i_begin; $i <= $i_eind; $i++) {
$bladwijzer[] = $page == $i ? '<b>'.$i.'</b>' : '<a href="'.$url.$pagnaam.'='.$i.'">'.$i.'</a>';
}

// Volgende (plus ...)
// $volgendepuntjes = $page+$scheiding < $totaal/$aantal && isset($scheiding) ? '... <a href="'.$url.'page='.$aantpages.'">'.$aantpages.'</a>' : '';
$volgendepuntjes = $page+$scheiding < $totaal/$aantal && isset($scheiding) ? '...' : '';
$volgende = $aantpages >= 1 && ($page+1) <= $aantpages ? $volgendepuntjes.' <a href="'.$url.$pagnaam.'='.($page+1).'">volgende</a>' : '';

if (isset($bladwijzer)) {
$return['nummering'] = $vorige.implode(", ", $bladwijzer).$volgende;
}
$return['e - l'] = '<a href="'.$url.$pagnaam.'=1">Eerste</a> - <a href="'.$url.$pagnaam.'='.$aantpages.'">Laatste</a>';
$return['totaal'] = $totaal;
return $return;
}


    } 
    else 
        echo "<p>Er zijn helaas geen dagjes gevonden die voldoen aan uw zoekcriteria.</p>"; 
} 

?>
weet je zeker dat je hier met post kunt werken??
post? hoe bedoel je dat?
Je hebt de functie niet opgeroepen ;-)

Dit is een functie.. die kan je meer gebruiken:

<?php
//------------------------//
// DATABASE CONFIGURATIE //
//------------------------//
$mysql_user = "xx"; // je mysql login naam
$mysql_pass = "xx"; // je mysql wachtwoord
$mysql_host = "xx"; // de host van je mysql database (localhost is meestal wel oke)
$mysql_dbn = "xx"; // de naam van je database

if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
//--- De verbinding is nu dus mislukt, geef hier een melding van
echo "database connectie mislukt!";

//--- Zorg ervoor dat het script stopt.
exit();
}

else
{
function bladwijzer($sql, $aantal = 10, $scheiding = '-', $pagenaam = 'page') {
// Wat belangrijke variabelen
$pagnaam = isset($pagenaam) ? $pagenaam : 'page';
$page = isset($_GET[$pagnaam]) ? $_GET[$pagnaam] : '1';
$begin = ($page-1) * $aantal;
if ($scheiding == '-') {
unset($scheiding);
}

// De URL geschikt maken (De page=[deze pagina] weghalen en kiezen tussen ? en &)
if (isset($page)) {
$envraagarray = array($pagnaam.'='.$page.'&', '&'.$pagnaam.'='.$page, '?'.$pagnaam.'='.$page);
$filtered = str_replace($envraagarray, '', $_SERVER['REQUEST_URI']);
$explode = explode('.', $filtered);
$envraag = strlen($explode[1]) == 3 ? '?' : '&';
$url = $filtered.$envraag;
}
else {
$explode = explode('.', $_SERVER['REQUEST_URI']);
$envraag = strlen($explode[1]) == 3 ? '?' : '&';
$url = $_SERVER['REQUEST_URI'].$envraag;
}

// De results voor deze pagina
$return['sql'] = mysql_query($sql." LIMIT ".$begin.",".$aantal);

// De results voor alle pagina's
$sqlgedaan = mysql_query($sql);
$totaal = mysql_num_rows($sqlgedaan);

$aantpages = ceil($totaal/$aantal);

// Vorige (plus ...)
// $vorigepuntjes = $page-$scheiding > 1 && isset($scheiding) ? '<a href="'.$url.'page=1">1</a> ...' : '';
$vorigepuntjes = $page-$scheiding > 1 && isset($scheiding) ? '...' : '';
$vorige = $page > 1 ? '<a href="'.$url.$pagnaam.'='.($page-1).'">vorige</a> '.$vorigepuntjes : '';

// Variabelen voor het inspringen (voor de $scheiding)
$i_begin = isset($scheiding) ? $page-$scheiding : 1;
$i_eind_extra = $i_begin < 1 ? 1-$i_begin : 0;
$i_eind = isset($scheiding) ? $page+$scheiding : $aantpages;
$i_begin_extra = $i_eind > $aantpages ? $scheiding-($aantpages-$page) : 0;
$i_begin = $i_begin < 1 ? 1 : $i_begin;
$i_begin = $i_begin - $i_begin_extra;
$i_eind_extra = $i_begin < 1 ? $i_eind_extra+(1-$i_begin) : $i_eind_extra;
$i_begin = $i_begin < 1 ? 1 : $i_begin;
$i_eind = $i_eind == 1 ? 0 : $i_eind + $i_eind_extra-$i_begin_extra;
$i_eind = $i_eind > $aantpages ? $aantpages : $i_eind;

// De getallen
for ($i = $i_begin; $i <= $i_eind; $i++) {
$bladwijzer[] = $page == $i ? '<b>'.$i.'</b>' : '<a href="'.$url.$pagnaam.'='.$i.'">'.$i.'</a>';
}

// Volgende (plus ...)
// $volgendepuntjes = $page+$scheiding < $totaal/$aantal && isset($scheiding) ? '... <a href="'.$url.'page='.$aantpages.'">'.$aantpages.'</a>' : '';
$volgendepuntjes = $page+$scheiding < $totaal/$aantal && isset($scheiding) ? '...' : '';
$volgende = $aantpages >= 1 && ($page+1) <= $aantpages ? $volgendepuntjes.' <a href="'.$url.$pagnaam.'='.($page+1).'">volgende</a>' : '';

if (isset($bladwijzer)) {
$return['nummering'] = $vorige.implode(", ", $bladwijzer).$volgende;
}
$return['e - l'] = '<a href="'.$url.$pagnaam.'=1">Eerste</a> - <a href="'.$url.$pagnaam.'='.$aantpages.'">Laatste</a>';
$return['totaal'] = $totaal;
return $return;
}

$sql = "SELECT id,naam,plaats,soort FROM dagjes WHERE provincie LIKE '%$_POST[group1]%' AND soort LIKE '%$_POST[group2]%' ORDER BY naam ASC";

// Voer SQL code uit
$bladwijzer = bladwijzer($sql);
$res = $bladwijzer['sql'];
// Kijk of er 1 of meerdere rijen gevonden zijn
if ($bladwijzer['totaal'] >= 1)
{

$row['naam'] = htmlentities($row['naam']);
$row['plaats'] = nl2br(htmlentities($row['plaats']));

echo '<table width="100%" border="0" cellspacing="0" cellpadding="6">';
echo '<tr bgcolor="#EEEEEE" class="zoekstandaardvetlicht">';
echo '<td width="60%" valign="top" valign="top"></td>';
echo '<td width="20%" valign="top">Soort</td>';
echo '<td width="20%" valign="top">Plaats</td>';
echo '</tr>';
echo '</table>';

$a = 0;
echo "<table>";
while ($row = mysql_fetch_array($res)) {

$rij_kleur = ($a++ % 2) ? "#D1E0EF" : "#FFFFFF";

echo '<table width="100%" border="0" cellspacing="0" cellpadding="6">';
echo '<tr bgcolor="'.$rij_kleur.'">';
echo '<td width="60%" valign="top" class="zoekstandaardvet" valign="top"><a href="index3.php?more='.$row['id'].'">' . $row['naam'] . '</td>';
echo '<td width="20%" class="zoekstandaard" valign="top">' . $row['soort'] . '</td>';
echo '<td width="20%" class="zoekstandaard" valign="top">' . $row['plaats'] . '</td>';
echo '</tr>';
}
echo "</table>";
$a++;

echo $bladwijzer['nummering'];

}
else
echo "<p>Er zijn helaas geen dagjes gevonden die voldoen aan uw zoekcriteria.</p>";
}

?>

Dit zou moeten werken..

(Ik heb de functie ook een klein beetje geüpdate, want deze functie stamt uit de tijd dat ik net functies had ontdekt..)

[edit]
Dit zou moeten werken..

... nou.. misschien niet.. ik heb niet getest, maar ik ga er wel vanuit dat het werkt
[/edit]
YESSSSSSSSSSSSSSSSSS!!!!!!!!!!!!

bedankt! hij doet het!

te gek!
Nog wel even de boel beveiligen, je hebt SQL-injection wel erg eenvoudig gemaakt... mysql_real_escape_string() doet wonderen!

En wanneer je toch bezig bent, controleer altijd of de query wel is gelukt ($result TRUE of FALSE), er is namelijk geen enkele garantie dat het altijd goed gaat.
ik heb te vroeg gejuicht :(

de paginanummers werken verder wel mooi, alleen als ik dan op een volgende pagina klik dan vergeet hij de zoekresultaten en geeft ie alle items weer.


dit is het formpje dat ervoor zit:

<form name="form1" method="post" action="soort.php">
        <table width="190" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td width="190" height="18" valign="top" align="left"> <span class="zoekstandaardVet2">Zoek 
              op soort</span></td>
          </tr>
          <tr> 
            <td width="190" height="30"><span class="zoekstandaard"> 
              <select name="group1" class="breedte_menus">
                <option value="">Heel Nederland</option>
                <option>Drenthe</option>
                <option>Flevoland</option>
                <option>Friesland</option>
                <option>Gelderland</option>
                <option>Groningen</option>
                <option>Limburg</option>
                <option>Noord-Brabant</option>
                <option>Noord-Holland</option>
                <option>Overijssel</option>
                <option>Utrecht</option>
                <option>Zeeland</option>
                <option>Zuid-Holland</option>
              </select>
              </span></td>
          </tr>
          <tr> 
            <td width="190" height="30"><span class="zoekstandaard"> 
              <select name="group2" class="breedte_menus">
                <option value="">Kies een soort</option>
                <option>Bezichtiging</option>
                <option>Expositie</option>
                <option>Evenement</option>
                <option>Galerie</option>
                <option>Huifkartocht</option>
              </select>
              </span></td>
          </tr>
          <tr> 
            <td width="190" class="zoekstandaardVet2" height="36"><span class="zoekstandaard"> 
              <input type="submit" name="Submit2" value="Zoek" class="breedte_menus">
              </span></td>
          </tr>
        </table>
        <br>
      </form>


weet iemand hoe ik soort.php het zoekresultaat kan laten onthouden zodat ik de paginanummers ook echt kan gebruiken?
Van POST GET gemaakt Mark bedankt!
N.a.v. een pm, het antwoord op de vraag hoe e.e.a. is te beveiligen tegen SQL-injection.

* Er mag nooit en te nummer browser-input (bv. POST of GET) in de query staan.

Wanneer je gebruik maakt van MySQL, kun je de input beveiligen met mysql_real_escape_string(), zie dit voorbeeldje:
<?php

$naam = mysql_real_escape_string($_POST['naam']);

$sql = "
INSERT INTO
tabelnaam(
kolomnaam
)
VALUES(
'".$naam."'
)";
if(mysql_query($sql){
// query gelukt
}
else {
// query mislukt
echo mysql_error();
echo $sql;
}
?>
$naam is beveiligd en kan nu veilig in de query staan. Wanneer er nu vanuit jouw formulier een hackpoging wordt gedaan, dan zal de functie mysql_real_escape_string() de poging om zeep helpen door netjes op de benodigde plaatsen de ingevoerde quotes veilig te escapen.

Voor de rest: Zie de tutorials.

Reageren