PHP gbook Adminbereich
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
administration
akt
ausgabe
beitrag
button
database
daten
eintrag
fehler
gstebuch
hochladen
kommentar
message
order
pawort
send
set
stellen
update
nderung
-
hallo,
ich möchte gerne eine Seite haben, wo kommentare zu Einträge abgegeben können und auch welche gelöscht werden können.
Aber dat Kommentar abgeben geht net:
1.) keine Übertragung der Daten aus dem Formular feld <input>
2.) wir $Gästebuch-> net genommen also es wird nur KOmmen... eingetragen
CODE:
<html> <head> <title>Mein Gästebuch - Administration</title> </head> <body> <h2>Mein Gästebuch - Administration</h2> <?php $DatabasePointer = mysql_connect("ma-city.de", "U", "ad6"); mysql_select_db("db__3", $DatabasePointer); if($_REQUEST['Loeschen'] && $_REQUEST['id']) { mysql_query("DELETE FROM guestbook WHERE id = '".$_REQUEST['id']."'", $DatabasePointer); } if($_REQUEST['kommentar'] && $_REQUEST['id']) { mysql_query("UPDATE guestbook Set message = '$Gaestebuch->message <br><i>Kommentar von Yinka:</i><br>".mysql_real_escape_string($_POST['kommentar'])."' WHERE id = '".mysql_real_escape_string($_GET['id'])."'", $DatabasePointer); } $ResultPointer = mysql_query("SELECT * FROM guestbook ORDER BY id ASC", $DatabasePointer); ?> <table border="0"> <?php for($i = 0; $i < mysql_num_rows($ResultPointer); $i++) { $Gaestebuch = mysql_fetch_object($ResultPointer); ?> <tr> <td><b>#<?php echo$i+1; ?>: <?php echo$Gaestebuch->name; ?></b></td> </tr> <tr> <td><?php echo nl2br($Gaestebuch->message); ?></td> </tr> <tr> </tr> <tr> <td><a href="<?php echo$_SERVER['PHP_SELF']; ?>?Send=1&Passwort=<?php echo$_REQUEST['Passwort']; ?>&Loeschen=1&id=<?php echo$Gaestebuch->id; ?>">Eintrag löschen</a></td> <td> </td> <td> <input type="text" name="kommentar" value="sdf Kommentar" size="120"> <br> </td> <td> <a href="<?php echo$_SERVER['PHP_SELF']; ?>?Send=1&Passwort1=<?php echo$_REQUEST['Passwort']; ?>&kommentar=1&id=<?php echo$Gaestebuch->id; ?>">Eintrag kommentieren</a></td> </tr> <tr> <td><hr></td> </tr> <?php } ?> </table> </body> </html>
Bitte helft mir den Fehler zu finden.
Danke Dieme
PS Hosted: http://hce.lima-city.de/yinka/gb/gaestebuch-administration.php
Beitrag geaendert: 26.4.2007 15:48:13 von hce -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
if($_REQUEST['kommentar'] && $_REQUEST['id'])
Warum Request wenn es eigentlich $_GET[] sein sollte???
Irgendwie solteste das script mal überarbeiten, das ist n bissel durcheinander.
Input ohne <Form .......>..........</Form> ???
Das funzt doch alles irgendwie nicht!
Auch die Frage der Sicherheit (Codeinjektion) ist hier völlig nebensächlich behandelt!
Beitrag geaendert: 26.4.2007 16:12:07 von ef06 -
Hallo
Also ich hab des bei mir auch mal gemacht und ich habe es immer auf folgende Weise gemacht - vllt kann ich dich ja dazu überzeugen^^
Mach am Anfang einen auf (der Submitbutton muss den Namen "submit" tragen^^
<?php if (!isset($_POST['submit'])) { hier dann alles was ausgegeben werden soll wenn der Submitbutton noch nicht gedrückt würde. } ?>
Jetzt kommt der Code wenn der Submitbutton gedrückt wurde:
<?php else { hier alles was passieren soll, wenn der Button gedrückt würde! } ?>
Ansonsten kann ich auf die Schnelle keinen Fehler entdecken ...
Hoffe mein Post war nicht ganz umsonst xD
Gruß
//EDIT-1
Wie jemand wieder schneller war und ich dazu lerne xD
Also <form ...></form> sollte man wirklich benutzen ..
Aber ... $_REQUEST müsst eig richtig sein ... $_GET benutzt man, denn in der URL etwas hinterlegt ist .. $:REQUEST wenn man durch Drücken eines Buttons wohin gelangt.
Beitrag geaendert: 26.4.2007 16:16:51 von derdeagle -
if (!isset($_POST['senden'])&& !empty($_POST['kommentar'])) { echo" Ausgabe wenn senden=True und Kommentar != leer"; }else{ echo "Kein Kommentar angegeben "; } echo" <form method=\"post\" action=\"$_SERVER[PHP_SELF]\"> <input type=\"text\" name=\"kommentar\" size=\"120\"> <br> <input type=\"submit\" name=\"senden\" style=\"width:300\" value=\"senden\"><br>";
Aber ... $_REQUEST müsst eig richtig sein ... $_GET benutzt man, denn in der URL etwas hinterlegt ist .. $:REQUEST wenn man durch Drücken eines Buttons wohin gelangt.
Kurz erläutert!
$_POST[''] - nur für Post
$_GET[''] - nur für Get
$_REQUEST[] - für Post als auch Get
Guckst Du hier:
http://de3.php.net/manual/en/language.variables.predefined.php
Beitrag geaendert: 26.4.2007 16:57:08 von ef06 -
Also habe um gescrieben geht auchh fast bis, dass mit dem kommentar, dann hohlt er sich noch net die ID spalte
CODE:
<html> <head> <title>Mein Gästebuch - Administration</title> </head> <body> <h2>Mein Gästebuch - Administration</h2> <?php $DatabasePointer = mysql_connect("mysql.lima-city.de", "U761", "ak16"); mysql_select_db("db_77", $DatabasePointer); if($_REQUEST['Loeschen'] && $_REQUEST['id']) { mysql_query("DELETE FROM guestbook WHERE id = '".$_REQUEST['id']."'", $DatabasePointer); } $ResultPointer = mysql_query("SELECT * FROM guestbook ORDER BY id ASC", $DatabasePointer); ?> <table border="0"> <?php for($i = 0; $i < mysql_num_rows($ResultPointer); $i++) { $Gaestebuch = mysql_fetch_object($ResultPointer); ?> <tr> <td><b>#<?php echo$i+1; ?>: <?php echo$Gaestebuch->name; ?></b></td> </tr> <tr> <td><?php echo nl2br($Gaestebuch->message); ?></td> </tr> <tr> </tr> <tr> <td><a href="<?php echo$_SERVER['PHP_SELF']; ?>?Send=1&Passwort=<?php echo$_REQUEST['Passwort']; ?>&Loeschen=1&id=<?php echo$Gaestebuch->id; ?>">Eintrag löschen</a></td> <td> </td> <td> <form form enctype='multipart/form-data' action='#' method='post'> <input type="text" name="kommentar" value="sdf Kommentar" size="120"> <br> <input type="submit" name="neueintrag" value="Eintragen"> <input type="reset" value="Löschen"> </form> </td> <td> </tr> <tr> <td><hr></td> </tr> <?php } ?> </table> <?php $verbindung = mysql_connect( "mysql.lima-city.de", "US1", "ad16"); //Verbindung if (!$verbindung) { echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>"; exit; } mysql_select_db("d_3"); if(isset($_POST['neueintrag'])){ $kommentar = addslashes($_POST['kommentar']); $update = mysql_query("UPDATE guestbook Set message = '$Gaestebuch->message<br><i>Kommentar von Yinka:</i><br>$kommentar' WHERE id = '$Gaestebuch->id' "); { echo 'Eintrag erfolgreich in die Datenbank eingetragen. Und die Homeseite abgedaten'; } } ?> </body> </html>
Also eher nur dieser Code ist relevant:
$update = mysql_query("UPDATE guestbook Set message = '$Gaestebuch->message<br><i>Kommentar von Yinka:</i><br>$kommentar' WHERE id = '$Gaestebuch->id' ");
Doch dat geht net, aber wenn z.B. 1 oda so geht dat alles.
Bitte schriebt mir, den Befehl
thx -
Im Post ist ja auch keine Id mitgegeben ???
echo " <form method=\'post\' action=\'$_SERVER[PHP_SELF]\'> <input type='hidden' name='id' value='Gaestebuch->id'> // hier wird die Id mitgesendet! <input type='text' name='kommentar' value='sdf Kommentar' size='120'> <br> <input type='submit' name='neueintrag' value='Eintragen'> <input type='reset' value='Löschen'> </form>";
Nun würde das aber auch hier so aussehen :
$update = mysql_query('UPDATE guestbook Set message = '$Gaestebuch->message<br><i>Kommentar von Yinka:</i><br>$kommentar' WHERE id = '$_POST[id]' ');
Hier
if($_REQUEST['Loeschen'] && $_REQUEST['id'])
wird Post verwendet
if($_POST['Loeschen'] && $_POST['id'])
Auch hier würde ich an Deiner Stelle auch anders vorgehen :
$Gaestebuch = mysql_fetch_assoc($ResultPointer);
Der rest würde dann nicht mit $Gaestebuch->... aufgerufen sondern mit $Gaestebuch[........] ist meiner Meinung nach auch übersichtlicher!
Zeile 38 ??? ist auch irgendwie quatsch!
Löschen, eintragen und bearbeiten kannste doch alles in einem machen!
Variablen $Gaestebuch sollten doch $gaestebuch geschrieben werden
enctype='multipart/form-data' ist an dieser Stelle auch nicht notwendig!
Auch dene Datenbank-Connecterei ist auchirgendwie doppelt gemopelt. Wenn das der Adminbereich ist gehe ich davon aus das es bei der Ausgabe und eingabe ebenfals mehrere Conneckts geben wird und da bietet es sich doch an das in einer anderen Datei zb. cfg.php und diese dann mittels includen("cfg.php") bzw. require_once("cfg.php") aufrufen. Sparst Dir sehr viel schreibarbeit und Dein Script wird auch übersichtlicher.
Also so wie das im Moment ausschaut wird das alles nichts richtiges.
Beitrag geaendert: 27.4.2007 17:27:40 von ef06 -
habe bei der Ausgabe dat net mit mehreren Conections gemacht, Aber dat mit hidden id geht net. habe es mal als text gemacht und dort steht nur $Gaestebuch->id und dat mit POST geht net real.Vll. wäre einer so net und würde den Code kurz umschreiben. Akt:
<html> <head> <title>Mein Gästebuch - Administration</title> </head> <body> <h2>Mein Gästebuch - Administration</h2> <?php $DatabasePointer = mysql_connect("mysql.lima-city.de", "USE61", "ad16"); mysql_select_db("db_71_3", $DatabasePointer); if($_REQUEST['Loeschen'] && $_REQUEST['id']) { mysql_query("DELETE FROM guestbook WHERE id = '".$_REQUEST['id']."'", $DatabasePointer); } $ResultPointer = mysql_query("SELECT * FROM guestbook ORDER BY id ASC", $DatabasePointer); ?> <table border="0"> <?php for($i = 0; $i < mysql_num_rows($ResultPointer); $i++) { $Gaestebuch = mysql_fetch_object($ResultPointer); ?> <tr> <td><b>#<?php echo$i+1; ?>: <?php echo$Gaestebuch->name; ?></b></td> </tr> <tr> <td><?php echo nl2br($Gaestebuch->message); ?></td> </tr> <tr> </tr> <tr> <td><a href="<?php echo$_SERVER['PHP_SELF']; ?>?Send=1&Passwort=<?php echo$_REQUEST['Passwort']; ?>&Loeschen=1&id=<?php echo$Gaestebuch->id; ?>">Eintrag löschen</a></td> <td> </td> <td> <?php echo ' <form method="post" action="#"> <input type="text" name="id1" value="$Gaestebuch->id"> <input type="text" name="kommentar" value="sdf Kommentar" size="120"> <br> <input type="submit" name="neueintrag" value="Eintragen"> <input type="reset" value="Löschen"> </form>'; ?> </td> <td> </tr> <tr> <td><hr></td> </tr> <?php } ?> </table> <?php $verbindung = mysql_connect( "mysql.lima-city.de", "USER77761", "ad13kk16"); //Verbindung if (!$verbindung) { echo "<br><center><b>- Keine Verbindung zur Datenbank -</b></center>"; exit; } mysql_select_db("db_77761_3"); if(isset($_POST['neueintrag'])){ $kommentar = addslashes($_POST['kommentar']); $id2 = addslashes($_POST['id1']); $update = mysql_query("UPDATE guestbook SET message = 'Kommentar von Yinka1:' WHERE id = '$id2' "); { echo 'Eintrag erfolgreich in die Datenbank eingetragen. Und die Homeseite abgedaten'; } } ?> </body> </html>
PS: Habe eine feste Nachricht und net aus Formular genommen.
Beitrag geaendert: 27.4.2007 22:09:27 von hce -
So....
weil ichheute wieder einmal richtig lange weile hatte hab ich Dir das mal auf die schnelle umgeschrieben.
hier als ZIP-Datei auspacken auf den web hochladen und testen!
Evtl. die Logindaten ganz oben anpassen.
und erst einmal nix ändern einfach testen!
Sollte was nicht funzen werden wir weiter sehen......
Habe es selber nicht getestet! Könnten also noch der eine oder andere kleine Fehler drin sein
http://papapeter.pa.funpic.de/admin.zip
ich hoffe das es Dir weiter hilft!
Beitrag geaendert: 27.4.2007 21:16:06 von ef06 -
thx an ef06 und es sind noch ein paar fehler drin also pls add me zu deiner Kontaktliste ICQ 252-350-746
-
Funktioniert es nun?
-
Nein leider nicht und damit ich nicht wegen jeden Problem/Fehler hier antworten will, dachte ich wäre ICQ cool. Aber egal also Fehler:
Parse error: syntax error, unexpected '"' in /home/webpages/lima-city/hce/html/yinka/gb/admin_test/unzip_admin/admin.php on line 23
URL http://hce.lima-city.de/yinka/gb/admin_test/unzip_admin/admin.php -
habe es mal umgeschrieben/verbessert(hoffe ich), aber es passiert leider nichts. Also es werden weder Daten versendet bzw. gelöscht. habe probiert es mit fester id (z.B. 1) probiert ,doch es hat nicht geklappt.
Akt. Code:
<?php // Logindaten $user = "U761"; $database= "db_77_3"; $host = "mysql.limacity.de"; $password = "ad136"; echo" <html> <head> <title>Mein Gästebuch - Administration</title> </head> <body> <h2>Mein Gästebuch - Administration</h2>"; //Datenbank connecten $conn = @mysql_connect("$host","$user","$password") or die ("<p>Es konnte keine Verbindung zur Datenbank herstellt werden! MfG</p>"); mysql_select_db("$database") or die ("<p>Die Datenbank konnte nicht ausgewählt werden! MfG</p>"); if(isset($_POST['neueintrag']) && !empty($_POST['id'])){ $kommentar = addslashes($_POST['kommentar']); $id = $_POST['id']; $update = mysql_query("UPDATE guestbook SET message = ' ". $kommentar. " ' WHERE id =' ". $id. " ' "); } if(isset($_POST['loeschen']) && !empty($_POST['id'])){ mysql_query("DELETE FROM guestbook WHERE id = '". $_POST['id']. "'"); } $i=1; $res = mysql_query("SELECT * FROM guestbook ORDER BY id asc"); echo'<table border="0">'; while ($data = mysql_fetch_assoc($res)){ echo " <tr> <td><b>"; echo $i++; echo ": ".$data[name]."</b> </td> </tr> <tr> <td>"; echo nl2br($data[message]); echo" </td> </tr> <tr> <td></td> <td></td> <td> <FORM METHOD='POST' ACTION='#'> <input type='hidden' name='id' value='data[id]'> <input type='text' name='kommentar' value='sdf Kommentar' size='120'><br> <input type='submit' name='neueintrag' value='ändern'> <input type='submit' value='Löschen'> </form> </td> <td> </tr> <tr> <td><hr></td> </tr>"; }// ende while echo" </table> </body> </html>"; ?>
Bitte helft mir dabei.
thx ab ef06 für den script
URL:http://hce.lima-city.de/yinka/gb/admin_test/unzip_admin/admin1.php -
ICQ nutze ich leider nicht eher Skype!
...ja das läst sich doch aber rausbekommen....
ich schau noch mal....
EDIT
So habe das Spiel mal local demonstriert und bei mir funktioniert die Sache.
Habe auch keine Fehler finden können!
hier noch mal der link als Zip-File zum runterladen.
http://papapeter.pa.funpic.de/admin.zip
das auspacken - Hochladen und auf einen neuen Versuch!
Sollte nichts geändert werden liegt es an den Datenbank-Daten, dass hier ein Fehlerchen besteht.
Heißen die Spalten auch message und id?
Habe in diesem Script (änderung) die neu eingetragene message bei jedem durchlauf angezeigt! Dh. wenn eine änderung gemacht wurde diese gleich angezeigt! War vorher eine feste Ausgabe und dann kann sich auch nichts ändern (;-(
Deine geänderte action bringt auch nichts denn was soll das bringen :
http://hce.lima-city.de/yinka/gb/admin_test/unzip_admin/admin1.php#
Beitrag geaendert: 28.4.2007 9:32:41 von ef06 -
also skype habe ich auch sag , mal pls name oda add me wolf-arek . Try dat gerade mit dem Script.
thx für die mühe.
-
werde dir ne pn senden
-
okay thx weil im script scheint ein fehler zu sein. Also gleich bei skype.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage