• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sendeplan funktioniert nicht

Witschi262

Blogger
Jaja ich mal wieder,
nachdem ich mal wieder irgendwo ein Sendeplanscript runtergeladen habe wollte es einfach nicht funktionieren.

Ich trage bei
www.witschi262.bplaced.net/admin/kalendar.php
eine Sendung ein, aber die Datenbank juckt das erstmal nicht die Bohne.
Ausgabe ist übrigens hier:
www.witschi262.bplaced.net/kalendar.php

Naja das Script bei'm admin :
PHP:
<?php
$tag=$_GET['tag'];
$monat=$_GET['monat'];
$jahr=$_GET['jahr'];
$speichern=$_GET['speichern']; 

$tag_morgen=date('j', mktime(0, 0, 0, $monat  , $tag+1, $jahr));
$monat_morgen=date('n', mktime(0, 0, 0, $monat  , $tag+1, $jahr));
$jahr_morgen=date('Y', mktime(0, 0, 0, $monat  , $tag+1, $jahr));

$tag_gestern=date('j',mktime(0, 0, 0, $monat  , $tag-1, $jahr));
$monat_gestern=date('n', mktime(0, 0, 0, $monat  , $tag-1, $jahr));
$jahr_gestern=date('Y', mktime(0, 0, 0, $monat  , $tag-1, $jahr));


if($tag==""){
$tag=date('d');
$monat=date('n');
$jahr=date('Y');

$tag_morgen=date('j', mktime(0, 0, 0, date("m")  , date("d")+1, date("Y")));
$monat_morgen=date('n', mktime(0, 0, 0, date("m")  , date("d")+1, date("Y")));
$jahr_morgen=date('Y', mktime(0, 0, 0, date("m")  , date("d")+1, date("Y")));

$tag_gestern=date('j', mktime(0, 0, 0, date("m")  , date("d")-1, date("Y")));
$monat_gestern=date('n', mktime(0, 0, 0, date("m")  , date("d")-1, date("Y")));
$jahr_gestern=date('Y', mktime(0, 0, 0, date("m")  , date("d")-1, date("Y")));
}




$host= "localhost";
$db_user= "**********";
$db_password= "*********";
$db = "***********";

$connect = mysql_connect($host,$db_user,$db_password);
@mysql_select_db($db,$connect) or die("Kann Datenbank nicht öffnen!"); 
if($speichern!=""){
$query="DELETE FROM kalender WHERE tag='$tag' AND monat='$monat' AND jahr='$jahr'";
mysql_query($query,$connect);



for($i=0;$i<12;$i++){

$name=$$i;
if($name!=""){
$query="insert into kalender (id, tag, monat, jahr, start, name)    VALUES ('', '$tag', '$monat', '$jahr', '$i', '$name')";
mysql_query($query,$connect);
$gespeichert="jipp";
}
}
}

$query="SELECT * FROM kalender WHERE tag='$tag' AND monat='$monat' AND jahr='$jahr'";
$result = mysql_query($query,$connect);
while($ergebnis = mysql_fetch_array ($result)){
$start = $ergebnis['start'];
$_name[$start] = $ergebnis['name'];
}

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Sendeplan</title>
</head>

<body>
<?php if($gespeichert=="jipp"){echo("gespeichert");} ?>
<form>
<table border=1>
<tr>
    <td valign="bottom"><a href="kalender.php?tag=<?=$tag_gestern?>&monat=<?=$monat_gestern?>&jahr=<?=$jahr_gestern?>">Tag zurück</a></td>
    <td valign="bottom"><?=$tag?>. <?=$monat?>. <?=$jahr?><br>
    <a href="kalender.php?tag=<?=date('d')?>&monat=<?=date('n')?>&jahr=<?=date('Y')?>">heute</a></td>
    <td valign="bottom"><a href="kalender.php?tag=<?=$tag_morgen?>&monat=<?=$monat_morgen?>&jahr=<?=$jahr_morgen?>">Tag vor</a></td>
</tr>
<?php for($i=0;$i<12;$i++){ ?>
<tr>
    <td><?=$i*2?> - <?=($i+1)*2?></td>
    <td><input type="text" name="<?=$i?>" value="<?=$_name[$i]?>"></td>
</tr>
<?}?>
</table>
<input type="hidden" name="tag" value="<?=$tag?>">
<input type="hidden" name="monat" value="<?=$monat?>">
<input type="hidden" name="jahr" value="<?=$jahr?>">
<input type="submit" value="speichern" name="speichern">
</form>


</body>
</html>
Das andere wrid ja erstmal nicht benötigt, da es ja nichtmal in der DB abspeichert... :roll:
 
Hm, komischer Script.

Aber mach mal aus jedem Query folgendes, um den Fehler zu finden:
PHP:
mysql_query("bla") or die(mysql_error());
Und poste dann die Fehlermeldung.

Edit: Sorry, ich kenn das nicht, aber ist das Absicht?: $name=$$i;
 
Okay,
jetzt wird zumindest etwas ABGESPEICHERT.

Allerdings werden jetzt nurnoch eine Zahl statt text ausgegeben.

