Mathiis: MySQL und PHP, Problem beim auslesen

Hallo,

ich bin gerade dabei einen Wochenplan zu entwickeln, in dem man Termine eintragen kann.
Das klappt auch soweit. Nun möchte ich allerdings auch noch "Lückenfüllertermine" eintragen, die immer da sind, es sei denn es wird ein anderer Termin eingetragen.
Das klappt auch soweit. Ich trage einen neuen Termin ein und der Lückenfüller wird gelöscht.
Wenn ich jetzt allerdings den Termin klösche, sollen die Lückenfüller wieder erscheinen.
Und zwar sind die Lückenfüller immer 1std lang. wenn ich also einen termin eintrage von 10-12 Uhr, werden 2 Lückenfüller durch einen Termin ersetzt. wird der termin gelöscht sollen 2 Lückenfüller erscheinen. Mein Code sieht so aus: Gelöscht wird der Termin, nur die Lückenfüller werden nicht eingetragen...

function del_termin_block($termin_id) {
global $site_config, $session;

$query = "SELECT *
FROM cisco_weekplan_termin
WHERE termin_id = '".$termin_id."'";
$check = sql_query($query);

$sql = "DELETE FROM cisco_weekplan_user WHERE termin_id = '".$termin_id."'";
sql_query($sql);

$sql = "DELETE FROM cisco_weekplan_termin WHERE termin_id = '".$termin_id."'";
sql_query($sql);

$starthour=$check["termin_anf_std"];
$endhour=$check["termin_anf_std"]+'01';

for ($hour=$starthour; $hour<$check["termin_end_std"]; $hour++) {

$insert = array('termin_fach' => $check["termin_fach"],
'termin_class' => $check["termin_class"],
'termin_raum' => $check["termin_raum"],
'termin_anf_std' => $starthour,
'termin_anf_min' => '00',
'termin_end_std' => $endhour,
'termin_end_min' => '00',
'termin_tag' => $check["termin_tag"],
'termin_kind' => 3,
'termin_ver' => 3);
$sql = make_sql_insert('cisco_weekplan_termin',$insert);
sql_query($sql);
$starthour=$endhour;
$endhour=$endhour+'01';

}

return true;

}

Ich hoffe Ihr könnt helfen.

Gruß

