Avatar billede artico Novice
17. august 2005 - 19:48 Der 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.


Jeg har dette i toppen af siden:

  if(isset($_GET['sog']))  {
$id = addslashes($_GET['sog']);
  $result = mysql_query("select * from database, bla, bla......
Like..... osv.


Og dette i form action:

<form name=\"sog\" action=\"$_PHP_SELF?".$row[id]."&nx=butikker/butik
Avatar billede jakobdo Ekspert
17. august 2005 - 20:53 #1
Ret din sql til: $result = mysql_query("SELECT * FROM database blabla ORDER BY ".$id);
Avatar billede artico Novice
17. august 2005 - 21:43 #2
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)) {
Avatar billede jakobdo Ekspert
17. august 2005 - 21:44 #3
2 echoer.
Det må du gerne lige forklare nærmere?
Avatar billede artico Novice
17. august 2005 - 21:54 #4
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)) {

Hvorefter jeg henter variablerne ud med f.eks.:

echo "    <td >$row[sb1_postby]</td>\n";
Avatar billede jakobdo Ekspert
17. august 2005 - 21:56 #5
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

") or die(mysql_error());
Avatar billede artico Novice
17. august 2005 - 22:03 #6
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 :-(
Avatar billede jakobdo Ekspert
18. august 2005 - 08:05 #7
Prøv at vis mig hele den kode du bruger for at lave siden!
(HUSK at fjerne evt brugernavne og logins til din DB)
Avatar billede artico Novice
18. august 2005 - 14:45 #8
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());


// tabel med runde hjorner start -->

echo " <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#f5f5f5\"> ";
echo " <tr>";
echo "    <td></td>";
echo "    <td></td>";
echo "    <td align=\"right\" valign=\"top\"><img src=\"../../images/hjorne_2.gif\" alt=\"\"></td>";
echo " </tr>";
echo " <tr>";
echo " <td></td>";
echo "    <td>";
// indput tabel start -->
           
echo " <table border=\"0\" cellpadding=\"4\" cellspacing=\"1\" border-collapse >";
   
    $topcellebg = "#f5f5f5";
    echo " <tr>";
    echo " <td colspan=\"14\" height=\"40\" bgcolor=\"#f5f5f5\" align=\"right\">
    <a href =\"java script:nytvinscroll('butikker/liste_med_butikkerne.php')\">Udskriv liste</a>&nbsp;|&nbsp;
    <a href=\"index.php?nx=butikker/susp_butikker\">Butikker 2</a>&nbsp;|&nbsp;
    <a href=\"index.php?nx=butikker/opret_butik\">Opret ny butik</a>&nbsp;|&nbsp;
    <a href=\"index.php?nx=butikker/opret_butik_uden_detaljer\">Opret ny</a></td>";
    echo " </tr>";
    echo " <tr>";
    echo " <td colspan=\"14\">";
    //soge celle starter
    echo "<form name=\"sog\" action=\"$_PHP_SELF?".$row[id]."&nx=butikker/butikker\" method=\"post\">";
    echo "    <table class=\"sogebox\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\" > ";
    echo "    <tr>";
    echo "    <td width=\"9\"></td>";
    echo "    <td>";
    echo "    <table class=\"sogebox\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"4\">";
    echo "    <tr>";
    echo "    <td >S&oslash;geord/Firmanavn</td>";
    echo "    <td >Post nr.</td>";
    echo "                                        <td >By</td>";
    echo "                                        <td >Telefon</td>";
    echo "                                    <td></td>";
    echo "                                    </tr>";
    echo "                                    <tr>";
    echo "                                        <td><input type=\"text\" name=\"sogeord\" size=\"20\"></td>";
    echo "                                        <td><input type=\"text\" name=\"postnr\" size=\"6\" maxlength=\"4\"></td>";
    echo "                                        <td><input type=\"text\" name=\"sb1_postby\" size=\"20\"></td>";
    echo "                                        <td><input type=\"text\" name=\"telefon\" size=\"8\" maxlength=\"8\"></td>";
    echo "                                        <td><input type=\"submit\" name=\"sog\" value=\"  S&oslash;g  \"></td>";
    echo "                                    </tr>";
    echo "                                </table>";
    echo "                            </td>";
    echo "                            <td width=\"10\"></td>";
    echo "                        </tr>";
    echo "                            <tr height=\"11\">";
    echo "                            <td width=\"9\" height=\"11\"></td>";
    echo "                            <td height=\"11\"></td>";
    echo "                            <td width=\"10\" height=\"11\"></td>";
    echo "                        </tr>";
    echo "                    </table></form>";
       
    //soge celle slut
    echo "</td>";
    echo "</tr>";
   
                               
    echo " <tr bgcolor=\"$topcellebg\">";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">BUTIK</font></td>";                                       
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">BY</font></td>";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">MESTER</font></td>";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">TELEFON</font></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">FOTO</font></td>";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">SIDST RED.</font></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"></td>";
    echo " <td bgcolor=\"$topcellebg\"><font size=\"-2\">OPRETTET</font></td>";



  if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_assoc($result)) {
 
                   
                                echo "    </tr>";
    // $oprettet = "date_format('%d-%m-%y')";
    $bgcolor =  $color++%2?"F5F5F5":"ffffff";
    echo "    <tr bgcolor=\"$bgcolor\">\n";
    echo "    <td ><a href='$_PHP_SELF?id=".$row[id]."&nx=butikker/ret_butik'>$row[sb1_butiksnavn]</a></td>\n";
    echo "    <td >$row[sb1_postby]</td>\n";
    echo "    <td >$row[sb2_slm_navn]</td>\n";
    echo "    <td >$row[sb1_telefon]</td>\n";
    echo "    <td align=\"center\" valign=\"center\" >";
   
    if($row['sb1_web'] != "") {
        echo("<a href=\"{$row['sb1_web']}\" target=\"_blank\"><img src=\"grafik/home.gif\" alt=\"Se hjemmeside\" border=\"0\"></a>");
      }
    echo " </td>\n";
    echo "  <td align=\"center\" valign=\"center\" >";
   
    if($row['sb1_email'] != "") {
        echo("<a href=\"mailto:$row[sb1_email]\" target=\"_blank\"><img src=\"grafik/sendmail.gif\" alt=\"Send en E-mail til $row[sb1_email]\" border=\"0\"></a>");
   
      }
         
    echo " </td>\n";
    echo "    <td align=\"center\" valign=\"center\"><a href='$_PHP_SELF?usynlig=".$row[id]."&nx=butikker/butikker'><img src=\"../images/ikon_suspender.jpg\" alt=\"Suspender butik\" border=\"0\"></a></td>\n";
    echo "    <td align=\"center\" valign=\"center\"><a href='$_PHP_SELF?slet=".$row[id]."&nx=butikker/butikker'><img src=\"../images/ikon_slet.jpg\" alt=\"Slet butik\" border=/\"0\"></a></td>\n";       
    echo "    <td align=\"center\" >";
   
    if($row[sb13_sb_foto] != "") {    echo("<img src=\"grafik/javinkel.gif\" alt=\"Ja\" border=\"0\">");  }
    echo " </td>\n";
    echo "    <td >$row[sb_sidst_redigeret_dato]</td>\n"; 
    echo "    <td align=\"center\" valign=\"center\"><a href =\"java script:nytvinscroll('butikker/udskriv_butik.php?id=$row[id]')\"><img src=\"../images/ikon_udskriv.jpg\" alt=\"Udskriv butik\" border=\"0\"></a></td>\n";
    echo "    <td align=\"center\"><a href='$_PHP_SELF?id=".$row[id]."&nx=butikker/ret_butik'><img src=\"../images/ikon_vismere.jpg\" alt=\"Vis mere\" border=\"0\"></a></td>\n";
    echo "    <td valign=\"top\">$row[sb_oprettet_dato]</td>\n";
  }
        }
  }
  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 -->
    ?>
