Hilfe ich komme bei meinem Projekt nicht weiter

  • Also ich habe ein Projekt vor und zwar eine Website zu erstellen um einen neuen Mitbewohner in einer WG zu finden sprich eine websites mit Info's, 2 Datenbanken ( eine für das Gästebuch und eine für einen putzplan)
    So hier mein Problem ich habe da ein Script geschrieben und habe es soweit hinbekommen das der Alles ausführt nur der Speichert nichts in die datenbank ein.
    Also er geht bis dahin wo er das speichern soll und führt die methode nicht aus:
    Hier mein Script hoffe einer kann mir helfen.

    <html>
    <head><title>Putzplan</title></head>
    <body>
    <?php

    //Bildungsverlag EINS, Online-Projekte mit PHP und MySQL

    /**
    *baut eine Verbindung zur Datenbank auf und gibt die
    *Verbindungskennung an die aufrufende Funktion zurück
    *@return resource Verbindungskennung
    */
    function datenbank_verbinden(){
    $db_server='Default';
    $db_user='Default';
    $db_passwort='Default';
    $db_name='Default';
    $db_verbindung=mysql_connect($db_server,$db_user,$db_passwort);

    if(!$db_verbindung) {
    die("Der Server kann nicht erreicht werden.");
    }

    if(!mysql_select_db($db_name,$db_verbindung)) {
    echo "DB tot";
    die("Die Datenbank kann nicht angesprochen werden.");
    }
    return $db_verbindung;
    }

    /**
    *holt alle Rubriken aus der Datenbank
    *@param array $p_rubriknummer Referenz
    *@param array $p_rubrikbezeichnung Referenz
    *@param resource $p_verbindungskennung Datenbankverbindung
    */
    function gib_auftrag(&$auftrag_id,&$art,
    $p_verbindungskennung)
    {
    $query="SELECT auftrag_id,art
    FROM auftrag ORDER BY art";
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    $i=0;
    $auftrag_id=array();
    $art=array();
    $bewohner_id=array();
    $bewohner=array();
    $wochentag_id=array();
    while($zeile=mysql_fetch_array($ergebnis))
    {
    $auftrag_id[$i]=$zeile['auftrag_id'];
    $art[$i]=$zeile['art'];
    $i++;
    }
    {
    $bewohner_id[$i]=$zeile['bewohner_id'];
    $bewohner[$i]=$zeile['bewohner'];
    $i++;
    }
    {
    $wochentag_id[$i]=$zeile['wochentag_id'];
    $tag[$i]=$zeile['tag'];
    $i++;
    }
    }


    /**
    *baut ein Formular auf
    *@param array $p_rubriknummer umfasst alle Rubriknummern
    *@param array $p_rubrikbezeichnung umfasst alle Rubrikbez.
    */
    function formular_aufbauen($auftrag_id,$art)
    {
    ?>
    <form action="plan_aufgeben.php" method="post">
    <b>Name:</b> <input type="text" name="nickname"><b>(Tanja,Robin,Darius)<br>
    <b>Tag:</b>
    <input type="text" name="anzeigentext" size=40 maxlength=255><b>(Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag)<br><br>
    <b>Waehle deinen Auftrag aus:</b><br>
    <?php
    for($i=0;$i<count($auftrag_id);$i++)
    {
    ?><input type="checkbox" name="auftrag[]"
    value="<?php echo $auftrag_id[$i]?>"><?php
    echo $art[$i]."<br>";
    }
    ?>
    <br><input type="submit" name="ausfuehren" value="Registrieren">
    </form><br><br>
    <?php
    }

    /**
    *überprüft, ob der Nickname schon in Tabelle inserent
    *vorhanden ist und gleichzeitig die vom Benutzer eingegebene
    *Email nicht passend ist
    *@param resource $p_verbindungskennung Datenbankverbindung
    *@return bool ist false, falls Nickname schon vorhanden
    */
    function check_nickname($p_verbindungskennung)
    {
    $query=sprintf("SELECT bewohner FROM bewohner
    WHERE bewohner='%s'",
    $_GET['bewohner']);
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    if(mysql_num_rows($ergebnis)!=0)
    {
    echo"<b>Fehler! Du bist doof!.</b><br><br>";
    return false;
    }
    return true;
    }

    /**
    *überprüft, ob alle Formularfelder ausgefüllt wurden
    *und ob zwischen ein und drei Rubriken vom Benutzer
    *ausgewählt wurden
    *@return bool ist false, falls fehlende oder falsche Eingabe
    */
    function check_eintraege()
    {
    echo "bewohner: ".$_POST['bewohner']. "<br>";
    if(empty($_POST['bewohner']))
    {
    echo"<b>Fehler! Sie haben keinen Namen angegeben.</b><br><br>";
    return false;
    }
    if(!isset($_GET['art']))
    {
    echo"<b>Fehler! Sie haben keinen Auftrag gewaehlt.</b><br><br>";
    return false;
    }
    if(count($_GET['art'])>3)
    {
    echo"<b>Fehler! Sie koennen nur maximal drei Auftraege
    waehlen.</b><br><br>";
    return false;
    }
    return true;
    }

    /**
    *ermittelt, ob die Kombination Nickname und Email
    *schon in der Tabelle inserent vorhanden ist; falls ja:
    *Anzeige wird in die Datenbank geschrieben und diesem
    *Inserenten zugeordnet; falls nein: Anzeige wird in die
    *Datenbank geschrieben, ein neuer Inserent wird angelegt und
    *diesem wird die Anzeige zugeordnet
    *@param resource $p_verbindungskennung
    */

    function schreib_inserat($p_verbindungskennung) {
    if($_POST['auftrag']){
    $checkbox[0]=true;
    }
    else
    {
    $checkbox[0]=false;
    }

    if($_POST['bewohner']){
    $checkbox[0]=true;
    }
    else
    {
    $checkbox[0]=false;
    }

    if($_POST['tag']){
    $checkbox[0]=true;
    }
    else
    {
    $checkbox[0]=false;
    }


    $query=sprintf("SELECT bewohner_id FROM bewohner
    WHERE bewohner='%s'",
    $_GET['bewohner']);
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    if(mysql_num_rows($ergebnis)!=0)
    {
    //Inserent ist schon in Datenbank, inserentennummer merken
    $zeile=mysql_fetch_array($ergebnis);
    $bewohner_id=$zeile['bewohner_id'];
    }
    else
    {
    //neuen Inserenten anlegen und inserentennummer merken
    $query=sprintf("INSERT INTO bewohner
    SET bewohner='%s'",
    $_GET['bewohner']);
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    $mitbewoher_id=mysql_insert_id();
    }
    //Anzeigentext abspeichern und anzeigennummer merken
    $query=sprintf("INSERT INTO wochentag
    SET tag='%s',
    bewohner_id=$bewohner_id",
    $_GET['tag']);
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    $wochentag_id=mysql_insert_id();

    //zugeordnete Rubriken abspeichern
    $auftragarray=array();
    $auftragarray=$_GET['auftrag'];
    $wochentagarray=array();
    $wochentagarray=$_GET['wochentag'];
    $bewohnerarray=array();
    $bewohnerarray=$_GET['bewohner'];
    $i=0;
    while($i<count($auftragarray))
    {
    $query="INSERT INTO zuordnung
    SET auftrag_id=$auftrag_id,
    wochentag_id=$wochentag_id,
    bewohner_id=$bewohner_id";
    $ergebnis=mysql_query($query,$p_verbindungskennung);
    $i++;
    }
    echo"Dein Auftrag wurde entgegengenommen.<br><br>";
    mysql_close($p_verbindungskennung);
    }

    /**
    *von hier werden die Funktionen datenbank_verbinden(),
    *check_nickname(), check_email(), check_eintraege() u.
    *schreib_inserat() aufgerufen
    */
    function anzeige_eintragen()
    {
    $verbindungskennung=datenbank_verbinden();
    if(check_eintraege()
    &&check_name($verbindungskennung))
    schreib_inserat($verbindungskennung);
    }

    /**
    *von hier werden die Funktionen datenbank_verbinden(),
    *gib_rubriken() und formular_aufbauen() aufgerufen
    */
    function formular()
    {
    $verbindungskennung=datenbank_verbinden();
    gib_auftrag($auftrag_id,$art,$verbindungskennung);
    formular_aufbauen($auftrag_id,$art);
    }

    //Beginn
    echo "<b>Anzeige aufgeben</b><br><br>";
    echo "<a href=\"./putzplan.php\">Zurueck</a><br><br>";
    if(isset($_POST['ausfuehren'])) {
    anzeige_eintragen();
    }
    else{
    echo "Speichern !<br>";
    }

    formular();

    Ich bedanke mich schonmal im vorraus. :)

  • Ähm, diesen unformatierten Quellcode wird sich niemand genauer ansehen, benutzte bitte [noparse]

    PHP
    Quellcode

    [/noparse]

    Ansonsten gilt:

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Tut mir leid bin noch ein Amateur und habe noch relativ wenig Ahnung vom Programieren.
    Ist es zufällig der Quelltext?
    Hier der Quelltext:
    <html>
    <head><title>Putzplan</title></head>
    <body>
    <b>Anzeige aufgeben</b><br><br><a href="./putzplan.php">Zurueck</a><br><br>bewohner: <br><b>Fehler! Sie haben keinen Namen angegeben.</b><br><br> <form action="plan_aufgeben.php" method="post">
    <b>Name:</b> <input type="text" name="nickname"><b>(Tanja,Robin,Darius)<br>
    <b>Tag:</b>
    <input type="text" name="anzeigentext" size=40 maxlength=255><b>(Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag)<br><br>
    <b>Waehle deinen Auftrag aus:</b><br>
    <br><input type="submit" name="ausfuehren" value="Abschicken">
    </form><br><br>

  • Das ist ein völliges Durcheinander, damit können wir nichts anfangen. Wo hast du das PHP-Script her? Das passt ja überhaupt nicht zu dem Formular.