Templatefrage

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

  • Templatefrage

    Hallo,

    ich möchte eine Seite mit CD-Reviews umstrukturieren. Bislang konnte man in der Reviewübersicht alphabetisch durchklicken. So hatte ich Dateien a.php, b.php, c.php etc. Nun würde ich das gerne so machen, dass alles über die index.php oder zB anzeigen.php geregelt wird. Mit einem Klick auf A sollen dann lediglich Bands, beginnend mit A ausgegeben werden. So erspare ich mir einige Dateien und womöglich Ladezeiten. Ich weiß leider nicht mal genau, wonach ich zur Hilfestellung suchen müsste, von daher wäre ich über Hinweise dankbar.

    Andi
    Zuletzt geändert von derandi; 16.08.2006, 23:39.

  • #2
    du gibst der index.php oder anzeigen.php noch einen get-parameter mit.
    z.b. index.php?schow=a

    in der index.php (anzeigen.php ) kannst du nun per $_GET['show'] auf den übergeben parameter reagieren -> a.php includen, datenbankabfrage starten ... whatever ...

    Kommentar


    • #3
      Also bräuchte ich weiterhin eine a.php, auf die per include dann zugegriffen wird?

      Kommentar


      • #4
        nö, hatte dir ja schon das bsp. mit der db-abfrage genannt.

        was machen den deine einzelnen [a-z].php?

        Kommentar


        • #5
          Die listen alphabetisch die Bands des Buchstaben auf und der Albumtitel verlinkt dann zur Reviewseite.

          Kommentar


          • #6
            ich vermute mal, fest in html codiert- oder?

            wenn ja, include.
            besser, gemeinsame datenbasis schaffen - array oder db.

            aber warum soll das eine templatefrage sein?

            Kommentar


            • #7
              Nunja, ich wusste nicht, was ich als Titel besser schreiben konnte. Bei templates funktioniert das doch so ähnlich. Ein festes Gerüst und dann die Daten ausgeben.

              Kommentar


              • #8
                Vielleicht kannst du mir schnell nochmal helfen. Eine test.php hat nun die Links a-z: anzeigen.php?show=a (etc.)

                Die anzeigen.php hat nun folgenden Quellcode:

                PHP-Code:
                <?
                    if(isset($_GET['show=a'])){
                    $letter = "show/".$_GET['show'].".php";
                    $abfrage = "SELECT *
                            FROM cdreviews
                            WHERE rev_band LIKE 'A%'
                            ORDER BY rev_band ASC";
                $ergebnis = mysql_query($abfrage);
                while($row = mysql_fetch_object($ergebnis))
                {
                echo "<tr align=\"left\" valign=\"top\"><td>";
                echo " • <a href=\"$m1path
                reviews/reviews.php?rev_id=$row->rev_id\"> <b>$row->rev_band</b>&nbsp;\"$row->rev_album\"</a>";
                echo "</td><td align=left class=\"revstil\">";
                echo " $row->rev_stil";
                echo"</td></tr>";
                } }
                else
                {
                echo "Ne!";
                }
                ?>
                "Ne!" ist das Ergebnis. Das wird wohl noch komplett falsch sein, ich habe bloß immer das Problem, dass ich sehr schwer durch "neue" Scripts durchsteige.

                Edit: Habs schon, ganz oben muss es nicht "show=a" heuißen, sondern nur "show".

                Kommentar


                • #9
                  Nochmal hier zu eine Frage. Testweise habe ich jetzt nur mal A, B und C versucht. Mein Code dazu lautet wie folgt:

                  PHP-Code:
                  <?
                  if(isset($_GET['show'])){
                  $letter = "show".$_GET['?show=a'];
                  $ergebnis = mysql_query("SELECT * FROM cdreviews WHERE rev_band LIKE 'a%' ORDER BY rev_band ASC");
                  while($row = mysql_fetch_object($ergebnis))            
                  {
                  echo "<tr align=\"left\" valign=\"top\"><td>";
                  echo " • <a href=\"$m1path
                  reviews/reviews.php?rev_id=$row->rev_id\"> <b>$row->rev_band</b>&nbsp;\"$row->rev_album\"</a>";
                  echo "</td><td align=left class=\"revstil\">";
                  echo " $row->rev_stil";
                  echo"</td></tr>";
                  }}
                  elseif(isset($_GET['show'])){
                  $letter = "show".$_GET['?show=b'];
                  $ergebnis = mysql_query("SELECT * FROM cdreviews WHERE rev_band LIKE 'b%' ORDER BY rev_band ASC");
                  while($row = mysql_fetch_object($ergebnis))            
                  {
                  echo "<tr align=\"left\" valign=\"top\"><td>";
                  echo " • <a href=\"$m1path
                  reviews/reviews.php?rev_id=$row->rev_id\"> <b>$row->rev_band</b>&nbsp;\"$row->rev_album\"</a>";
                  echo "</td><td align=left class=\"revstil\">";
                  echo " $row->rev_stil";
                  echo"</td></tr>";
                  }}
                  elseif(isset($_GET['c'])){
                  $letter = "show".$_GET['?show=c'];
                  $ergebnis = mysql_query("SELECT * FROM cdreviews WHERE rev_band LIKE 'c%' ORDER BY rev_band ASC");
                  while($row = mysql_fetch_object($ergebnis))
                  {
                  echo "<tr align=\"left\" valign=\"top\"><td>";
                  echo " • <a href=\"$m1path
                  reviews/reviews.php?rev_id=$row->rev_id\"> <b>$row->rev_band</b>&nbsp;\"$row->rev_album\"</a>";
                  echo "</td><td align=left class=\"revstil\">";
                  echo " $row->rev_stil";
                  echo"</td></tr>";
                  } }
                  ?>
                  Es funktioniert nur mit A, auch wenn ich B oder C anklicke, wird lediglich A ausgegeben. Ich komme einfach nicht drauf, wo der Fehler liegt.

                  Kommentar


                  • #10
                    ich meinte das eher so:
                    PHP-Code:
                    if(!isset($_GET['show'])||!preg_match('/^[a-z]$/',$_GET['show']))
                     {
                      
                    // Hier nach Bedarf eine eigene Fehlerbehandlung implementieren.
                      
                    echo 'Parameter "show" nicht übermittelt oder fehlerhaft!';
                     }
                    else
                     {
                      
                    // Der Parameter $_GET['show'] war ok - Datenbankabfrage ausführen  und Ergebnis anzeigen
                      // Ein einzelnes DB-query je nach Parameter und nicht für jeden Buchstaben!
                      
                    echo 'Alle Bands mit dem Anfangsbuchstaben "'.$_GET['show'].'":<br />';
                      
                    $ergebnis=mysql_query("SELECT * FROM cdreviews WHERE rev_band LIKE '$_GET[show]%' ORDER BY rev_band ASC");
                      
                    // while($row = mysql_fetch_object($ergebnis)) usw. ...
                     

                    also einmal überprüfen, ob ein einzelner buchstabe übermittelt wurde und dann die datenbank abfragen und die ergebnisse darstellen.

                    Kommentar


                    • #11
                      Das werde ich morgen mal versuchen. Ich habe da noch ein Problem. Vor dem A ist ansich eine Raute untergebracht, da manche Bands ja mit einer nummerischen Ziffer beginnen. Wie kann ich das am geschicktesten in deinen Code mit einbinden?

                      Kommentar


                      • #12
                        Okay, funzt, danke dir!

                        Dann hab ich eine andere Frage. An einer rechten Spalte sind die letzten 10 Reviews verlinkt. Damit ein langer Albumname nicht zu viel Platz einnimt, kürze ich den Albumtitel wie folgt ab:

                        PHP-Code:
                        echo substr($row->rev_album,0,20) . "..."
                        Wie kann ich das so machen, dass die drei Pünktchen nur dann angezeigt werden, wenn ein Albumtitel wirklich abgekürzt wird. Bei einem Albumtitel mit mehreren Wörtern sieht das gut aus, aber wenn ein Albumtitel aus einem Wort besteht, sieht ein "Albumtitel..." einfach unglücklich aus.
                        Zuletzt geändert von derandi; 21.08.2006, 01:03.

                        Kommentar


                        • #13
                          was hälst du denn davon, zuerst die stringlänge zu ermitteln und dann zu entscheiden, ob gekürzt werden soll?

                          Kommentar


                          • #14
                            PHP-Code:
                            if(strlen($string) > 500){
                                echo 
                            substr($row->rev_album,0,20) . "...";
                            }else{
                               echo 
                            $row->rev_album;

                            Wobei du einfach ins if noch einen für dich passenden Wert eintragen musst.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Danke jahlives, es klappt jetzt.

                              Nun habe ich noch eine Ergänzungsfrage zum oben von 3DMax vorgeschlagenen Quellcode. Dort gibt es neben a-z auch noch eine # zum Anklicken. Wenn ich folgendes:

                              PHP-Code:
                              if(!isset($_GET['show'])||!preg_match('/^[a-z]$/',$_GET['show'])) 
                              hiermit ersetze, wo ich dachte, es sollte funktionieren, wird nichts ausgelesen, ein Fehler erscheint aber nicht:

                              PHP-Code:
                              if(!isset($_GET['show'])||!preg_match('/^[0-9]|[a-z]$/',$_GET['show'])) 

                              Kommentar

                              Lädt...
                              X