UPDATE MySQL mit PHP

buddymaster

Mitglied
Ich habe ein Problem mit dem Updaten meiner MySQL Tabelle.

Hier der PHP-Code:
PHP:
<form action="gaestebuch-administration.php" method="post">
<table border="0">
 <tr>
  <td><b>Name:</b></td>
  <td><input name="Name" maxlength="50"type="text"></td>
 </tr>
 <tr>
  <td><b>Titel des Eintrages:</b></td>
  <td><input maxlength="40" name="Titel" type="text"></td>
 </tr>
 <tr>
  <td><b>E-mail:</b></td>
  <td><input maxlength="50" name="Mail" type="text"></td>
 </tr>
 <tr>
  <td><b>Eintrag:</b></td>
  <td><textarea cols="40" name="Eintrag" rows="8"></textarea></td>
 </tr>
 </table>
</form>
<?php

   $DatabasePointer = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
   mysql_select_db(MYSQL_DATABASE, $DatabasePointer);

//Hier kann ich den Gaestebucheintrag löschen

   if($_REQUEST['Loeschen'] && $_REQUEST['ID'])
   {
      mysql_query("DELETE FROM gaestebuch WHERE ID = '".$_REQUEST['ID']."'", $DatabasePointer);
   }

   $ResultPointer = mysql_query("SELECT * FROM gaestebuch ORDER BY Erstellt DESC", $DatabasePointer);

// Bis hier hin funktioniert es, ich weiß aber nicht genau, wie ich den Eintrag bearbeiten kann...ich hab es mit dieser Funktion versucht. Das funktioniert aber nicht.
 
   else($_REQUEST['Aendern'] && $_REQUEST ['ID'])
   {
      mysql_query("UPDATE gaestebuch (Name, Mail, Titel, Eintrag) SET ('".$_REQUEST['Name']."', '".$_REQUEST['Mail']."', '".$_REQUEST['Titel']."', '".$_REQUEST['Eintrag']."' WHERE ID = '".$_REQUEST['ID']."'", $DatabasePointer);
   }
?>
<!--Hier wird der Eintrag angezeigt-->
<table border="0">
<?php
   for($i = 0; $i < mysql_num_rows($ResultPointer); $i++)
   {
      $Gaestebuch = mysql_fetch_object($ResultPointer);
?>
  <tr>
  <td><div style="background-color:red;color:black;padding:1px;margin:0px;font-size:10pt">&nbsp;<span style="text-decoration:underline;">Eintrag Nr. <?php echo$i+1; ?>:</span> <?php echo$Gaestebuch->Titel; ?> geschrieben von: <b><?php echo$Gaestebuch->Name; ?></b> am <b><?php echo substr($Gaestebuch->Erstellt, 8, 2); ?>.<?php echo substr($Gaestebuch->Erstellt, 5, 2); ?>.<?php echo substr($Gaestebuch->Erstellt, 0, 4); ?> <?php echo substr($Gaestebuch->Erstellt, 10); ?></b></td>
 </tr>
 <tr>
  <td><?php echo nl2br($Gaestebuch->Eintrag); ?></td>
 </tr>
 <tr>
  <td>
<!--Zum Abschicken des Löschen- Befehls-->
<a href="<?php echo$_SERVER['PHP_SELF']; ?>?Loeschen=1&ID=<?php echo$Gaestebuch->ID; ?>">Eintrag löschen</a>&nbsp;&nbsp;
<!--Zum Abschicken des Bearbeiten- Befehls-->
<a href="<?php echo$_SERVER['PHP_SELF']; ?>?Aendern=1&ID=<?php echo$Gaestebuch->ID; ?>">Eintrag bearbeiten</a></td>
 </tr>
 <tr>
  <td><hr></td>
 </tr>
<?php
   }
?>
</table>
</td>

Kann mir jemand den Fehler erklären, bzw. Verbesserungsvorschläge geben.

Schon mal Danke im Voraus!

PS: Das hier ist übrigens die Fehlermeldung:
Parse error: syntax error, unexpected T_ELSE
--> Das heißt wohl, es hat was mit der ELSE FUnktion zu tun. Aber wie kann ich es besser machen?
 
Zuletzt bearbeitet:
Zwischen [phpf]if[/phpf] Bedingung und [phpf]else[/phpf] darf kein weiterer Code stehen, ansonsten klappt die Zuordnung nicht.
 
Also Verbesserungsvorschläge wolltest du auch hören. So auf den ersten Blick fällt mir folgendes auf:
Sicherheitstechnisch ist das Gästebuch unausgereift: Thema SQL Injection.
Wenn der User einen HTML Code ins Gästebuch einträgt wird dieser auch als solcher ausgegeben. Sprich ein User kann einfach eine Seitenweiterleitung etc. einbauen. htmlentities() kodiert den Code entsprechend.
 
Zwischen [phpf]if[/phpf] Bedingung und [phpf]else[/phpf] darf kein weiterer Code stehen, ansonsten klappt die Zuordnung nicht.

