brauche hilfe bei php-sql code

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

  • brauche hilfe bei php-sql code

    Hi,

    ich benötige Hilfe bei der Modifkation einer php Datei vom SAM Broadcaster.

    Die playlist.php liest alle songs aus der sql Tabelle aus und listet sie nach Buchstaben geordnet auf.

    Ich benötige nun eine Veränderung, so das nur ein Genre aufgelistet wird, welches in der php Datei fest spezifiziert wird.
    D.h. es sollen alle anderen SQL Einträge ignoriert werden.

    HIER die PLAYLIST.PHP:
    <?
    require("config.php");

    $where = " WHERE (songtype='S') AND (status=0) ";

    Def($start,0);
    Def($limit,50);
    Def($search,"");

    //########## BUILD SEARCH STRING ################

    if(!empty($search))
    {
    $words = Array();
    $temp = explode(' ',$search);
    reset($temp);
    while(list($key,$val) = each($temp))
    {
    $val = trim($val);
    if(!empty($val))
    $words[] = $val;
    }


    $where2 = "";
    reset($words);
    while(list($key,$val) = each($words))
    {
    if(!empty($where2)) $where2 .= " OR ";
    $where2 .= " (title like '%$val%') OR (artist like '%$val%') OR (album like '%$val%') ";
    }
    $where .= "AND ($where2) ";
    }

    if((isset($letter)) && (!$letter==""))
    {
    $nextletter = chr(ord($letter)+1);
    if($letter=='0')
    $where .= " AND NOT((artist>='A') AND (artist<'ZZZZZZZZZZZ')) ";
    else
    $where .= " AND ((artist>='$letter') AND (artist<'$nextletter')) ";
    }
    else
    {
    $letter="";
    }

    //########## =================== ################

    //Calculate total
    $db->open("SELECT count(*) as cnt FROM songlist $where ");
    $row = $db->row();
    $cnt = $row["cnt"];

    //Now grab a section of that
    $db->open("SELECT * FROM songlist $where ORDER BY artist ASC, title ASC", $limit, $start);

    $first = $start+1;
    $last = min($cnt,$start+$limit);
    $rc = $start;

    $prevlnk = "";
    $nextlnk = "";
    if($cnt>0)
    {

    if(!isset($search))
    { $search=""; }
    $searchstr = urlencode($search);
    $prev = max(0,$start-$limit);
    if($start>0)
    $prevlnk = "<a href='?start=$prev&limit=$limit&letter=$letter&search=$searchstr'>&lt;&lt; Previous</a>";

    $tmp = ($start+$limit);
    if($tmp<$cnt)
    $nextlnk = "<a href='?start=$tmp&limit=$limit&letter=$letter&search=$searchstr'>Next &gt;&gt;</a>";
    }

    function PutSongRow($song)
    {
    global $rc, $start, $darkrow, $lightrow;

    $rc++;
    $bgcolor = $darkrow;
    if(($rc % 2)==0) $bgcolor = $lightrow;


    PrepareSong($song);
    ?>
    <tr bgcolor="<? echo $bgcolor; ?>">
    <td nowrap align="right" width="1%"><font size="2" color="#003366"><small><? echo "$rc"; ?></small></font></td>
    <td nowrap><font size="2" color="#003366">&nbsp;<small><? echo $song["combine"]; ?></small></font></td>

    <td nowrap width="1%">
    <p align="center"><font size="2" color="#003366"><a href="<? echo $song["request"]; ?>"><img
    src="images/request.gif" alt="Request this song now!" border="0"></a></font>
    </td>

    <td nowrap width="1%">
    <p align="center"><font size="2" color="#003366"><a href="<? echo $song["buycd"]; ?>" target="_blank"><img
    src="images/buy.gif" alt="Buy this CD now!" border="0"></a></font>
    </td>
    <td nowrap width="1%">
    <p align="center"><font size="2" color="#003366"><a href="<? echo $song["website"]; ?>" target="_blank"><img
    src="images/home.gif" alt="Artist homepage" border="0"></a></font>
    </td>

    <td nowrap align="center" width="1%">
    <font size="2" color="#003366"><a href="javascript:songinfo(<? echo $song["songid"]; ?>)"><img
    src="images/info.gif" alt="Song information" border="0"></a></font>
    </td>

    <td nowrap><font color="#003366" size="2"><small><? echo $song["album"]; ?></small></font></td>
    <td nowrap>
    <p align="right"><font color="#003366" size="2"><small><strong><? echo $song["mmss"]; ?></strong></small></font>
    </td>
    </tr>
    <?
    }//PutSongRow

    /* ## ===================================================================== ## */
    ?>

    <? require("header.php"); ?>

    <? require("search.php"); ?>
    <br>

    <table border="0" width="98%" cellspacing="0" cellpadding="4">
    <tr bgcolor="#002E5B">
    <td colspan="8" nowrap align="left">
    <b><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFFFFF">Playlist results</font></b>
    </td>
    </tr>
    <?
    while($song = $db->row())
    PutSongRow($song);
    ?>

    <tr bgcolor="#E0E0E0">
    <td colspan="8" nowrap align="center">
    <? echo "$prevlnk"; ?>
    &nbsp; ( Showing <? echo "$first to $last of $cnt"; ?> ) &nbsp;
    <? echo "$nextlnk"; ?></td>
    </tr>

    </table>

    <br>
    <? require("search.php"); ?>
    <? require("footer.php"); ?>
    Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

    Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

  • #2
    In der SQL befindet sich in der tabelle songlist auch der entsprechende eintrag genre


    Ich vemute nun das in dieser Zeile eine passende Änderung erfolgen muss:

    $db->open("SELECT * FROM songlist $where ORDER BY artist ASC, title ASC", $limit, $start);


    Aber wie?


    Bitte helft mir! DANKE
    Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

    Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

    Kommentar


    • #3
      Moin..

      1) Solltest du die PHP tags benutzen damit jemand das gewühl lesen kann.
      2) Wäre denke ich die Tabellenstruktur nötig um dir helfen zu können.
      + Ein paar (nicht alle) Beispieldatensätze.
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Kommentar


      • #4
        Soo siehts aus....
        PHP-Code:
        $where " AND ((artist>='$letter') AND (artist<'$nextletter')) ";
         
        $db->open("SELECT * FROM songlist $where ORDER BY artist ASC, title ASC"$limit$start); 
        erweitern des SQL statments um :
        PHP-Code:
        $db->open("SELECT * FROM songlist $where AND genere = $genere ORDER BY artist ASC, title ASC"$limit$start); 
        dann dürfte es zumidest von sql seite aus funzen!

        gruß
        maik

        http://www.maikos.de

        Ach ja und mein vorgänger meint, dass du die tags vor und hinter deinen code auszug stellen sollst!

        bei dem html geschnipsel kann ich dir dann auch helfen, wenn du magst!
        Zuletzt geändert von maikos; 08.08.2005, 11:37.

        Kommentar


        • #5
          Original geschrieben von maikos
          Ach ja und mein vorgänger meint, dass du die tags vor und hinter deinen code auszug stellen sollst!
          du könntest das auch machen, das hebt nämlich auch hervor (und macht auch SQL-Statments farbig...)

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            lol

            Ja, hast ja recht,

            ist nun erledigt!

            aber der problem member hat sich noch nicht gemeldet!

            =)

            gruß
            maik

            Kommentar


            • #7
              Danke für Euere schnelle Hilfe!!!!

              Werde es gleich testen und das Ergebnis posten.

              Ja, das erste posting hab ich ohne Vorschau abgesand.
              Deswegen der Auszug im 2..

              THX, Tolan
              Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

              Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

              Kommentar


              • #8
                mach das und wenn du weiter probleme hast,
                dann melde dich!

                :-)

                Kommentar


                • #9
                  Leider funzt es nicht.

                  Da ich nun auch was dazulernen möchte, wäre es nett wenn wir mal gemeinsam diese SQL abfrage:

                  PHP-Code:
                  $db->open("SELECT * FROM songlist $where ORDER BY artist ASC, title ASC LIMIT $start,$limit"); 
                  auseinanderzuppeln.

                  Wenn ich das richtig deute nimmt der String aus der Datenbank die Tabelle "songlist" alle Einträge übergibt sie "$where" und sortiert sie nach Buchstaben. Richtig?

                  Nun das Genre jedes Songs befindet sich in der Tabelle "songlist" im Feld "genre".
                  Jetzt ist mir halt unklar, wie ich nur ein Genre auslesen kann.
                  Ich will halt für jedes Genre eine eigene playlist-xx.php Datei erstellen.
                  D.h. ich übergebe z.B. der Variable "$genre" den Text "EBM Electro" (so?: $genre = "EBM Electro").

                  Dann sollte eine Funktion die SQL Abfrage einschränken mithilfe dieser Variable.

                  Bin ich wenigstens einigermassen in der richtigen Richtung?

                  So nun mal die Screenshots von der songlist Tabelle:


                  Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

                  Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

                  Kommentar


                  • #10
                    ICh guck mal ...
                    aber erst gegen abend, da ich grad beim kunden bin, ok!?
                    ach ja ...
                    ganz verkehrt bist du nicht, allerdings steht in der where variablen die where bedingung für die abfrage drin ...
                    ich pflück dir das mal auseinander, so schwer ist das nicht, ok?!


                    gruß
                    maik

                    Nachtrag:
                    schick mir doch mal alle erforderlichen daten per zip ... am besten innerhalb der nächsten halben stunde, da ich daheim derzeit nur modem habe (wenn überhaupt) :-)

                    Zuletzt geändert von maikos; 08.08.2005, 14:45.

                    Kommentar


                    • #11
                      ICH HAB's !!!!

                      Ich muß der §where Variable unter
                      PHP-Code:
                      require("config.php"); 
                       
                       
                      $where " WHERE (songtype='S') AND (status=0) AND (genre='EBM Electro') "
                      die Genre Einschränkung übergeben.

                      Danke für deine Anregungen und Hilfe maikos.
                      Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

                      Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

                      Kommentar


                      • #12
                        suppi

                        Genau das meinte ich!!!

                        lol

                        greetz
                        maik

                        Kommentar


                        • #13
                          Ja ein kleiner Schlag auf den Hinterkopf fördert das Denkvermögen....


                          Bin zwar noch am Basteln des Designs aber hier das Ergebnis:

                          Playlist
                          Linux is like a Wigwam: no Gates, no Windows and an Apache is inside...

                          Hier ist der automatische Anrufbeantworter der Tinnitus-Klinik Bosenberg. Bitte sprechen Sie NACH dem Piepton... ;-)

                          Kommentar

                          Lädt...
                          X