Hallo
Ik ben nieuw, al wat ouder dan de gemiddelde bezoeker en hopelijk doe ik hier niets fout.... Ik ben net begonnen met php en sql en probeer bovenstaand script uit. Zie http://www.phphulp.nl/php/scripts/1/424/
Het volgende stukje heb ik veranderd:
 $sql = "SELECT * FROM $tb_name ORDER BY $order_by order_type";


Het is nu zo:
 $sql = "SELECT * FROM $tb_name WHERE van <= '$jaartal' AND tot >= '$jaartal' ORDER BY $order_by $order_type"; 


van en tot zijn mijn kolomnamen.
Dat werkt goed als ik in plaats van $jaartal een echt jaartal invul bijvoorbeeld 1870. $jaartal komt uit een formulierveld. De records worden wel opgehaald, maar bij het sorteren verdwijnt het resultaat.

Het lijkt te maken te hebben met de plaats waar ik het volgende in het script van Jan Koehoorn zet:
 $jaartal = mysql_real_escape_string ($_POST['jaartal']);


Maar waar ik deze regel ook zet: of de varibale is leeg op het moment dat ik hem nodig heb of hij sorteert niet.

Eventuele reacties graag zo duidelijk en volledig mogelijk. Bedankt
Johan
als je variabelen gebruikt in een query of iets anders tussen quotes, is het de bedoeling dat je die overstap laat meelezen met een .
in dit opzicht is het dus:

<?php
$sql = "SELECT * FROM $tb_name WHERE van <= '".$jaartal."' AND tot >= '".$jaartal."' ORDER BY ".$order_by." ".$order_type;
?>
Zet dit even bovenaan je script
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>
Hoi Koen en TJVB

De . geeft geen verbetering. Maar met error_reporting krijg ik:

Notice: Undefined index: id in /home/virtual/site123/fst/var/www/html/phptest/sorteer.php on line 77
Notice: Undefined index: id in /home/virtual/site123/fst/var/www/html/phptest/sorteer.php on line 78

En als ik daarna ga sorteren dan krijg ik een extra melding:
Notice: Undefined index: jaartal in /home/virtual/site123/fst/var/www/html/phptest/sorteer.php on line 61
Nu weet je waar de fout zit door die error en kan je hem vast en cker wel oplossen toch? en anders meot je iets meer code geven...
jaartal is dan niet gedefineerd tijdens het sorteren.
Kijk eens of $jaartal bestaat.

Post anders iets meer code
Hierbij de code van het originele script zoals geschreven door Jan Koevoets.
Zonder mijn eigen select query.
Ook het orginele script blijkt de "Notice: Undefined index: id in" foutmelding te geven. Als leek heb ik hier geen kijk op.

<?php
require ("../../cgi-bin/login_inc_kaal.php");
error_reporting(E_ALL);
ini_set('display_errors',1);
 
$db_name = "dbhe";
$tb_name = "raadsleden";
  
  function display_table ($db_name, $tb_name) {
    # haal de namen en het aantal velden op
    $fields = mysql_list_fields ($db_name, $tb_name);
    $columns = mysql_num_fields ($fields);

    # als er op een kolomkop geklikt is, is de naam van die kolom
    # beschikbaar via $_GET
    if (isset ($_GET['order_by'])) {
      $order_by = $_GET['order_by'];
    }
    else {
      $order_by = 'id';
    }
    
    if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
      $order_type = $_GET['order_type'];
      
      if ($order_type == 'ASC') {
        $order_type = 'DESC';
      }
      else {
        $order_type = 'ASC';
      }
    }
    else {
      $order_type = 'ASC';
    }
    
    echo '<table>';
    echo '<tr>';
    echo '<th>edit</th>';
    echo '<th>delete</th>';

    # de titelrij van de tabel in elkaar zetten
    # zorgen dat de kolomkoppen aanklikbaar zijn
    for ($i = 0; $i < $columns; $i++) {
      echo "\n";
      echo '<th>';
      $fieldname = mysql_field_name ($fields, $i) ;
      echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
      echo '</th>';
    }
    
    $sql = "SELECT *
      FROM $tb_name
      ORDER BY $order_by $order_type";
    $res = mysql_query ($sql) or die (mysql_error ());
    
    while ($row = mysql_fetch_array ($res)) {
      echo "\n";
      echo '<tr>';
      # via deze links kun je de pagina uitbreiden met delete of edit
      echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
      echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
      
      for ($i = 0; $i < $columns; $i++) {
        echo '<td>';
        echo $row[$i];
        echo '</td>';
      }

      echo '</tr>';
    }

    echo '</tr>';
    echo '</table>';
  }

display_table ("dbhe", "raadsleden");

?>

Reageren