Zudem ist das else generell ein wenig unpassend. Entweder meinst du else if oder du musst die Bedingung hinter dem else entfernen. Eine Mischung aus beiden Sachen ist nicht in PHP implementiert. Oder sollte es generell
PHP:
if ( $cond ) {
    // ...
}
// weiterer code
if ( $cond2 ) {
    // ...
}
heißen?
 
Ich hab das jetzt so umgeändert. Die Fehlermeldung kommt nicht mehr, funktionieren tut es trotzdem nicht.
PHP:
<?php

   $DatabasePointer = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
   mysql_select_db(MYSQL_DATABASE, $DatabasePointer);

   if($_REQUEST['Loeschen'] && $_REQUEST['ID'])
   {
      mysql_query("DELETE FROM gaestebuch WHERE ID = '".$_REQUEST['ID']."'", $DatabasePointer);
   }

   else if ($_REQUEST['Aendern'] && $_REQUEST ['ID'])
    {
      mysql_query("UPDATE gaestebuch (Name, Mail, Titel, Eintrag) SET ('".$_REQUEST['Name']."', '".$_REQUEST['Mail']."', '".$_REQUEST['Titel']."', '".$_REQUEST['Eintrag']."' WHERE ID = '".$_REQUEST['ID']."' ", $DatabasePointer);
     }

   $ResultPointer = mysql_query("SELECT * FROM gaestebuch ORDER BY Erstellt DESC", $DatabasePointer);
?>

<a href="<?php echo$_SERVER['PHP_SELF']; ?>?Loeschen=1&ID=<?php echo$Gaestebuch->ID; ?>">Eintrag löschen</a>&nbsp;&nbsp;<a href="<?php echo$_SERVER['PHP_SELF']; ?>?Aendern=1&ID=<?php echo$Gaestebuch->ID; ?>">Eintrag bearbeiten</a>

Probiert hab ich es auch mit zwei if- Anweisungen. Geht aber auch nicht!
 
Zuletzt bearbeitet:
Hallo!
PHP:
      mysql_query("UPDATE gaestebuch (Name, Mail, Titel, Eintrag) SET ('".$_REQUEST['Name']."', '".$_REQUEST['Mail']."', '".$_REQUEST['Titel']."', '".$_REQUEST['Eintrag']."' WHERE ID = '".$_REQUEST['ID']."' ", $DatabasePointer);
Wenn, dann bitte so:
PHP:
"UPDATE `tabelle` SET `spalte1`='wert1', `spalte2`='wert2' WHERE .....";
Gruss Dr Dau
 
OK, funktioniert aber immer noch nicht!
PHP:
<?php
    $Name = $_POST['Name'];
    $Mail = $_POST['Mail'];
    $Titel = $_POST['Titel'];
    $Eintrag = $_POST['Eintrag'];

   $DatabasePointer = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
   mysql_select_db(MYSQL_DATABASE, $DatabasePointer);

   if($_REQUEST['Loeschen'] && $_REQUEST['ID'])
   {
      mysql_query("DELETE FROM gaestebuch WHERE ID = '".$_REQUEST['ID']."'", $DatabasePointer);
   }

   else if ($_REQUEST['Aendern'] && $_REQUEST ['ID'])
    {
      mysql_query("UPDATE gaestebuch SET (`Name` = '$Name', `Mail` = '$Mail', `Titel` = '$Titel', `Eintrag` = '$Eintrag' WHERE ID = '".$_REQUEST['ID']."' ", $DatabasePointer);
     }

   $ResultPointer = mysql_query("SELECT * FROM gaestebuch ORDER BY Erstellt DESC", $DatabasePointer);
?>
 
PHP:
<?php
    $Name = $_POST['Name'];
    $Mail = $_POST['Mail'];
    $Titel = $_POST['Titel'];
    $Eintrag = $_POST['Eintrag'];

   $DatabasePointer = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
   mysql_select_db(MYSQL_DATABASE, $DatabasePointer) or die(mysql_error());

   if(isset($_REQUEST['Loeschen']) && isset($_REQUEST['ID']))
   {
      mysql_query("DELETE FROM `gaestebuch` WHERE `ID` = '".$_REQUEST['ID']."'", $DatabasePointer) or die(mysql_error());
   }

   else if (isset($_REQUEST['Aendern']) && isset($_REQUEST ['ID']))
    {
      mysql_query("UPDATE `gaestebuch` SET `Name` = '".$Name."', `Mail` = '".$Mail."', `Titel` = '".$Titel."', `Eintrag` = '".$Eintrag."' WHERE `ID` = '".$_REQUEST['ID']."' ", $DatabasePointer) or die(mysql_error());
     }

   $ResultPointer = mysql_query("SELECT * FROM `gaestebuch` ORDER BY `Erstellt` DESC", $DatabasePointer) or die(mysql_error());
?>
Die Konstanten MYSQL_* hast Du aber hoffentlich irgendwo definiert?!
 
Hi,

dann musst Du debuggen. Ungefähr so:

PHP:
$query = "UPDATE ....";
mysql_query($query, $dblink) or die(mysql_error() . "<br/>" . $query);

Dann bekommst Du den Fehler und siehst auch gleich, ob Deine Abfrage überhaupt so aussieht, wie Du Dir das vorgestellt hast.

LG
 
Zurück