Mathiis

  1. Hallo

    Gelöscht wird der Termin, nur die Lückenfüller werden nicht eingetragen...

    Warum überhaupt etwas eintragen, was immer da ist außer, wenn *einfache Bedingung*?

    Nur so eine Idee, für mich klingt das nach etwas, das man am besten generiert und nicht lädt.

    1. Hallo

      Gelöscht wird der Termin, nur die Lückenfüller werden nicht eingetragen...

      Warum überhaupt etwas eintragen, was immer da ist außer, wenn *einfache Bedingung*?

      Nur so eine Idee, für mich klingt das nach etwas, das man am besten generiert und nicht lädt.

      Es geht um eine Raumreservierung. Wenn normale Termine eingetragen sind, ist der Raum geblockt. Es soll jedoch Möglich sein, sich auch in den "Lückenfüllern" einzutragen. Die Funktion dafür funktioniert bereits.
      Ich habe halt nur das Problem, dass er diese Lückenfüller, also diesen Bereich:

      $starthour=$check["termin_anf_std"];
      $endhour=$check["termin_anf_std"]+'01';

      for ($hour=$starthour; $hour<$check["termin_end_std"]; $hour++) {

      $insert = array('termin_fach' => $check["termin_fach"],
      'termin_class' => $check["termin_class"],
      'termin_raum' => $check["termin_raum"],
      'termin_anf_std' => $starthour,
      'termin_anf_min' => '00',
      'termin_end_std' => $endhour,
      'termin_end_min' => '00',
      'termin_tag' => $check["termin_tag"],
      'termin_kind' => 3,
      'termin_ver' => 3);
      $sql = make_sql_insert('cisco_weekplan_termin',$insert);
      sql_query($sql);
      $starthour=$endhour;
      $endhour=$endhour+'01';

      }

      nicht einträgt.

      1. Hi!

        Ich versteh zwar auch nicht warum du die lückenfüller eintragen willst aber bitte poste mal die Funktion make_sql_insert() ... weil unter Umständen ist da drinn der Fehler und es ist besser nachzuvollziehen.

        1. Hi!

          Ich versteh zwar auch nicht warum du die lückenfüller eintragen willst aber bitte poste mal die Funktion make_sql_insert() ... weil unter Umständen ist da drinn der Fehler und es ist besser nachzuvollziehen.

          Hi, darin kann der Fehler nicht sein, da ich die Funktion schon öfter erfolgreich benutze. Ich denke eher, dass in Check gar nichts drin steht.
          Nur wieso frag ich mich.

          Aber hier nochmal für dich:

          function make_sql_insert($table,$value) {
            $sql = "INSERT INTO $table SET ";

          foreach($value as $row_name=>$row_value){
             $sql.= "$row_name='".prepare_string_for_sql($row_value)."',";
            }
            $sql = substr($sql,0,-1);
            return $sql;
           }

          1. Ich denke eher, dass in Check gar nichts drin steht.
            Nur wieso frag ich mich.

            Ich frage mich auch, warum Du das denkst statt es zu wissen.

            1. Ich denke eher, dass in Check gar nichts drin steht.
              Nur wieso frag ich mich.

              Ich frage mich auch, warum Du das denkst statt es zu wissen.

              Ich hab des Rätsels Lösung gefunden, so muss es aussehen:

              function del_termin_block($termin_id) {
                global $site_config, $session;

              $query = "SELECT *
                    FROM cisco_weekplan_termin
                    WHERE termin_id = '".$termin_id."'";
                $dummy = sql_query($query);
                $check = db_result($dummy);
                $sql = "DELETE FROM cisco_weekplan_user WHERE termin_id = '".$termin_id."'";
                sql_query($sql);

              $sql = "DELETE FROM cisco_weekplan_termin WHERE termin_id = '".$termin_id."'";
                sql_query($sql);

              $starthour=$check[0][termin_anf_std];
                $endhour=$check[0][termin_anf_std]+'01';

              for ($hour=$starthour; $hour<$check[0][termin_end_std]; $hour++) {

              $insert = array('termin_fach'   => $check[0][termin_fach],
                      'termin_class'   => $check[0][termin_class],
                      'termin_raum'   => $check[0][termin_raum],
                      'termin_anf_std'  => $starthour,
                      'termin_anf_min'  => '00',
                      'termin_end_std'     => $endhour,
                      'termin_end_min'  => '00',
                      'termin_tag'   => $check[0][termin_tag],
                      'termin_kind'   => 3,
                      'termin_ver'   => 3);
                  $sql = make_sql_insert('cisco_weekplan_termin',$insert);
                  sql_query($sql);

              $starthour=$endhour;
                  $endhour=$endhour+'01';

              }

              return true;

              }

          2. ...
            'termin_ver' => 3);
            $sql = make_sql_insert('cisco_weekplan_termin',$insert);

            --> mach hier mal ein echo $sql; und schau was da raus kommt, weil es stimmt sicher was mit der sql-syntax nicht.

            1. ...
              'termin_ver' => 3);
              $sql = make_sql_insert('cisco_weekplan_termin',$insert);

              --> mach hier mal ein echo $sql; und schau was da raus kommt, weil es stimmt sicher was mit der sql-syntax nicht.

              Hmm, da kommt das: 
              bei rum?!?!?

              Also ich bin auch nicht der große PHP Profi. :-(

              1. echo $begrüßung;

                Hmm, da kommt das: 
                bei rum?!?!?

                Das ist eine UTF-8-BOM.

                Also ich bin auch nicht der große PHP Profi. :-(

                Die hat auch mit PHP nichts weiter am Hut, außer dass sie in den meisten Fällen auch dort stört.

                echo "$verabschiedung $name";

          3. Hi!

            ... darin kann der Fehler nicht sein, da ich die Funktion schon öfter erfolgreich benutze.

            Software ist nicht deshalb 100%-ig fehlerfrei, weil sie in der Vergangenheit (zufällig) die angedachten Aufgaben erfüllt hat.

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)