webForumDet fria alternativet

Register i php / "Vad hände idag för ett år sedan" i php

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 →
Medlem sedan mars 2003429 inlägg
#21

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;
}

Medlem sedan aug. 20002 975 inlägg
#22

Och om du testkör mitt förslag, får du då något felmeddelande ?

Medlem sedan juli 200457 inlägg
#23

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

Medlem sedan aug. 20002 975 inlägg
#24

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>
    ");

}
Medlem sedan juli 200457 inlägg
#25

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

Medlem sedan juli 200457 inlägg
#26

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

Medlem sedan aug. 20002 975 inlägg
#27

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 ?

Medlem sedan juli 200457 inlägg
#28

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
");
}
?>

Medlem sedan aug. 20002 975 inlägg
#29

Testa med att ändra till

$info = mysql_query("SELECT * FROM tracks_info WHERE id = ".intval($_GET['id']));
Medlem sedan juli 200457 inlägg
#30

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"

Medlem sedan juli 200457 inlägg
#31

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.

Medlem sedan apr. 2002830 inlägg
#32

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

Medlem sedan juli 200457 inlägg
#33

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.

Medlem sedan mars 2003429 inlägg
#34

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

Medlem sedan juli 200457 inlägg
#35

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.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)