Avatar billede jakobdo Ekspert
18. august 2005 - 20:12 #9
Nu ved jeg ikke hvordan du gør inden, men kan disse ikke være sande samtidig:

if(isset($_GET['sog']))
if($_SESSION['type']=="1")

Din sog tror jeg, jeg forstår.
Men hvad bruger du type = 1 til?
Avatar billede artico Novice
18. august 2005 - 20:33 #10
Type er er admin, og er kun for at beskytte siden mod andre der er logget ind, og som er type 2 og 3.
Avatar billede artico Novice
18. august 2005 - 20:34 #11
Men ja veddr. dit sprg. begge kan/er sande!
Avatar billede jakobdo Ekspert
18. august 2005 - 22:49 #12
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!
Avatar billede artico Novice
18. august 2005 - 23:36 #13
Den første sql skulle også kun køres hvis  if(isset($_GET['sog']))  blev kørt, det er bare det jeg søger en løsning på ......
Avatar billede jakobdo Ekspert
19. august 2005 - 07:50 #14
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") {
Avatar billede artico Novice
15. marts 2006 - 04:53 #15
Kommer du med et svar så jeg kan lukke her :-)
Avatar billede jakobdo Ekspert
15. marts 2006 - 07:16 #16
Svar
Avatar billede jakobdo Ekspert
15. marts 2006 - 14:04 #17
Tak for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester