Problem: Blätterfunktion, Sortierung & Suchfunktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem: Blätterfunktion, Sortierung & Suchfunktion

    Hi,

    habe kleiner Probleme mit untenstehendem Code! Weiss nicht welchen teil ich vom Code kürzen kann/darf um das "Problem" nicht zu löschen...

    Erstes Problem betrifft die Blätterfunktion: Sie funktioniert soweit einwandfrei. Wird die Seite geladen, und klickt man auf die letzte existierende Seite so werden dort keine Daten ausgegeben! Klickt man danach auf irgendeine andere Seite und danach auf die letzte werden dort die Daten ausgegeben.

    Zweites Problem: Ich möchte in dem Script eine Suchfunktion integrieren. Der SQL Befehl sieht so aus:
    PHP-Code:
    $query"SELECT * FROM film WHERE film_name LIKE '%".$suchstr."%' ORDER BY film_name"
    Funktioniert auch einwandfrei - nur wie kann ich diese Abfrage in das bestehende einbauen?

    Drittes Problem: Die Sortierung - erfolgt nach ausgewähltem kriterium, welches man auswählen/anklicken kann - z.B. Genre - als zweites Kriterium soll dann immer film_name benutzt werden - macht er aber nicht :-(

    PHP-Code:
    <?php
    include ("config.php");
    echo 
    "<table width='750' border='1' cellspacing=0 cellpadding=3 class=m>";
        echo 
    "<tr>";
        echo 
    "<td><a href='f.php?sort=film_name'>Film</a></td>";
        echo 
    "<td>CDs</td>";
        echo 
    "<td><a href='f.php?sort=laenge'>Länge</a></td>";
        echo 
    "<td><a href='f.php?sort=jahr'>Jahr</td>";
        echo 
    "<td><a href='f.php?sort=format'>Format</td>";
        echo 
    "<td><a href='f.php?sort=sprache'>Sprache</td>";
        echo 
    "<td><a href='f.php?sort=genre'>Genre</td>";
        echo 
    "<td><a href='f.php?sort=date'>Added</td></tr>";
        
        
    $orderby = !$_GET[sort]?"film_name":$_GET[sort];
        
    $orderby.=($orderby=='date')?' DESC':' ASC';
        
    $by = !$_GET[sort]?"film_name":$_GET[sort];

    $query"SELECT * FROM film";
    $result mysql_query($query);
    $nr mysql_num_rows($result); #Gesamtanzahl $result muss ohne LIMIT ermittelt werden.
    $showmax 20;
    if(!isset(
    $start)) $start 0;
    $start intval($start);
    $shownsteps 3#Anzahl der Seitenzahlen links und rechts von der aktuellen Seitenzahl.

    $shows $start+1;
    $showe $start+$showmax;
    if(
    $showe $nr$showe $nr;
    $q "SELECT *,date_format(date,'%d.%m.%Y') as datum FROM film ORDER BY
    $orderby, film_name ASC LIMIT $start,$showmax";
    $r mysql_query($q$verbind);
    while(
    $daten mysql_fetch_assoc($r))
    {
    print 
    "<tr><td class=\"film\" onMouseOver=\"this.style.backgroundColor='#536a88'; 
    this.style.cursor='hand';\" 
    onMouseOut=\"this.style.backgroundColor='#022744';\" onClick=\"javascript:
    winMove("
    .$daten[id].")\">
    <a href=\"javascript:winMove("
    .$daten[id].")\">$daten[film_name]</a></td>";
    print 
    "<td class=\"film_c\">$daten[cds]</td>
    <td class=\"film_c\">
    $daten[laenge]&nbsp;min</td>
    <td class=\"film_c\">
    $daten[jahr]</td>
    <td class=\"film_c\">
    $daten[format]</td>";
    if (
    $daten[sprache] =="de" || $daten[sprache] =="en" 
    {
    print 
    "<td class=\"film_c\"><img src=\"pics/$daten[sprache].gif\" border=0></td>";
    }
    else
    {
    print 
    "<td>$daten[sprache]</td>";
    }
    print 
    "<td class=\"film\">$daten[genre]</td>";
    print 
    "<td class=\"film\">$daten[datum]</td>
    </td></tr>"
    ;
    }
    print 
    "</table><br>"

    if(
    $nr $showmax)
     {
          if(
    $start != 0) print "<a href=\"f.php?sort=$by&start=".($start-$showmax)."\">
    << vorherige</a>&nbsp;&nbsp;"
    ;
          
    $begin $start-($shownsteps*$showmax);
          
    $end $start+(($shownsteps+1)*$showmax);
          
    $now $begin;
          
    $i = ($begin/$showmax)+1;
          if(
    $now-$showmax >= 0) print "<a href=\"f.php?sort=$by&start=0\">1</a>
     <span class=\"m\">...</span> "
    ;
          while(
    $now $end)
           {
            if((
    $now >= 0) && ($now <= $nr))
             {
              if(
    $now == $start) print "<span class=\"m\">$i</span> ";
              else print 
    "<a href=\"f.php?sort=$by&start=$now\">$i</a> ";
             }
            
    $now += $showmax;
            
    $i++;
           }
          
    $temp bcdiv($nr,$showmax,0)+1;
          if(
    $now+$showmax <= $nr) print "<span class=\"m\">...</span> 
    <a href=\"f.php?sort=
    $oby&start=".($temp*$showmax)."\">$temp</a> ";
          
    $t $start+$showmax;
          if(
    $t $nr) print "&nbsp;<a href=\"f.php?sort=$by&start=$t\">nächste >></a>";
         }
        else print 
    "&nbsp;";
    ?>
    <form method="get" action="search.php">
    <table border="0" cellspacing="5" cellpadding="0" align="center">
    <tr>
    <td><div align="center">
    <input type="text" name="suchstr" class="sform">
    </div></td>
    <td>
    <input type="submit" value="Suchen" name="submit22" class="sbutton">
    </td></tr>
    </table>
    </form>
    EDIT:
    hab mal ein paar zusätzliche zeilenumbrüche reingemacht, meterweises querscrolling saugt. wahsaga
    Zuletzt geändert von wahsaga; 18.12.2003, 16:48.

  • #2
    Re: Problem: Blätterfunktion, Sortierung &amp; Suchfunktion

    Original geschrieben von zerosero
    Erstes Problem betrifft die Blätterfunktion: Sie funktioniert soweit einwandfrei. Wird die Seite geladen, und klickt man auf die letzte existierende Seite so werden dort keine Daten ausgegeben! Klickt man danach auf irgendeine andere Seite und danach auf die letzte werden dort die Daten ausgegeben.
    dann ist zu vermuten, dass du beim ersten auslesen der daten die anzahl der datensätze nicht richtig ermittelst, bzw. dich bei den grenzwerten der seitenanzahlen verrechnet hast.

    Zweites Problem: Ich möchte in dem Script eine Suchfunktion integrieren. Der SQL Befehl sieht so aus:
    PHP-Code:
    $query"SELECT * FROM film WHERE film_name LIKE '%".$suchstr."%' ORDER BY film_name"
    Funktioniert auch einwandfrei - nur wie kann ich diese Abfrage in das bestehende einbauen?
    dazu müsstest du m.e. (wenn du in den suchergebnissen blättern willst) deine bisherige query durch diese ersetzen, natürlich noch um das LIMIT ergänzt.
    Drittes Problem: Die Sortierung - erfolgt nach ausgewähltem kriterium, welches man auswählen/anklicken kann - z.B. Genre - als zweites Kriterium soll dann immer film_name benutzt werden - macht er aber nicht :-(
    "macht er aber nicht" ist keine besonders gute fehlerbeschreibung *seufz*

    mach zuerst mal kontrollausgaben des querystrings per echo, ob dieser auch korrekt ist/so aussieht, wie du es erwartest.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Es gibt da ein Feature namens Volltextsuche!
      LIMIT ORDER BY WHERE MATCH ASSIGN - diese wirst du alle gebrauchen

      http://www.mysql.de
      Da wirste fündig
      Visit my php blog!

      Kommentar


      • #4
        Danke Euch für die Antworten... werd es mir morgen mal anschaun und schaun ob ich das verstehe! Sehe schwarz ;-)

        Kommentar

        Lädt...
        X