PHP Code aus Textarea in Mysql Datenbank geht nicht!

Begonnen von stormfighter, 19. April 2007, 14:44:46

Vorheriges Thema - Nächstes Thema

stormfighter

Ich habe folgenden langen Code:

if(isset($_GET[\'do\'])) 
{
 $do=$_GET[\'do\'];
} else {
 $do=\'index\';
}
If ($do == \"index\")
 {
   echo\"
 
             Link
 
             Titel
 
             Bearbeiten
 
         \";
   $abfrage = \"SELECT id, seite, titel FROM scs_seiten\";
   $ergebnis = mysql_query($abfrage);
   while(list($id, $seite, $titel) = mysql_fetch_row($ergebnis))
     {
       echo\"
               $seite
 
               $titel
 
 

       \";
     }
   echo\"\";
 }
elseIf ($do == \"del\")
 {
   if(isset($_GET[\'id\']))
     {
       $id=$_GET[\'id\'];
       $abfrage = \"SELECT id FROM scs_seiten WHERE id = \'$id\'\";
       $ergebnis = mysql_query($abfrage);
       list($testid) = mysql_fetch_row($ergebnis);
       If($testid == $id)
         {
           $loeschen = \"DELETE FROM scs_seiten WHERE id = \'$id\'\";
           $loesch = mysql_query($loeschen);
           echo\"Seite erfolgreich gelöscht!
Zur Übersicht\";
         } else {
           echo\"Sie sind einem falschen Link gefolgt!\";
         }
     } else {
       echo\"Sie sind einem falschen Link gefolgt!\";
     }
 }
elseIf ($do == \"delbest\")
 {
   if(isset($_GET[\'id\']))
     {
       $id=$_GET[\'id\'];
       echo\"
             Sind Sie sicher das sie diese Seite löschen wollen?
 
                  Ja
 
                   Nein
 
             \";
     } else {
       echo\"Sie sind einem falschen Link gefolgt!\";
     }
 }
elseIf ($do == \"edit\")  
 {
   if(isset($_GET[\'id\']))
     {
       $id=$_GET[\'id\'];
       $abfrage = \"SELECT seite, titel, inhalt, code FROM scs_seiten WHERE id = \'$id\'\";
       $ergebnis = mysql_query($abfrage);
       list($seite, $titel, $inhalt, $code) = mysql_fetch_row($ergebnis);
       echo\"
 
                  Link:
 
                   Titel:
 
 
                   Code:
html
                                  php
 

                   \"; echo htmlentities($inhalt); echo\"
 
 
 
             \";
     } else {
       echo\"Sie sind einem falschen Link gefolgt!\";
     }
 }
elseIf ($do == \"editein\")
 {
   if((isset($_GET[\'id\'])) && ($_GET[\'id\'] != \"\"))
     {
       $id=$_GET[\'id\'];
   if((isset($_POST[\'seite\'])) && ($_POST[\'seite\'] != \"\"))
     {
       $seite=$_POST[\'seite\'];
       if(isset($_POST[\'code\']))
         {
           $code=$_POST[\'code\'];
           If (($_POST[\'code\'] == \"html\") || ($_POST[\'code\'] == \"php\"))
             {
               if(isset($_POST[\'titel\']))
                 {
                  $titel=$_POST[\'titel\'];
                   if(isset($_POST[\'inhalt\']))
                     {
                       $inhalt=$_POST[\'inhalt\'];
                       $aendern = \"UPDATE scs_seiten Set seite = \'$seite\', code = \'$code\', inhalt = \'$inhalt\', titel = \'$titel\' WHERE id = \'$id\'\";
                       $update = mysql_query($aendern);
                       echo\"Seite erfolgreich editiert!
Zur Übersicht\";
                    } else {
                      $inhalt=\"\";
                   }
               } else {
                 $titel=\"\";
               }
           } else {
              echo\"Bitte wählen Sie einen Code aus!\";
               }
         } else {
           echo\"Code Problem!\";
         }
       } else {
         echo\"Bitte geben Sie einen Link ein!\";
       }
     } else {
       echo\"Sie sind einem falschen Link gefolgt!\";
     }
 }
elseif ($do == \"new\")
 {
   echo\"
 
               Link:
 
               Titel:
 
 
                Code:
html
                               php
 

                \"; echo htmlentities($inhalt); echo\"
 
 
 
          \";
 }
elseIf($do == \"newein\")
 {
   if((isset($_POST[\'seite\'])) && ($_POST[\'seite\'] != \"\"))
     {
       $seite=$_POST[\'seite\'];
       if(isset($_POST[\'code\']))
         {
           $code=$_POST[\'code\'];
           If (($_POST[\'code\'] == \"html\") || ($_POST[\'code\'] == \"php\"))
             {
               if(isset($_POST[\'titel\']))
                 {
                  $titel=$_POST[\'titel\'];
                   if(isset($_POST[\'inhalt\']))
                     {
                       $inhalt=$_POST[\'inhalt\'];
                      $eintrag = \"INSERT INTO scs_seiten (seite, code, titel, inhalt) VALUES (\'$seite\', \'$code\', \'$titel\', \'$inhalt\')\";
                      $eintragen = mysql_query($eintrag);
                      echo\"Seite erfolgreich erstellt!
Zur Übersicht\";
                    } else {
                      $inhalt=\"\";
                   }
               } else {
                 $titel=\"\";
               }
           } else {
              echo\"Bitte wählen Sie einen Code aus!\";
               }
         } else {
           echo\"Code Problem!\";
         }
     } else {
       echo\"Bitte geben Sie einen Link ein!\";
     }
 } else {
   echo\"Sie sind einem falschen Link gefolgt!\";
 }

 
Dieser Code ist dazu da alle Seiten aus der datenbank auszulesen diese zu ändern, löschen und neue zu erstellen.
Das funktioniert auch alles super gut ABER:
Wenn ich nun eine Seite erstellen möchte z.B. mit dem Code oben dann funktioniert da snicht!
Die Datenbank gibt den folgenden Error zurück:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'do\'])) { $do=$_GET[\'do\']; } else { $do=\'index\'; } If ($do == \"inde\' at line 1

 
Wenn ich aber ganz normalen html code ändern möchte dann ist alles kein problem. Und nun das interressanteste! Wenn ich mir

$aendern = \"UPDATE scs_seiten Set seite = \'$seite\', code = \'$code\', inhalt = \'$inhalt\', titel = \'$titel\' WHERE id = \'$id\'\";

 
ausgeben lasse mit

echo $aendern;

 
also das einfach unter die datenbankänderungsvariable schreibe, dann geht alles auf einmal!
Ich bin hilflos und verstehe nix mehr!
Bitte helft mir^^
Mfg Maxi

mahe

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


stormfighter


Powie

Frage 1: ist magic_quotes bei deiner PHP Konfiguration on oder off?

stormfighter

magic_quotes_gpc   Off   Off
magic_quotes_runtime   Off   Off
magic_quotes_sybase   Off   Off

Powie

jepp...
es ist off, somit musst du alle Variablen die du später verwenden willst zum Beispiel mit der php Funktion
addslashes()
bearbeiten.

mahe

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


stormfighter


mahe

Ich handhabe das immer so dass ich im Skript abfrage ob magic_quotes_gpc ein oder aus ist und dementsprechend führe ich dann ein strippslashes() aus oder nicht.
Bevor ich die Daten dann in die MySQL-DB schreibe führe ich ein mysql_real_escape_string() aus.
Selbiges gilt für magic_quotes_runtime.
Warum?
mysql_real_escape_string() macht mehr als magic_quotes oder ein addslashes() (siehe Manual).
Und ich brauch mich beim einrichten nicht darum kümmern ob magic_quotes nun On oder Off ist /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />
 
Nur so als Tipp /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


stormfighter

besten dank an euch alle
addslashes()
brachte Die Lösung!

all your base are belong to us