Datenbank

flash2904

Grünschnabel
Hallo
Ich bin neuling im bereich von php und habe ein problem mit einem script von dem tutorial!
wie kann ich das script um formular felder erweitern.
Danke im vorraus.
Habe schon einiges Probiert ist aber alles gegen die Wand gelaufen.

Flash2904
PHP:
<?php
    $edit = false;
    $message = "";
    $db_name = 'datenbankname';
    $db_user = 'root';
    $db_host = 'localhost';
    $db_pw = '';
    //Wenn der Parameter 'edit' über die URL übergeben wurde, nimmt $edit den Wert des übergebenen Params an
    if(isset($_GET['edit']))    { $edit = $_GET['edit']; } 
    $con = mysql_connect($db_host, $db_user, $db_pw)
        or die(mysql_error());
    $db = mysql_select_db($db_name, $con)
        or die(mysql_error());  
    //Der folgende Codeblock wird ausgeführt, wenn der Button mit dem Namen 'insert' gedrückt wurde
    if(isset($_POST['insert']))    {
        $sql_data_insert = "INSERT INTO daten (Feedback) VALUES ('".$_POST['feedback']."')";
        $qry_data_insert = mysql_query($sql_data_insert)
            or die(mysql_error());

        if($qry_data_insert)    {
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich eingef&uuml;gt</span>";
        }else{
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht eingef&uuml;gt werden</span>";
        }
    //Der folgende Codeblock wird ausgeführt, wenn der Button mit dem Namen 'update' gedrückt wurde
    }elseif(isset($_POST['update']))    {
        $sql_data_update = "UPDATE daten SET Feedback='".$_POST['feedback']."' WHERE ID=".$_POST['id'];
        $qry_data_update = mysql_query($sql_data_update)
            or die(mysql_error());

        if($qry_data_update)    {
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz erfolgreich modifiziert</span>";
            $edit = false;
        }else{
            $message = "<span style=\"color:#ff0000;font-weight:bold;\">Datensatz konnte nicht modifiziert werden</span>";
        }
    }  
   if($edit)    {
        $sql_data_edit = "SELECT ID, Feedback FROM daten WHERE ID=".$edit;
        $qry_data_edit = mysql_query($sql_data_edit)
            or die(mysql_error());
        $data_edit = mysql_fetch_array($qry_data_edit);
    } 
    $sql_data_list = "SELECT ID, Feedback FROM daten";
    $qry_data_list = mysql_query($sql_data_list)
        or die(mysql_error());
?>  
<html>
<head>
<title>Beispiel</title>
</head>

<body>
<? echo $message; ?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" name="modData" method="POST">
<input type="hidden" name="id" value="<? echo $edit; ?>">
<textarea rows="6" cols="50" name="feedback"><? if(!empty($data_edit['Feedback'])) { echo $data_edit['Feedback']; } ?></textarea>
<br />
<? if($edit)    {    ?>
<input type="submit" name="update" value="Modifizieren">
<? }else {    ?>
<input type="submit" name="insert" value="Einf&uuml;gen">
<? }    ?>
<br />
<hr />
<?
    while($all_data = mysql_fetch_array($qry_data_list))    {    
        echo "[<a href=\"".$_SERVER['PHP_SELF']."?edit=".$all_data['ID']."\">Edit</a>] | ";
        echo $all_data['ID']." | ".$all_data['Feedback']."<br />";
    } 
?>
</form>
</body>
</html>
 
Zuletzt bearbeitet:
Hi

Ich möchte gerne mehr daten an eine Datenbank senden (Name,Titel, ......) .
Nur weis ich nicht wie die Funktionen:
PHP:
$sql_data_insert = "INSERT INTO daten (Feedback) VALUES ('".$_POST['feedback']."')";
und
PHP:
$sql_data_update = "UPDATE daten SET Feedback='".$_POST['feedback']."' WHERE ID=".$_POST['id'];
erweitert werden.
Der form Tag im HTML ist kein Problem.

Danke
Flash2904
 
Dazu müssen wir wissen, welche Spalten die Tabelle „daten“ enthält. Denn wenn keine entsprechende Spalte vorhanden ist, kannst du auch nichts speichern.
 
das ist boese...:

"UPDATE daten SET Feedback='".$_POST['feedback']."' WHERE ID=".$_POST['id'];

Bitte niiiiiemals post oder get oder sonstiges einfach so ungeprueft in die Datenbank schreiben11!!einselfelf!

* Pruefe Benutzereingaben vor der Verarbeitung
* benutze mysql_real_escape (oder derivat fuer deine DB)
*** sucht mal im .oogle nach PHP Coding Standards und Security!


v.
 
aendere:


$sql_data_update = "UPDATE daten SET Feedback='".$_POST['feedback']."' WHERE ID=".$_POST['id'];

in

$ID=$_POST['id'];

if (is_integer($ID) && $ID>0) {

$sql_data_update = "UPDATE daten SET daten.Datum='".mysql_real_escape($_POST['datum'])
."', daten.Autor='".mysql_real_escape($_POST['Autor'])
."', daten.Betreff='".mysql_real_escape($_POST['betreff'])
."', daten.Feedback='".mysql_real_escape($_POST['feedback'])
."' WHERE ID=".mysql_real_escape($ID);

} else {
echo "fehler";
exit;
}

allerdings sollte man vorher besser die $_POST Variablen validieren.
Zum Beispiel sollte ID immer eine Zahl sein und >0 (siehe if... oben).


Gruss
v.
 
Zurück