Announcement

Collapse
No announcement yet.

INSERT und UPDATE problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • INSERT und UPDATE problem

    Hallo,
    bin ein relativer PHP und MYSQL neuling und habe ein Problem.
    Ich muss bis Samstag mein Projekt für den Ausbildungskurs fertiggestellt haben.
    So nun zu meinem Problem:
    Wenn ich beim Formular was ich erstellt habe auf OK klicke sei es beim insert oder update kommt danach eine leere Seite und in die Datenbank wird auch nichts eingetragen. Habe schon google gequält aber auch der hat nichts passendes ausgespuckt, bin mir sicher das ein erfahrenen Programmierer über diesen Fehler lacht.
    Das große Problem ist ich habe mich im Skript verloren ich kann den Fehler nicht einkreisen.

    Der Anfang:
    // ---------------------------------------------------------------------------
    mysql_connect("localhost", "root", "") or exit_error("Couldn't connect.");
    mysql_select_db("hp") or exit_error("Couldn't select db.");

    require_once "utilities.php";

    $sql_kinder_termine =<<<EOSQL
    SELECT kinder_termine.ID,
    CONCAT(kinder.nachname, ' ', kinder.vorname) AS Kind,
    DATE_FORMAT(kinder_termine.datum, '%a, %e. %M %Y') AS Am,
    termine.start AS Von,
    termine.ende AS Bis
    FROM kinder INNER JOIN kinder_termine on kinder.Id = kinder_termine.kind
    INNER JOIN termine on kinder_termine.termin = termine.ID

    ORDER BY Kind

    EOSQL;
    //-----------------------------------------------------------------------------------------------------------------------------------------------
    $formFunctions = array(formKinder, formTermine, formKinderTermine);
    $tables = array(
    array('<img src="icons/kinder.png" alt="Kinderliste"', $sql_kinder_termine),
    array('Termine', 'SELECT ID, start AS Beginn, ende AS Ende FROM termine ORDER BY start'),
    array('Gruppen', 'SELECT ID, bezeichnung AS Guppen FROM gruppen ORDER BY bezeichnung'),
    array('Schulen', 'SELECT ID, bezeichnung AS Schulen FROM schulen ORDER BY bezeichnung')


    );

    $action = getParam('action', 'list');
    $table = getParam('table', 0);
    $ID = getParam('id', 0);



    if ($action == 'list') $content = listtable($table);
    else if ($action == 'form') $content = $formFunctions[$table]($ID);
    else if ($action == 'termine') $content = terminEditor($ID);
    else if ($action == 'terminsequenz') $content = terminSequenzErzeugen();
    else if ($action == 'formkinder') $content = formKinder($ID);
    else if ($action == 'new') $content = formKinder(0);
    else if ($action == 'insert') $content = insertKind();
    else if ($action == 'update') $content = updateKinder($ID);


    echo htmlHeader("HEIVOS", "style.css") . template(createMenu(), $content) . htmlFooter();

    mysql_close();
    Hier mein Formular:
    // ---------------------------------------------------------------------------
    function formKinder($ID){


    $nachname = "";
    $vorname = "";
    $anamnese = "";
    $gebdt = "";
    $schule = 0;
    $gruppe = 0;
    $caption = "Neues Kind anlegen";
    $action = "insert";

    if($ID){
    //Formular zum Editieren
    $sql =<<<EOSQL
    SELECT kinder.ID,
    kinder.nachname,
    kinder.vorname,
    kinder.anamnese,
    kinder.gebdt,
    schulen.bezeichnung,
    gruppen.bezeichnung


    FROM kinder
    LEFT JOIN schulen ON kinder.ID = schulen.bezeichnung
    LEFT JOIN gruppen ON kinder.ID = gruppen.bezeichnung

    WHERE kinder.ID = $ID

    EOSQL;



    $schuleSELECT = createSELECT('schule',
    'SELECT ID, bezeichnung FROM schulen ORDER BY bezeichnung',
    0);

    $gruppeSELECT = createSELECT('gruppe',
    'SELECT ID, bezeichnung FROM gruppen ORDER BY bezeichnung',
    0);

    $res = mysql_query($sql) or exit_error(mysql_error() . "<br />sql");
    $rs = mysql_fetch_row($res) or exit_error("Datensatz nicht mehr existent.");
    $nachname = $rs[1];
    $vorname = $rs[2];
    $anamnese = $rs[3];
    $gebdt = $rs[4];
    $schule = $rs[5];
    $gruppe = $rs[6];
    $caption = "Kind Daten editieren";
    $action = "update";
    }

    $html =<<<EOHTML
    <p>$caption:</p>
    <table cellspacing="0" cellpadding="0">
    <form method="GET" action="hp.php">



    <input type="hidden" name="action" value="$action" />
    <input type="hidden" name="list" value="0" />
    <input type="hidden" name="id" value="$KindID" />
    <tr>
    <td> Nachname: </td>
    <td><input type="text" name="nachname" value="$nachname" size="25" maxlength="50" /></td>
    </tr>
    <tr>
    <td> Vorname: </td>
    <td> <input type="text" name="vorname" value="$vorname" size="25" maxlength="50" /></td>
    </tr>
    <tr>
    <td> Geburtsdatum: </td>
    <td> <input type="text" name="gebdt" value="$gebdt" size="10" maxlength="10" /></td>
    </tr>
    <tr>
    <td> Anamnese: </td>
    <td> <textarea name="anamnese" cols="40" rows="10">$anamnese</textarea></td>
    </tr>
    <tr>
    <td> Schule: </td>
    <td>$schuleSELECT</td>
    </tr>
    <tr>
    <td> Gruppe: </td>
    <td>$gruppeSELECT</td>
    </tr>
    <tr>
    <td>
    <input type="submit" value="OK" />
    </td>
    </tr>

    </form>
    EOHTML;
    return $html;

    }
    Hier meine insert und update functionen:
    //----------------------------------------------------------------------------------------------------------

    function insertKind(){


    $nachname = getParam('nachname', '');
    $vorname = getParam('vorname', '');
    $anamnese = getParam('anamnese', '');
    $gebdt = getParam('gebdt', '');
    $gruppe = getParam('gruppe', 0 );
    $schule = getParam('schule', 0 );



    $sql =<<<EOSQL
    INSERT INTO kinder(nachname, vorname, anamnese, gebdt, gruppe_fk, schule_fk)
    VALUES($nachname, $vorname, $anamnese, $gebdt, $gruppe, $schule)
    EOSQL;


    }
    //---------------------------------------------------------------------------------------------------------
    function updateKinder($ID){

    $nachname = getParam('nachname', '');
    $vorname = getParam('vorname', '');
    $anamnese = getParam('anamnese', '');
    $gebdt = getParam('gebdt', '');
    $gruppe = getParam('gruppe', 0);
    $schule = getParam('schule', 0);

    $sql =<<<EOSQL

    UPDATE kinder
    SET nachname = '$nachname',
    vorname = '$vorname',
    anamnese = '$anamnese',
    gebdt = '$gebdt',
    gruppe_fk = '$gruppe',
    schule_fk = '$schule'

    WHERE ID = '$ID'

    EOSQL;

    mysql_query($sql) or exit_error(mysql_error() ."<br />$sql");


    }




    Hoffe Ihr könnt mir weiter helfen, das würde mir einige Last nehmen und ich hätte auch sehr viel gelernt, falls noch was fehlt einfach screiben bitte.

    Vielen Dank im Voraus

  • #2
    Hallo,
    Originally posted by kaus08 View Post
    Das große Problem ist ich habe mich im Skript verloren ich kann den Fehler nicht einkreisen.
    Das solltest du aber! I.A. helfen hier schon ein paar Debugausgaben mit Echo um zu sehen an welcher Stelle dein Script abbricht. Hier wird keiner für dich den Debugger spielen.

    Beim groben Durchsehen ist mir aufgefallen das in function insertKind() zwar der SQL-String zusammengebaut, aber das SQL nie ausgeführt wird. Ansonsten laß dir mit echo den Inhalt von signifikanten Variablen an den entscheidenden Programmstellen ausgeben, um zu sehen an welcher Stelle dein Code Probleme hat. Es ist für Debug-Zwecke auch sehr hilfreich mit error_reporting die Anzeige von PHP-Meldungen zu aktivieren.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      error

      Vielen Dank für deinen tipp.
      Die probleme befinden sich in den zeilen,

      Notice: Use of undefined constant formKinder - assumed 'formKinder' in C:\Program Files\xampp\htdocs\heivos\hp.php on line 23

      so ist der Code,
      $formFunctions = array(formKinder, formTermine, formKinderTermine);

      wobei das auch keinen Unterschied macht ob ich termine und kindertermine wegnehme.


      Notice: Undefined variable: schuleSELECT in C:\Program Files\xampp\htdocs\heivos\hp.php on line 229

      Notice: Undefined variable: gruppeSELECT in C:\Program Files\xampp\htdocs\heivos\hp.php on line 237

      Bei der Update function funktioniert es das diese zwei angezeigt werden.
      es handelt sich umf folgenden Code,

      $schuleSELECT = createSELECT('schule',
      'SELECT ID, bezeichnung FROM schulen ORDER BY bezeichnung',
      0);

      $gruppeSELECT = createSELECT('gruppe',
      'SELECT ID, bezeichnung FROM gruppen ORDER BY bezeichnung',
      0);

      und in utilities.php wurde das definiert und zwar wiefolgt,

      function createSELECT($name, $sql, $selectedID){

      //$name... Name des Select-Tags
      //$sql..... Beispiel: SELECT ID, bezeichung FROM kurse ORDER BY bezeichnung
      //$selectedID ... ID, jenes Datensatzes der vorausgewählt werden soll

      $res = mysql_query($sql) or exit_error(mysql_error() . "<br />$sql");
      $html .= "<select name=\"$name\" size=\"1\">\n";
      while($rs = mysql_fetch_row($res)){
      $html .="<option value=\"$rs[0]\"";
      $html .= ($rs[0] == $selectedID ? " selected=\"selected\"" : "");
      $html .= ">$rs[1]</option>\n";


      }
      $html .= "</select>\n";
      return $html;
      }
      Kann mir vielleicht jemand weiter helfen?
      Habe keine Antwort auf die Probleme.
      Würde mich über jede Antwort freuen.

      lg Daniel

      Comment


      • #4
        1 problem gelöst

        Notice: Use of undefined constant formKinder - assumed 'formKinder' in C:\Program Files\xampp\htdocs\heivos\hp.php on line 23

        Dieses Problem habe ich gelöst ist wirklixh arg das ich nicht drauf gekommen bin das ich die ' ' vergessen habe.
        Jetzt habe ich nur folgende Probleme, ich kann die Namen editieren aber nicht zB die gruppe und die Schule die bleiben gleich auch wenn ich es nicht will.

        Weiters habe ich mit der insert function ein großes Problem da zeigt er mir weder von der Datanank die Gruppen und Schulen an, noch bekomme ich eine Fehlermeldung wenn ich auf Ok drücke und gesüeichert wird es auch nicht.
        Er schreibt nur,
        Notice: Undefined variable: schuleSELECT in C:\Program Files\xampp\htdocs\heivos\hp.php on line 229

        Notice: Undefined variable: gruppeSELECT in C:\Program Files\xampp\htdocs\heivos\hp.php on line 237

        und ich weiß nicht was ich falsch mache.

        Bin für jeden Tip dankbar.

        Ligrü Daniel

        Comment


        • #5
          Hallo,

          du solltest versuchen den Code den du postest auch zu verstehen! Allein die Remarks in:
          PHP Code:
          function createSELECT($name$sql$selectedID){

          //$name... Name des Select-Tags
          //$sql..... Beispiel: SELECT ID, bezeichung FROM kurse ORDER BY bezeichnung
          //$selectedID ... ID, jenes Datensatzes der vorausgewählt werden soll 
          hätten dich darauf bringen können, das dein Code:
          PHP Code:
          $schuleSELECT createSELECT('schule',
          'SELECT ID, bezeichnung FROM schulen ORDER BY bezeichnung',
          0);

          $gruppeSELECT createSELECT('gruppe',
          'SELECT ID, bezeichnung FROM gruppen ORDER BY bezeichnung',
          0); 
          immer die Schule/Gruppe mit der ID 0 auswählt. Richtiger wäre es hier die Code-Reihenfolge zu ändern und die "richtigen" IDs zu übergeben:
          PHP Code:
          $res mysql_query($sql) or exit_error(mysql_error() . "<br />sql");
          $rs mysql_fetch_row($res) or exit_error("Datensatz nicht mehr existent.");
          $nachname $rs[1];
          $vorname $rs[2];
          $anamnese $rs[3];
          $gebdt $rs[4];
          $schule $rs[5];
          $gruppe $rs[6];
          $caption "Kind Daten editieren";
          $action "update";

          $schuleSELECT createSELECT('schule',
          'SELECT ID, bezeichnung FROM schulen ORDER BY bezeichnung',
          $schule);

          $gruppeSELECT createSELECT('gruppe',
          'SELECT ID, bezeichnung FROM gruppen ORDER BY bezeichnung',
          $gruppe);

          Gruß Falk

          P.S.: Es erhöht die Lesbarkeit ungemein wenn man Quellcode in formatierter Form postet und größere Teile als Datei anhängt!
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X