Problem mit Sendeplanvorschau

ciberjoerg

Erfahrenes Mitglied
Ich hab auf meinem webradio eine Sendeplanvorschau, doch ich hab damit ein kleines Problem.
Ich möchte gerne nur die Sendungen anzeigen lassen die Noch nicht vorbei sind. Würde gerne die lieder so aus der db auslesen das die bereits beendeten sendungen nicht mehr angezeigt werden.

mein script ( ausschnitt ):

PHP:
$sday = date("d");
$tag = date("d")+$_GET['day'];
$monat = date("m");
$jahr = date("Y");
$time = date("H:m");
$datum = $monat."/".$tag."/".$jahr;
$stund = date("H");
$min = date("i");
$sec = date("s");
$today = date("d.m.Y");
$thistime = mktime($stunde, $min, $sec, $monat, $sday, $jahr);

mysql_select_db("phost138395") or die ("Die Datenbank existiert nicht");
$Verbindung = mysql_connect ($conf_pass->db_host, $conf_pass->db_user,$conf_pass->db_pass)
            or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
            
        $Anfrage = "SELECT * FROM sp_send WHERE stop_time >= $thistime ORDER BY start_time LIMIT 4";  
        
        $res=mysql_db_query ( $conf_pass->db_name, $Anfrage , $Verbindung)or die ("Fehler in der Ausführung");
        
            while ( $row1 = mysql_fetch_array ( $res ) )
        {
            $startday = date("d.m.Y", $row1['tag']);
            $start = date("H:i", $row1['start_time']);
            $stop = date("H:i", $row1['stop_time']);
            $djid= $row1['dj_id'];
            $djname = $row1['dj_name'];
  
        
        
        $show_id = $row1['show_id'];
        $Verbindung = mysql_connect ($conf_pass->db_host, $conf_pass->db_user,$conf_pass->db_pass)or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
        
        $Anfrage2 = "SELECT * FROM sp_show WHERE id = '$show_id'";
        
        $res2=mysql_db_query ( $conf_pass->db_name, $Anfrage2 , $Verbindung)or die ("Fehler in der Ausführung");
        
            while ( $row = mysql_fetch_array ( $res2 ) )
        {
            $bild = $row['bild'];
            $showname = $row['show_name'];
            $style = $row['style'];
                        
        }
 
Joa, schön gelöst. Wobei ich in SQL "JOINS" genommen hätte um die Lieder mit den Sendungen zu verbinden.

...
 
Zuletzt bearbeitet:
Ich würde gern wissen, wo du schließende geschweifte Klammer } deiner ersten WHILE-Schleife ist. Wenn ich richtig vermute, dann endet kann man sie nach der zweiten WHILE-Schleife finden oder? In dem Fall könntest du dir die zweite Anfrage ersparen und sie mit einem JOIN in die erste packen. Außerdem brauchst du nicht für jede Anfrage eine neue Verbindung zur Datenbank aufbauen, dass belastet nur. Ebenso solltest du statt mysql_db_query() nur mysql_query() nutzen, da du bei dieser Funktion nicht jedes Mal wieder den Namen der Datenbank angeben musst, welchen du schon schon angibst, wenn du dich zu deiner Datenbank verbindest.

EDIT: Zu langsam
 
die klammer ist relativ weit untem im script, da werden die daten dann in tabellen eingepackt zum anzeigen. die ist ganz am ende ses scriptes.
Das hört sich gut an nur ich hab mir sql innerhalb einer woche selbst beigebracht, daher hab ich noch nicht all zu viele erfahrungen. Hättest du mir da vllt so en beispiel mit der join funktion?
Dann könnte ich so einige Daten umschreiben um die Serverlast zu senken.
 
Zuletzt bearbeitet:
Beispielsweise so (dann brauchst du auch nicht mehr aufwendig die Zeit zu erstellen):
Code:
SELECT * FROM `sp_send` a, `sp_show` b
INNER JOIN `sp_show`
ON a.`show_id` = b.`id`
WHERE `stop_time` >= NOW()
ORDER BY `start_time` LIMIT 4

PS: Wie sieht eigentlich deine Tabellenstruktur aus?
 
Ich hab das ganze jetzt mal angepasst doch irgendwas geht da nicht so wie es soll.

PHP:
$sday = date("d");
$tag = date("d")+$_GET['day'];
$monat = date("m");
$jahr = date("Y");
$time = date("H:m");
$datum = $monat."/".$tag."/".$jahr;
$stund = date("H");
$min = date("i");
$sec = date("s");
$today = date("d.m.Y");
$thistime = mktime($stunde, $min, $sec, $monat, $sday, $jahr);
echo "<img src='images/nextshow.png' width='250' height='40' /><br><br>";
$link = mysql_connect("localhost","********","**********") or die ("Keine Verbindung moeglich");
mysql_select_db("phost138395") or die ("Die Datenbank existiert nicht");
$Verbindung = mysql_connect ($conf_pass->db_host, $conf_pass->db_user,$conf_pass->db_pass)
            or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
            
        $Anfrage = "SELECT * FROM sp_send a, sp_show b
INNER JOIN sp_show
ON a. show_id = b.id
WHERE stop_time >= $thistime
ORDER BY 'start_time' LIMIT 4";  
        
        $res=mysql_db_query ( $conf_pass->db_name, $Anfrage , $Verbindung)or die ("Fehler in der Ausführung");
        
            while ( $row1 = mysql_fetch_array ( $res ) )
        {
            $startday = date("d.m.Y", $row1['tag']);
            $start = date("H:i", $row1['start_time']);
            $stop = date("H:i", $row1['stop_time']);
            $djid= $row1['dj_id'];
            $djname = $row1['dj_name'];
              $bild = $row['bild'];
            $showname = $row['show_name'];
            $style = $row['style'];
        
         ?>
        
        <table width="350" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><? if($bild == ""){
        echo"<img src='images/nopic.png' width='80'/>";
    }
    else {
    echo"<img src='".$bild."' width='80'/>";
    } ?></td>
    <td valign="top"><table width="270" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><span class='weisfont'><? if($startday == $today) {
        echo "<img src='images/heute.png'>";
    }
    else {
        echo "Am ".$startday." ab ";
    }
    echo $start; echo" bis "; echo $stop; ?> Uhr</span></td>
  </tr>
  <tr>
    <td><a href="public_profil.php?user_id=<?=$djid?>"><?=$djname?></a><span class='weisfont'> mit <?=$showname?></span></td>
  </tr>
  <tr>
    <td><span class='weisfont'>Musikrichtung: <?=$style?></span></td>
  </tr>
</table>
</td>
</tr>
<tr height="5">
<td>
</td>
  </tr>
</table>
<?
        }
        
    ?>

fehler in der Ausführung wird mir angezeigt.
 
Es ist zwar schön, dass du dich von meinem SQL-Query überzeugen ließt, aber dennoch könntest du
  1. dennoch uns mal deine Tabellenstrukturen schicken, denn sonst tappen wir im Dunkeln,
  2. auch mal auf meine obengenannten Hinweise achten
  3. anstatt von "Fehler in der Verarbeitung" dir mal die MySQL-Fehlermeldung ausgeben lassen und
  4. den Query mal in phpMyAdmin ausprobieren, denn dann bekommst du auch raus, warum die Anfrage nicht funktioniert.
Ich vermute mal, dass der Fehler darin liegt dass du
Code:
ON a. show_id = b.id
anstatt von
Code:
ON a.show_id = b.id
stehen hast.
 
Zurück