PHP und MySQL

ghostadmin

Grand Admiral Special
Mitglied seit
11.11.2001
Beiträge
25.197
Renomée
185
Standort
Dahoam Studios
Also ich kann mir zwar problemlos was über einen Query aus MySQL holen und auf einer PHP Seite anzeigen lassen.
Soweit so gut, aber wie kann ich diesen Wert der nun in einem HTML Formular (input) steht, wieder verändert zurückschreiben?

Also praktisch gesehen so, man lässt sich einen bestimmten Gästebucheintrag anzeigen, in dem man dessen ID angibt. Dann (auf submit klicken) wird Name und Comment angezeigt. Man kann diese nun auf der Seite ändern.
Nun möchte ich mit einem Edit Button das ganze wieder zurück nach MySQL schreiben. Das dumme ist nur, sobald ich auf Edit drücke, sind alle Werte wieder auf 0 gesetzt weil das Skript ja wieder neu von vorne läuft.

Wo liegt der Trick?


PHP:
<form id="show" name="show" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" target="_self">
ID: <input type="text" size="1" name="eid" />
<input type="submit" value="Show" />
<input type="hidden" name="show" value="1" />
</form>


<?php

if(isset($_POST['show']) and $_POST['show']==1)
{

    $eid = trim($_POST['eid']);
    if($eid !='')
    {
    
$connection=mysql_connect('localhost','admin','xxx') or die(mysql_error());
$sql=mysql_select_db('xxx') or die(mysql_error());
$query = 'SELECT * FROM guestbook WHERE id="'.$eid.'"';
    $result = mysql_query($query);
    
    if($result)
    {
    
        $row = mysql_fetch_array($result);
	echo '<form>Name:';
	echo '<input value='.$row['name'].' />';
	echo 'Kommentar:<textarea rows="5" cols="45">'.$row['comments'].'</textarea>';
        echo '</form>';
    }
    else
    {
    echo("Fehler beim laden");
    }
    }
    else
    {
    echo("Keine id gew&auml;hlt");
    }
}



if(isset($_POST['edit']) and $_POST['edit']==1)
{
$eid = trim($_POST['eid']);
$name = trim($_POST['name']);
$comments = trim($_POST['comments']);
$connection=mysql_connect('localhost','admin','xxx) or die(mysql_error());
$sql=mysql_select_db('xxx) or die(mysql_error());
$query = 'UPDATE guestbook set name = "'.$name.'" WHERE id = "'.$eid.'"';
echo $query;
$result = mysql_query($query);
$query = 'UPDATE guestbook set comments = "'.$comments.'" WHERE id = "'.$eid.'"';
echo $query;
$result = mysql_query($query);

}



?>

<form id="edit" name="edit" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" target="_self">

<input type="submit" value="Editieren" />
<input type="hidden" name="edit" value="1" />
</form>
 
Zuletzt bearbeitet:
Dein Edit-Formular hat ja gar keine "name"-Attribute?! Damit ist $_POST ja quasi leer.

Gruß,
Max

PS: Du kannst auch mehrere Felder auf einmal updaten, einfach durch Komma trennen.
Code:
UPDATE guestbook SET `name` = 'Fritz', `comments` = 'Ja Servus!' WHERE `id` = '1';
 
An dieser Stelle sei auch nochmal dringend auf SQL-Injections hingewiesen, für welche dieses Script anfällig ist.
 
Dein Edit-Formular hat ja gar keine "name"-Attribute?! Damit ist $_POST ja quasi leer.

Gruß,
Max

PS: Du kannst auch mehrere Felder auf einmal updaten, einfach durch Komma trennen.
Code:
UPDATE guestbook SET `name` = 'Fritz', `comments` = 'Ja Servus!' WHERE `id` = '1';

Nun ich möchte den Teil:
PHP:
echo '<form>Name:';
    echo '<input value='.$row['name'].' />';
    echo 'Kommentar:<textarea rows="5" cols="45">'.$row['comments'].'</textarea>';
        echo '</form>';

Erst anzeigen in dem man auf "Show" klickt, daß Feld nachträglich editieren und dann soll es gespeichert werden wenn man auf "Editieren" klickt.
 
funktioniert! (siehe unten)
Was anderes, ich habe diese php Datei zwar per htaccess geschützt und Apache zeigt die nicht im Klartext weil php sofort ausgewertet wird aber ...

Man könnte ein Passwort als MD5 Hash in einem Array speichern. Dann könnte man diesen MD5 hash mit einem Formularfeld vergleichen z.B.:
if (md5($_POST["password"]) == $accounts[$_POST["name"]])

Was ist jetzt aber wenn ich kein Passwordfeld im Gästebuch habe? Jeder soll ohne Passwort Einträge vornehmen können! Dann müsste ich ja wieder das Passwort im Klartext ins File reinschreiben, weil MD5 rückwärts geht ja nich.

PHP:
<form id="show" name="show" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" target="_self">
ID: <input type="text" size="1" name="eid" />
<input type="submit" value="Show" />
<input type="hidden" name="show" value="1" />
</form>


<?php

if(isset($_POST['show']) and $_POST['show']==1)
{

    $eid = trim($_POST['eid']);
    if($eid !='')
    {
    
$connection=mysql_connect('localhost','admin','xxx') or die(mysql_error());
$sql=mysql_select_db('xxx') or die(mysql_error());
$query = 'SELECT * FROM guestbook WHERE id="'.$eid.'"';
    $result = mysql_query($query);
    
    if($result)
    {
    
        $row = mysql_fetch_array($result);

    }
    else
    {
    echo("Fehler beim laden");
    }
    }
    else
    {
    echo("Keine id gew&auml;hlt");
    }
}





?>

<form id="edit" name="edit" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" target="_self">
Den zu verändernden Text in untenstehende Felder eintragen!<br>
ID: <input type="text" size="1" name="eid2" value="<?php echo "$eid"?>" />
Name: <input type="text" size="7" name="name2" value="<?php echo "$row[name]"?>" />
Kommentar: <textarea name="comments2" rows="5" cols="45" ><?php echo "$row[comments]"?></textarea>
<input type="submit" value="Editieren" />
<input type="hidden" name="edit" value="1" />
</form>

<?php


if(isset($_POST['edit']) and $_POST['edit']==1)
{


$eid = trim($_POST['eid2']);
$name = trim($_POST['name2']);
$comments = trim($_POST['comments2']);
$connection=mysql_connect('localhost','admin','xxx') or die(mysql_error());
$sql=mysql_select_db('xxx') or die(mysql_error());
$query = 'UPDATE guestbook set name = "'.$name.'", comments = "'.$comments.'" WHERE id = "'.$eid.'"';
echo("Datenbank query:");
echo $query;
$result = mysql_query($query);


}


phpinfo(INFO_VARIABLES);
?>
 
Zurück
Oben Unten