Hi I was wondering if someone could help me please? I need to add the ORDER BY option of my query to be a $variable so a user can choose (by either using a drop down menu or hitting hyperlink) to determine how the outputted results will be ordered. I don't know how to do this, if someone could help that would be ace.

$sql4 = mysql_query("SELECT media.*, IF (ISNULL(rating.ip), 0, 1) AS HasRated
FROM media LEFT JOIN rating ON media.media_id = rating.media_id AND rating.ip = '".$ipaddress."'
WHERE media.media_type = 'Book' ORDER BY $variable $limit");

Thank you

    Ok so I've got as far as:

    if (isset($_POST['order'])) {
    
    $order = mysql_real_escape_string($_POST['order']);
    
    $sql4 = mysql_query("SELECT media.*, IF (ISNULL(rating.ip), 0, 1) AS HasRated
    FROM media LEFT JOIN rating ON media.media_id = rating.media_id AND rating.ip = '".$ipaddress."'
    WHERE media.media_type = 'Book' ORDER BY $order ASC $limit");	
    }
    
    <form action="books.php" enctype="multipart/form-data" name="myOrder" id="myOrder" method="post">		   
    <select name="order"> <option value="<?php echo $media_title;?>">Title</option> <option value="<?php echo $rating;?>">Popular</option> </select> <input name="submit" type="button" value="submit"/> </form>

    I'm not sure where to go from here.. any ideas please?

      Your sql should be ok but the select values look wrong:

      <select name="order">
                <option value="<?php echo $media_title;?>">Title</option>
      		   <option value="<?php echo $rating;?>">Popular</option>
              </select>

      should probably be

      <select name="order">
                <option value="title">Title</option>
      		   <option value="rating">Popular</option>
              </select>

      so it's the name of the database column that is passed as the 'order' - not the title of a book or a rating

      You don't say what is wrong - also note mysql is now past its sell by date and you should look at mysqli or PDO

        Write a Reply...