17. august 2005 - 19:48Der er
16 kommentarer og 1 løsning
Sortere liste efter input
Jeg har en side der udskriver en liste fra dbén når den loader, Det kalder vi lige for standard visning. jeg vil så gerne kunne sortere denne liste efter postnr, navn,by via en form på siden, hvor jeg valgfrit kan indtaste hvad jeg vil søge på resultatet skal være at listen vises igen, bare sorteret efter hvad jeg skrev, og den skal vises i samme tabel som standard visningen blev vis i..
Jeg er nu i tvivl om hvordan jeg skal sætte de ind i den resterede kode ? Jeg har forsøgt som vis her, dog uden at det virker, men der kommer heller ikke nogen fejl.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ok, jeg kan se det virker hvis det er det eneste der sker på siden... Men ikke i mit tilfælde ?
Den ændre ikke rækkefølgen ... Jeg har 2 sql selecter med samme navn ($result) skal jeg så også have 2 echoer : if (mysql_num_rows($result) > 0) { while($row = mysql_fetch_assoc($result)) {
Først har jeg denne: if(isset($_GET['sog'])) { $id = addslashes($_GET['sog']); $result = mysql_query("select * from butikker where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr like '%$_POST[postnr]%' OR '$_POST[sb1_postby]' <> '' and sb1_postby like '%$_POST[sb1_postby]%' OR '$_POST[telefon]' <> '' and sb1_telefon like '%$_POST[telefon]%' ORDER BY $id ASC
") or die(mysql_error());
}
Og så den jeg kalder standard: $result = mysql_query("SELECT id,sb1_butiksnavn,.. bla, bla, bla...
Og så 1 stk. udskrivning: if (mysql_num_rows($result) > 0) { while($row = mysql_fetch_assoc($result)) {
Hvad er det du ønsker at sortere efter? Det er vel denne sql du skal ORDER BY $id
if(isset($_GET['sog'])) { $id = addslashes($_GET['sog']); $result = mysql_query("select * from butikker where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr like '%$_POST[postnr]%' OR '$_POST[sb1_postby]' <> '' and sb1_postby like '%$_POST[sb1_postby]%' OR '$_POST[telefon]' <> '' and sb1_telefon like '%$_POST[telefon]%' ORDER BY $id ASC
Når siden loader henter den "bare alle" (som standard) i en liste, så har jeg lavet den der form i toppen så jeg kan søge efter postnr. etc. og når jeg submitter noget i den skal min liste ændre sig efter det jeg søger efter, så ja det er ovenstående, men der sker intet :-(
Ok.. :-) <? include("../..."); if(isset($_GET['usynlig'])) { $id = addslashes($_GET['usynlig']); mysql_query("UPDATE butikker SET sb_synlig ='off' WHERE id ='$id'") or die ("Der er sket en fejl ved usynlig: ".mysql_error()); } if(isset($_GET['slet'])) { $id = addslashes($_GET['slet']); mysql_query("DELETE FROM butikker WHERE id ='$id'") or die ("Der er sket en fejl: ".mysql_error()); }
if(isset($_GET['sog'])) { $id = addslashes($_GET['sog']); $result = mysql_query("select * from butikker where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr like '%$_POST[postnr]%' OR '$_POST[sb1_postby]' <> '' and sb1_postby like '%$_POST[sb1_postby]%' OR '$_POST[telefon]' <> '' and sb1_telefon like '%$_POST[telefon]%' ORDER BY $id ASC
") or die(mysql_error());
} if($_SESSION['type']=="1") { $result = mysql_query("SELECT * date_format(sb_oprettet_dato, '%d.%m.%Y ') AS sb_oprettet_dato,date_format(sb_sidst_redigeret_dato, '%d.%m.%Y ') AS sb_sidst_redigeret_dato,sb_synlig,sb13_sb_foto FROM butikker WHERE sb_synlig ='on' order by sb1_butiksnavn") or die(mysql_error());
Hvis begge er sande, så bliver din første SQL aldrig brugt. Den bliver "skudt" af, men du hopper videre og laver en ny sql, hvorved du overskriver din gamle RESULT, og så skirver du en masse ud. Du skriver også kun ud, hvis if($_SESSION['type']=="1") Hvis ikke if($_SESSION['type']=="1") så laver du: echo "</table>"; // indput tabel slut --> echo " </td>"; echo "<td></td>"; echo " </tr>"; echo "<tr>"; echo " <td valign=\"bottom\"><img src=\"../../images/hjorne_3.gif\" alt=\"\"></td>"; echo " <td></td>"; echo " <td align=\"right\" valign=\"bottom\"><img src=\"../../images/hjorne_4.gif\" alt=\"\"></td>"; echo " </tr>"; echo " </table>"; // tabel med runde hjorner slut --> ?> Hvilket ikke skriver noget ud fra databasen!
Så skal du lave noget udtræk af dataen, ligesom du gør længere nede. Men du skal gøre det mellem:
if(isset($_GET['sog'])) { $id = addslashes($_GET['sog']); $result = mysql_query("select * from butikker where '$_POST[sogeord]' <> '' and sb1_butiksnavn like '%$_POST[sogeord]%' OR '$_POST[postnr]' <> '' and sb1_postnr like '%$_POST[postnr]%' OR '$_POST[sb1_postby]' <> '' and sb1_postby like '%$_POST[sb1_postby]%' OR '$_POST[telefon]' <> '' and sb1_telefon like '%$_POST[telefon]%' ORDER BY $id ASC
") or die(mysql_error());
Her skal du trække data ud... Noget i stil med:
if (mysql_num_rows($result) > 0) { while($row = mysql_fetch_assoc($result)) { og så antager jeg du kan kan lave resten... } if($_SESSION['type']=="1") {
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.