Det sitter i tabellen över all php-kod det är 2länkar där man väljer vilken kolumn man vill sortera efter.
man skulle ju iofs kunna sätta ett
if($empty($orderby)){
$orderby = id;
}
Register i php / "Vad hände idag för ett år sedan" i php
34 svar · 1 503 visningar · startad av rodge · sida 2 av 2
Frågan, av rodge
Hejsan, ny på detta forum och ganska ny när det gäller php. Tänkte lägga till ett register på min hemsida med information om alla låtar och alla mixar med depeche mode. Med andra ord, två kolumner, båda två ska vara sorteringsbara och när man klickar på valfri mix ska man komma till en sida där all information om just den kmixen finns. Någon som har ett script eller vet var jag kan söka ett. Sed
Läs frågan i sin helhet →Och om du testkör mitt förslag, får du då något felmeddelande ?
Då ska vi se matte.
Får detta svaret
SQL: SELECT * FROM tracks_info ORDER BY desc
You have an error in your SQL syntax near 'desc' at line 1
Visserligen om jag trycker på sortera efter titel eller sortera efter mix så försvinner felmeddelandet och mina två inlagda låtar kommer upp. Bara det att de står i lite konstig form
Titel låt 1 Mix låt 1 Titel låt 2 Mix låt 2
Skulle helst vilja ha det
Titel låt 1 Mix låt 1
Titel låt 2 Mix låt 2
Du saknar värde på $orderby.
Testa det här:
$allowed = array('titel', 'mix');
$orderby = isset($_GET['orderby']) && in_array($_GET['orderby'], $allowed) ? $_GET['orderby'] : 'id';
mysql_connect('localhost', 'dmsverige_se', 'LÖSEN');
mysql_select_db('dmsverige_se');
/// Hämtar låtarna från databasen
$sql = "SELECT * FROM tracks_info ORDER BY $orderby desc";
$latar = mysql_query($sql) or die("SQL: $sql <br>".mysql_error());
while ($rad = mysql_fetch_assoc($latar)) {
$id=$rad["id"];
$titel=$rad["titel"];
$mix=$rad["mix"];
/// Stoppar in värdena i tabellen
echo("
<tr>
<td><a href='latinfo.php?id=$id'>$titel</a></td>
<td><a href='latinfo.php?id=$id'>$mix</a></td>
</tr>
");
}
Har skrivit om det så här och då fungerar register.php
/// Ansluter
mysql_connect('localhost', 'dmsverige_se', 'LÖSEN);
mysql_select_db('dmsverige_se');
/// Hämtar låtarna från databasen
$sql = "SELECT * FROM tracks_info ORDER BY titel";
$latar = mysql_query($sql) or die("SQL: $sql <br>".mysql_error());
echo("
<table>
<tr>
<td><b>Titel</b></td>
<td><b>Mix</b></td>
</tr>
");
while ($rad = mysql_fetch_assoc($latar)) {
$id=$rad\["id"\];
$titel=$rad\["titel"\];
$mix=$rad\["mix"\];
$artikel=$rad\["artikel"\];
/// Stoppar in värdena i tabellen
echo("
\<tr\>
\<td\>\<a href='latinfo.php?id=$id'\>$titel\</a\>\</td\>
\<td\>\<a href='latinfo.php?id=$id'\>$mix\</a\>\</td\>
");
}
Nu är det bara det roliga problemet kvar att latinfo.php visar id=7 (sista inlags låt titeln) hela tiden, oberoende på vilken titel jag trycker på.
Länkt till registret:
https://www.dmsverige.se/register.php
Matte:
Har gjort lite ändringar nu när forumet låg nere så jag kommer att styra sorteringen från knapparna istället för från register.php
Du har glömt ett avslutande </tr>:
echo("
<tr>
<td><a href='latinfo.php?id=$id'>$titel</a></td>
<td><a href='latinfo.php?id=$id'>$mix</a></td>
</tr> <!-- Glömde detta -->
");
rodge skrev:
Nu är det bara det roliga problemet kvar att latinfo.php visar id=7 (sista inlags låt titeln) hela tiden, oberoende på vilken titel jag trycker på.
Då är frågan hur latinfo.php ser ut ?
latinfo.php ser ut så här:
<?php
/// Ansluter
mysql_connect(localhost,dmsverige_se,LÖSEN);
mysql_select_db(dmsverige_se);
/// Hämtar låtinfo från databasen med limit 1
$info = mysql_query("SELECT * FROM tracks_info ORDER BY id desc LIMIT 1");
WHILE($rad=mysql_fetch_array($info)){
$titel=$rad["titel"];
$mix=$rad["mix"];
$text=$rad["text"];
$artikel=$rad["artikel"];
/// Skriver en söt liten info text om låten/mixen
echo("
<b>$titel <i>($mix)</i></b>
<br>$text
<br>$artikel
");
}
?>
Testa med att ändra till
$info = mysql_query("SELECT * FROM tracks_info WHERE id = ".intval($_GET['id']));
YES!!!!
Fungerar perfekt Matte.
Tack för all hjälp.
Håller på med namdags skriptet för att få det till "vad hände idag i dm historien"
Bara två små frågor.
Kan jag styra sorteringen av antingen titel eller mix från min navigationsrad? (Se länk / Låtregister - Titel / Mix). Jag testade att ta bort (ORDER BY titel) från (SELECT * FROM tracks_info ORDER BY titel) i register.php och då sorterades filerna efter id istället
Kan jag på något sätt fixa så register.php sorteras först efter titel och sedan mix (om man väljer titel) eller först mix och sedan titel (om man väljer mix). Just nu sorterar den efter titel och sedan kommer mixarna efter id vilket medför att de inte kommer i bokstavsordning.
Du kan via PHP skriva ihop hur sorteringen skall ske. SQL-koden borde se ut ORDER BY titel, mix om du vill sortera först efter titel och sedan mix. ORDER BY mix, titel om man vill ha mix först.
Skapa alltså PHP-kod som beroende på vad man valt först lägger in just det i ORDER BY...
// Nippe
Tackar nkrantz.
Fungerade perfekt, min andra fråga. Går det att styra sorteringen från en annan sida. Via länk till register.php.
Just nu ser länken ut register.php?orderby=titel eller register.php?orderby=mix och det fungerar inte.
Hej,
Grejjen med att der stod orderby=titel t.ex. i länken var för att du hade variabeln $orderby i sql frågan, men nu när du har raderat den så funkar/finns inte den funktionen mer.
Matte gjorde en shysst allow function som ordnade med vilka kolumner den skulle sortera efter.
Bygg på den med t.ex. if ($orderby == titel){ $orderby = "titel, mix";
Och sen tvärt om för mix osv...
Tilläggas bör att då måste du ersätta orderby titel, mix i sql satsen med orderby $orderby
Fick det att fungera nu, vet inte om jag gjorde rätt, men det fungerar i alla fall.
Ladet till i länken orderby=titel, mix och orderby=mix, titel och satte tillbaka $orderby i sql frågan och då går det.
