Problem mit if

DJCueForce

Mitglied
Hallo,

Ich habe mir ein script zusammengebastelt und dazu nun auch ein Admin-Script zum eintragen.
Genau genommen geht es um einen Sendeplan.
Doert lasse ich nun prüfen ob die eingetragene zeit hinter der aktuellen zeit liegt oder nicht - funktioniert auch also sodass man nur in der zukunft eintragen kann.
Zudem wollte ich noch prüfen ob sich die sendezeit mit einer anderen sendezeit schneidet... Das geht leider nicht so wie geplant.
Nachdem ich eine Zeit erfolgreich eingetragen habe, bekomme ich egal wann ich eintragen will nur die rückmeldung das die Sendezeit sich mit einer anderen scheneidet....
PHP:
$timestamp = time();
  $von1 = $_POST["von1"];
  $von2 = $_POST["von2"];
  $bis1 = $_POST["bis1"];
  $bis2 = $_POST["bis2"];
  $tag = $_POST["tag"];
  $monat = $_POST["monat"];
  $jahr = $_POST["jahr"];
  $mod = $_POST["mod"];
  $modpic = $_POST["modpic"];
  $show = $_POST["show"];
  $showpic = $_POST["showpic"];
  $beginn = mktime($von1,$von2,0,$monat,$tag,$jahr);
  $ende = mktime($bis1,$bis2,0,$monat,$tag,$jahr);
 
$a = 0;
if($beginn >= $timestamp)
    {
    if($beginn <= $ende)
      {
      $a = 1;
      }
    }
if($a == 1)
  {
  $abfrage = "SELECT * FROM sendeplan";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
    $beginn_time = $row->beginn;
    $ende_time = $row->ende;
      if($beginn > $beginn_time)
        {
        if($beginn_time < $ende_time)
          {
          $a = 2;
          }
        }
      if($ende > $beginn_time)
        {
        if($ende < $ende_time)
          {
          $a = 2;
          }
        }
      }
    }

Hat jemand evl. eine Lösung?
Danke schonmal für eure hilfe!!
 
Warum löst du das nicht über die SQL-Abfrage:

PHP:
$abfrage = "SELECT * FROM sendeplan WHERE sendeplan.beginn <= $beginn AND sendeplan.ende >= $ende";
$ergebnis = mysql_query($abfrage);
if (mysql_num_rows($ergebnis) != 0) {
  echo "Falsche Sendezeit!";
}


Wenn ich keinen Denkfehler in der Abfrage habe, müsste es so doch funktionieren!

Gruß Thomas
 
Hi

so wäre es glaub ich auch nicht verkehrt, und sollte auf jeden Fall funktionieren.
PHP:
$abfrage = "SELECT * FROM sendeplan WHERE beginn <= ".$beginn." && ende >= ".$ende;
$ergebnis = mysql_query($abfrage);
if (mysql_num_rows($ergebnis) == 0) { //Kein Ergebnis
  echo "Falsche Sendezeit!";
}
 
Leider hats nicht den effect den ich haben wollte...

Weil er gibt dann zwar aus das es sich schneidet führt aber trotzdem den insert aus ?!
Irgentwie komisch..
Oder habe ich es bloß an der falschen stelle eingefügt?

// Edit
Habe die tabelle geleert...
Nun ist es so dass er garnix mehr einträgt ... er gibt immer nurnoch aus das dort schon jemand sendet?!
Aber trägt auch nicht mehr ein...
 
Zuletzt bearbeitet:
Neue erkentniss..
Eintragen t nun an sich.
Wenn ich mich allerdings von 14 - 16 Uhr eintrage
und dann jemand anderes da versucht wird das nicht eingetragen.
Wenn aber jemand 15 - 16 oder bis 17 versucht dann geht das allerdings also dann wirds eingetragen

Gibts da eine lösung für?
 
Hm.. ich definere es mal so:
der Beginn der neuen Sendung muss kleiner sein als das Ende einer bestehenden Sendung und zugrlich muss das Ende der neuen Sendung grösser sein als der Beginn einer bestehenden Senung -> dann gibt eine Doppelbelegung.

PHP:
$sql =  "SELECT 
            id 
        FROM 
            sendeplan 
        WHERE 
            {$begin} < ende AND {$ende} > begin";
$result = mysql_query($sql);

if (mysql_num_rows($result) > 0) {
    $sql = "INSERT INTO sendeplan ..........";
    mysql_query($sql);
    echo "Sendung mit der ID ". mysql_insert_id() ."hinzugefügt";
} else {
  echo "Sendezeit schon belegt";
}   
mysql_free_result($result);
 
Zuletzt bearbeitet:
Zurück