webForumDet fria alternativet

Query sort

5 svar · 595 visningar · startad av lazze_gurra

lazze_gurraMedlem sedan juni 20057 inlägg
#1

Hej.
Jag har lagt upp en filmlista i en databas, för att lära mig använda MySQL.
Jag lade även till en sorterings funktion för att ordna tabellen efter Film, År, Regissör osv.
Detta presenteras på en hemsida i tabellform.
Allting fungerade perfekt.
Helt plötsligt fungerade inte sorteringen, och vad jag vet har jag inte ändrat koden, eller??

<?php require_once('Connections/MySQL.php'); ?>

<?php
mysql_select_db($database_MySQL, $MySQL);
$query_Film_Alla = "SELECT * FROM movie ORDER BY '$order_by'";
$Film_Alla = mysql_query($query_Film_Alla, $MySQL) or die(mysql_error());
$row_Film_Alla = mysql_fetch_assoc($Film_Alla);
$totalRows_Film_Alla = mysql_num_rows($Film_Alla);
$order_by=$_GET['select'];
if(is_numeric($order_by)){
$order_by=$order_by.' DESC';
}
?>

<body>

<form action="minafilmer.php" method="GET" enctype="multipart/form-data" name="form1">
    <select name="select">
      <option value="Film_id">Film_id</option>
      <option value="Film">Film</option>
      <option value="Year">&Aring;r</option>
      <option value="Actor">Sk&aring;despelare</option>
      <option value="Genre">Genre</option>
      <option value="WritingCredits">Manus</option>
      <option value="Director">Regis&ouml;r</option>
    </select>
	<input type="submit" value="Ordna">
    </form>

<?php do { ?>
      <tr>
        <td><?php echo $row_Film_Alla['Film_id']; ?></td>
        <td><?php echo $row_Film_Alla['Film']; ?></td>
        <td><?php echo $row_Film_Alla['Year']; ?></td>
        <td><?php echo $row_Film_Alla['Actor']; ?></td>
        <td><?php echo $row_Film_Alla['Genre']; ?></td>
        <td><?php echo $row_Film_Alla['WritingCredits']; ?></td>
        <td><?php echo $row_Film_Alla['Director']; ?></td>
        
    </tr>
	<tr>
	<td colspan="2" scope="col">Handling &gt;&gt;&gt;</td>
	<td colspan="5"><?php echo $row_Film_Alla['Handling']; ?></td>
	</tr>
	<tr>
	<td height="20px" colspan="7">&nbsp;</td>
	</tr>

      <?php } while ($row_Film_Alla = mysql_fetch_assoc($Film_Alla)); ?>

</body>
</html>

<?php
mysql_free_result($Film_Alla);
mysql_free_result($RecordsetFilm);
?>

Väldigt tacksam för hjälp.

*/Lazze

PeddaMedlem sedan juni 20004 880 inlägg
#2

Du ger $order_by värdet efter din selectsats.
Flytta upp

$order_by=$_GET['select'];
if(is_numeric($order_by)){
$order_by=$order_by.' DESC';
}

ovanför selectsatsen så funkar det nog.

/red
Kolla även med isset() om $_GET['select'] är satt, om inte ge den ett standardvärde att sortera efter.
Och varför har du enctype="multipart/form-data" i formuläret? Det behövs inte.

Och... välkommen till wF. :birp

lazze_gurraMedlem sedan juni 20057 inlägg
#3

Tack så mycket för din hjälp, jag ska testa imorgon.

*/Lazze

lazze_gurraMedlem sedan juni 20057 inlägg
#4

Hej igen, jag har flyttat om som du sa:

<?php
mysql_select_db($database_MySQL, $MySQL);
$order_by=$_GET['select'];
if(is_numeric($order_by)){
$order_by=$order_by.' DESC';
}
$query_Film_Alla = "SELECT * FROM movie ORDER BY '$order_by'";
$Film_Alla = mysql_query($query_Film_Alla, $MySQL) or die(mysql_error());
$row_Film_Alla = mysql_fetch_assoc($Film_Alla);
$totalRows_Film_Alla = mysql_num_rows($Film_Alla);
?>

Jag tog även bort "enctype"

Sen körde jag nedanstående:

<?php
if (isset($_GET)) {
    echo "Detta Funkar.";
}
?>

och det resulterade i: Detta Funkar.

Jag körde även:

<?php
if (isset($_GET['select'])) {
    echo "Detta Funkar.";
}
?>

Detta resulterade inte i "Detta Funkar".

Och om det är
"$_GET['select']"
som inte är satt så behöver jag hjälp med hela den koden, så att jag får den rätt.

Kan något på phpmyadmin orsaka att det inte fungerar, för den kolumn jag väljer att ordnar tabellen efter i phpmyadmin, är den kolumnen som det ordnas efter på hemsidan?

*/Lazze

Ska också säga att det fortfarande inte funkar.

PeddaMedlem sedan juni 20004 880 inlägg
#5

Såg nu att du kollade värdet med is_numeric() vilket kollar om värdet är numeriskt. Men värdet du har i din select är ju strängar, så den kodbiten måste du ta bort.

Jag skulle göra nåt sånt här:

<?php 
require_once('Connections/MySQL.php');

mysql_select_db($database_MySQL, $MySQL);

if(isset($_GET['select'])) {
	$order_by=$_GET['select'];
} else {
	$order_by='Film_id'; // ändra till det fält du vill ha som standard om inget är valt i din select
}

$query_Film_Alla = "SELECT * FROM movie ORDER BY $order_by DESC";
$Film_Alla = mysql_query($query_Film_Alla, $MySQL) or die(mysql_error());
$row_Film_Alla = mysql_fetch_assoc($Film_Alla);
$totalRows_Film_Alla = mysql_num_rows($Film_Alla);
?>

<body>
<form action="minafilmer.php" method="GET" name="form1">
    <select name="select">
      <option value="Film_id">Film_id</option>
      <option value="Film">Film</option>
      <option value="Year">&Aring;r</option>
      <option value="Actor">Sk&aring;despelare</option>
      <option value="Genre">Genre</option>
      <option value="WritingCredits">Manus</option>
      <option value="Director">Regis&ouml;r</option>
    </select>
	<input type="submit" value="Ordna">
    </form>

<?php do { ?>
      <tr>
        <td><?php echo $row_Film_Alla['Film_id']; ?></td>
        <td><?php echo $row_Film_Alla['Film']; ?></td>
        <td><?php echo $row_Film_Alla['Year']; ?></td>
        <td><?php echo $row_Film_Alla['Actor']; ?></td>
        <td><?php echo $row_Film_Alla['Genre']; ?></td>
        <td><?php echo $row_Film_Alla['WritingCredits']; ?></td>
        <td><?php echo $row_Film_Alla['Director']; ?></td>
        
    </tr>
	<tr>
	<td colspan="2" scope="col">Handling &gt;&gt;&gt;</td>
	<td colspan="5"><?php echo $row_Film_Alla['Handling']; ?></td>
	</tr>
	<tr>
	<td height="20px" colspan="7">&nbsp;</td>
	</tr>

      <?php } while ($row_Film_Alla = mysql_fetch_assoc($Film_Alla)); ?>

</body>
</html>

<?php
mysql_free_result($Film_Alla);
mysql_free_result($RecordsetFilm);
?>
lazze_gurraMedlem sedan juni 20057 inlägg
#6

Tack Pedda, nu fungerar det!

*/Lazze

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb