PHP Der Weg vom Formular in die Datenbank ist schwer

rony12

Commodore
Registriert
Jan. 2007
Beiträge
4.899
Hallo,

ich bin dabei ein Formular zu erstellen, bei der am ende die Werte in eine Datenbank geschrieben werden sollen.

Das Auslesen aus der Datenbnak klappt wunderbar... Also Werte die ich mittles PHP-MyAdmin.

Das klingt jetzt schon fast bekloppt.... aber ich bekomm es einfahc nicht hin, es mag sein, dass es nur eine kleine sache ist...

Ach ja, fals es hilft, die ganze sache läuft einem lokal installiertem xampp.


edit:
Mittlerweile habe ich es geschaft eine Fehlermeldung zu bekommen:
"MySQL-Error: INSERT command denied to user ''@'localhost' for table 'speicher'"

Interessant finde ich, warum, dort ein Benutzername drin steht Öö

Code der Datei in der das Formular ist:

PHP:
<?php
    include 'escape.php';
    include 'head.php';
    
     if (isset($_POST['filled']) && $_POST['name'] != "" && $_POST['titel'] != "" && $_POST['volltext'] != "") { 
     mysql_reference_escape($_POST);
     $sql = "INSERT INTO `toppicker`.`speicher` (
     `status`,
     `end_date`,
     `Name`,
     `Mail`,
     `Titel`,
     `Untertitel`,
     `Zusammenfassung`,
     `Komplett`
     ) VALUES (
     '".$_POST["filled"]."',
     '{$_POST["end_date"]}',
     '{$_POST["name"]}',
     '{$_POST["email"]}',
     '{$_POST["titel"]}',
     '{$_POST["untertitel"]}',
     '{$_POST["zusammenfassung"]}',
     '{$_POST["volltext"]}')";
    debug($sql);
    mysql_query($sql);

      }
    ?>


<div class="header">
<?php 
    head_title();
    login();
?>
</div>

<div class="neue_eingabe">
    <form action="create.php" method="post" id="create">
        <div style="background-color: #E0E0E0; padding-bottom: 35px;">
        <input type="hidden" name="filled" value="1" />
            <div style="margin-top: 15px;">
                <p>Name: *</p><input class="eingabe_single" type="textfield" id="name" title="Name" name="name"/>
            </div>
            <div style="margin-top: 15px;">
                <p>Email:</p><input class="eingabe_single" type="email" id="email" title="eMail" name="email"/>
            </div>
        </div>
        <hr/>
        <div  style="background-color: #E0E0E0; padding-top: 20px;">
            <div style="margin-top: 15px;">
                <p>Titel: *</p><input  class="eingabe_single" type="textfield" id="titel" title="Titel" name="titel" onkeyup="count_t(this.value);"/>
                <div class="hinweis" id="hinweis_titel"></div>
            </div>
            <div style="margin-top: 15px;">
                <p>Ablaufdatum:</p><input  class="eingabe_single" type="textfield" id="end_date" title="Ablaufdatum" name="end_date" onclick="javascript: cal1.select(document.forms['create'].end_date,'end_date','yyyy-MM-dd');"/>
            </div>
            <div style="margin-top: 15px;">
                <p>Untertitel:</p><input  class="eingabe_single" type="textfield" id="untertitel" title="Untertitel" name="untertitel" onkeyup="count_ut(this.value);"/>
                <div class="hinweis" id="hinweis_untertitel"></div>
            </div>
            <div style="margin-top: 15px;">
                <p>Zusammenfassung:</p><textarea type="text" style="width: 95%;    margin-left: 10px; height: 100px;" id="zusammenfassung" title="Zusammenfassung" name="zusammenfassung" onkeyup="count_z(this.value);"></textarea>
                <div class="hinweis" id="hinweis_zusammenfassung"></div>
            </div>
            <div style="margin-top: 15px;">
                <p>Kompletter Text: *</p><textarea type="text" class="eingabe_multi" id="volltext" title="Lompletter Text" name="volltext"></textarea>
            </div>
            <div style="margin-top: 20px;">
                <input type="submit" name="submit" value="Abschicken"/>
            </div>
        </div>
    </form>
</div>

<?php    
    include 'footer.php';
?>

Code aus der escape.php

PHP:
<?php

        define("debug", false);
        function debug($value) {
    if(debug == true) {
        echo "<pre>";
        print_r($value);
        echo "</pre>";
    }
}
/* mysql_smart_escape - enhances mysql_real_escape_string
* Written by Max 'damaxxed' Vogler
* Written exclusively for www.php4you.de
*/
function mysql_smart_escape($var, $quote_string = "",$link = null, $stripslashes = null) {
    if($stripslashes == null)
    $stripslashes  = get_magic_quotes_gpc();

    if(is_array($var)) {
    $ret = Array();
    foreach($var as $k => $v)
        $ret[$k] = mysql_smart_escape($v, $quote_string, $link);
    }else{
        if ($stripslashes)
            $ret = stripslashes($var);

        if(!is_numeric($var)) {
            if($link == null)
                $ret = $quote_string . mysql_real_escape_string($var) . $quote_string;
            else
                $ret = $quote_string . mysql_real_escape_string($var, $link) . $quote_string;
        }else
            $ret = (int) $var;
    }
    return $ret;
}
function mysql_reference_escape(&$var, $quote_string = null,$link = null, $stripslashes = null)
{
    $var = mysql_smart_escape($var, $quote_string, $link, $stripslashes);
}
function checkSelected($str1, $str2="1", $type=1) {
    if(strcmp($str1, $str2)==0)
        return $type==1?" checked=\"checked\"":" selected=\"selected\"";
    return "";
}

?>
 
Zuletzt bearbeitet:
Und wo bitte baust du dort die Verbindung zur Datenbank auf? Eventuell solltest du dort mal schauen und die korrekten Daten eintragen.
 
Ist zwar schon ein bischen her, dass ich etwas mit PHP und MySQL gemacht habe, aber beim überfliegen deines Quellcodes finde ich keinen Verbindungsaufbau...

PHP:
<?php

    $handle = mysql_connect('localhost', 'user', 'pass');
    if(mysql_select_db('name', $handle))
    {
        $res = mysql_query('deine query', $handle);
    }

?>

Fehlerbehandlung hab ich mal ausgelassen, aber so solltest du denk ich mal weiter kommen. Guck dir auch mal Prepared Statements an, ist meiner Meinung nach schöner als das einzelne escapen :)

Edit: Lol, da war wohl jemand schneller^^
 
Zurück
Oben