Edit:
Versuche die Variable $$i jetzt doch so zu lassen und mal mySQL fragen...

Edit II:
*lol* es wird garkein MySQL error ausgegeben...
 
Zuletzt bearbeitet:
Nimm erstmal statt $_GET lieber $_POST und schreibe statt <form>:
Code:
<form action="" method="post">
Und unterstützt dein Server shorttags? Mache statt <?= lieber <?php ... ?>

Außerdem musst du die Variablen ausgeben:
PHP:
    <td valign="bottom"><a href="kalender.php?tag=<?=$tag_gestern?>&monat=<?=$monat_gestern?>&jahr=<?=$jahr_gestern?>">Tag zurück</a></td>

Also so:
PHP:
    <td valign="bottom"><a href="kalender.php?tag=<?php echo $tag_gestern; ?>&monat=<?php echo $monat_gestern; ?>&jahr=<?php echo $jahr_gestern; ?>">Tag zurück</a></td>
 
Nach 10 Seiten google habe ich mich dazu entschieden, es selbst zu erstellen.

Ich habe wirklich keinen blassen Schimmer, wie. Wie soll ich das lösen, welche Woche es gerade ist, und wie soll ich das in die Datenbank abspeichern?
 
Nein, beim Zeit auslesen habe ich keine Probleme, aber, ich habe keine Ahnung wie ich da anfangen soll etc etc, ich kriege das einfach nicht hin.

Edit:
Normalerweise, habe ich das Script immer schon so n bisschen im Kopf, wie ich das machen muss, und so, hier habe ich einen Black Out keinen Blassen Schimmer
 
Lehn dich nochmal zurück, atme tief durch. Und dann denk mal nach:

Du brauchst einen Kalender in dem Sendungen eingetragen werden.
Fang einfach an. Eine einmalige Sendung findet am XX.YY.ZZZZ um HH:II statt.
Also bau eine MySQL-Tabelle auf in der Du diese Sendung erfasst:
Felder: eindeutige ID, Sendungsname, DateTime (Datum und Zeit zusammen in einem Feld im Format DD.MM.YYYY HH:II:SS)

Dann trägst Du dort erstmal manuell eine Sendung ein. Hast also einen Datensatz.

Dann sollte die Ausgabe davon folgen. Wenn Du das hast, schau nach was Du noch zu einer Sendung erfassen willst/musst. Ein Bild, ein Beschreibungstext etc.pp. Für den Kalender ist aber primär erstmal nur das Datum wichtig.

Soweit Anstoß genug?
 
Ja, danke.
Mein Hänger ist jetzt nur der, dass die anderen, veralteten Datensätze auch wieder gelöscht werden.
Das ganze soll ja voll Automatisiert laufen:
Woche erfassen, die Tage in der Datenbank nehmen und dann:
Okay, die und die Tage brauche ich und dann die Ausgabe. Jeder DJ soll sich Wöchentlich eintragen können. Und natürlich auch Sortiert werden nach Zeit. Das früheste ganz oben.
 
Zuletzt bearbeitet:
Du musst die alten Beiträge nicht automatisch löschen. Lass sie in der Datenbank stehen und zeig nur die Termine ab dem aktuellen Datum an. Mit MySQL wäre diese Beschränkung einfach per

Code:
... WHERE datum >= NOW() ...

machbar.

Sortierung geht mit ORDER BY datum ASC bzw DESC.

Termine einzelne Tage kannst Du per WHERE-Bedingung ermitteln und mittels DATE_FORMAT() auslesen. Beispiel:

Code:
SELECT DATE_FORMAT(datum,'%d') AS tag FROM termine WHERE datum BETWEEN '2010-12-29 00:00:00' AND '2010-12-29 23:59:59'
 
Das erste funktioniert schonmal super, danke,
Beim zweiten habe ich allerdings ein Problem.

Habe jetzt

PHP:
$abfrage = "SELECT * FROM sendeplan WHERE datetime >= NOW() and DATE_FORMAT(datetime,'%d') AS datetime FROM sendeplan WHERE datetime BETWEEN '2011-01-01 00:00:00' AND '2010-12-29 23:59:59'";

Daraus gemacht, geht aber leider nicht:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/virtual/kica-kids.de/htdocs/sendeplan.php on line 7

Zeile 7:
while($row = mysql_fetch_object($ergebnis))
 
So,
Nachdem ich mal ganz böse und gemein wie ich war, einfach mal das WHERE und das FROM rausgenommen habe, die dazugehörigen Namen auch Ging es nicht.

In meiner Motivation (:D) habe ich dann versucht zwei Abfragen draus zu machen, naja der einzigste Unterschied war jetzt, dass es in Zeile 8 nich hingehauen hat, und nicht in Zeile 7.

Dann habe ich versucht durch irgendwie mit Kommas und ands irgendwas zu machen, aber naja, hat auch nicht geklappt. Ich bin am Ende..
 
Formuliere mal genau was Du mit den Abfragen/der Abfrage bezwecken willst. Ziel sollte es immer sein möglichst wenig SQL-Statements abzuschicken, insbesondere wenn man dabei aus einer Tabelle jeweils die selben Daten ermitteln möchte.
 
Zurück
Oben