lazze_gurraMedlem sedan juni 20057 inlägg
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">År</option>
<option value="Actor">Skådespelare</option>
<option value="Genre">Genre</option>
<option value="WritingCredits">Manus</option>
<option value="Director">Regisö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 >>></td>
<td colspan="5"><?php echo $row_Film_Alla['Handling']; ?></td>
</tr>
<tr>
<td height="20px" colspan="7"> </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
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
Tack så mycket för din hjälp, jag ska testa imorgon.
*/Lazze
lazze_gurraMedlem sedan juni 20057 inlägg
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
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">År</option>
<option value="Actor">Skådespelare</option>
<option value="Genre">Genre</option>
<option value="WritingCredits">Manus</option>
<option value="Director">Regisö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 >>></td>
<td colspan="5"><?php echo $row_Film_Alla['Handling']; ?></td>
</tr>
<tr>
<td height="20px" colspan="7"> </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
Tack Pedda, nu fungerar det!
*/Lazze