jürgen: DB updaten: Fehler

Ich habe diesen Code, jedoch will er die DB nicht updaten.
Es ist die add.php

  
    <?php  
    include 'head.php';  
if($_POST['submit'])  
{  
  
   $name = mysql_real_escape_string($_POST["name"]);  
   $headline = mysql_real_escape_string($_POST["headline"]);  
   $content = mysql_real_escape_string($_POST["content"]);  
   $adden = mysql_query("UPDATE pagecontent  
   SET  
   headline='$headline', content='$content' WHERE name='$name'") or die (mysql_error());  
if($adden)  
{  
   echo 'Successfully added.';  
}  
else {  
   echo 'Could not be added.';  
}  
}  
  
  
    ?>  
    <!-- start page -->  
    <div id="page">  
       <!-- start content -->  
       <div id="content">  
    <script language="javascript" type="text/javascript" src="../tinymce/jscripts/tiny_mce/tiny_mce.js"></script>  
  
  
    <script language="javascript" type="text/javascript">  
    tinyMCE.init({  
    // General options  
    mode : "textareas",  
    theme : "advanced",  
    plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager",  
  
  
    // Theme options  
    theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",  
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",  
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",  
    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",  
    theme_advanced_toolbar_location : "top",  
    theme_advanced_toolbar_align : "left",  
    theme_advanced_statusbar_location : "bottom",  
    theme_advanced_resizing : true,  
  
    // Example content CSS (should be your site CSS)  
    content_css : "css/example.css",  
  
    // Drop lists for link/image/media/template dialogs  
    template_external_list_url : "js/template_list.js",  
    external_link_list_url : "js/link_list.js",  
    external_image_list_url : "js/image_list.js",  
    media_external_list_url : "js/media_list.js",  
  
    // Replace values for the template plugin  
    template_replace_values : {  
    username : "Some User",  
    staffid : "991234"  
    }  
    });  
    </script>  
    <body>  
    <!-- form sends content to ... -->  
    <form method="post" action="add.php">  
       <tr><p>Headline:  
       <?php  
       if ($_GET['edit'])  
       {  
          $name = mysql_real_escape_string($_GET['edit']);  
       }  
       $select = ("SELECT name, headline, content FROM pagecontent WHERE name='$name'");  
       $query = mysql_query($select) or die (mysql_error());  
       $ds = mysql_fetch_object($query);  
       echo '<td><input type="text" maxlength="50" name="headline" value="'.$ds->headline.'"></td>  
       </tr>  
       <tr><td><textarea name="content" cols="5" rows="20" >'.$ds->content.'</textarea></td>  
       </tr>  
       <td><input type="submit" value="Save" /></td>  
       <td><input type="hidden" name="'.$name.'"></td>';  
  
       ?>  
    </form>  
    <td><tr><a href="/admin.php"><b>Back</b></a></tr></td>  
    </body>  
       <!-- end content -->  
    </div>  
       <!-- end page -->  
    </div>  
    <?php  
    include 'navi.php';  
    include 'footer.php';  
    ?>  
  
    </html>
  1. Bitte teste, ob die Datenbankverbindung funktioniert und insbesondere Schreibrechte auf die Tabelle vorliegen.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. Danke für die Idee. Ich greife durch /admin.php?edit=seite darauf zu. In der admin.php liegt außerdem die init.php die die Verbindung zu MySql herstellt. Wie kann ich herausfinden, ob denn Schreibrechte auf die Tabelle vorliegen?

  2. Hi,

    Ich habe diesen Code, jedoch will er die DB nicht updaten.

    Boeser "er". Scheint ein schlimmer Kerl zu sein - wenn man mal ueberlegt, in wie vielen Problembeschreibungen hier "er" nicht so macht wie "er" soll ...

    if($_POST['submit'])
    {

    Du hast natuerlich ueberprueft, ob dieser Zweig auch abgearbeitet wird?

    $adden = mysql_query("UPDATE pagecontent
       SET
       headline='$headline', content='$content' WHERE name='$name'") or die (mysql_error());

    Und mysql_error meldet was?

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. er, da ich ja nicht jedesmal Datenbank auschreiben will.
      Ist sie besser? Vielleicht nicht schlecht in der emazipierenden Zeit.

      Wie soll ich überprüfen, ob Submit abgearbeitet wird? Wenn man es drückt, ist es ja wohl so. Hatte vorher if(isset($_POST['submit'])) dort stehen.

      Mysql_error meldet rein gar nichts.

      1. Hi,

        Wie soll ich überprüfen, ob Submit abgearbeitet wird?

        In dem du in den entsprechenden If-Zweig einfach mal 'ne Kontrollausgabe einbaust ...?

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. hey,

          Ja, ist dann doch einfach if(isset($_POST['submit']))

          Falls dann Submit gedrückt wurde, soll er (der PHP Interpreter) die Datenbank updaten.
          Falls nicht, macht er eben nichts und zeigt den Rest des Codes an.

          1. Hi,

            Ja, ist dann doch einfach if(isset($_POST['submit']))

            Mann, du Floete sollst in den Block dahinter ein echo "irgendwas" setzen, damit du *kontrollieren* kannst, ob der Scriptablauf auch wirklich dem entspricht, was du annimmst - kann doch nicht so schwer zu kapieren sein?

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Du musst jemanden aber nicht gleich beleidigen, wenn man nicht sofort versteht was du sagen willst.
              Egal wie ich ein Echo setze, es wird nichts angezeigt.

              1. Hi,

                Egal wie ich ein Echo setze, es wird nichts angezeigt.

                Und was schliesst du daraus ...?

                Dann ist wohl als naechstes mal eine Kontrolle des Inhaltes von $_POST mittels print_r/var_dump faellig.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
              2. Mahlzeit jürgen,

                Du musst jemanden aber nicht gleich beleidigen, wenn man nicht sofort versteht was du sagen willst.

                Es handelt sich bei dem, was ChrisB vorschlug, ja nur um absolute Grundlagen der Softwareentwicklung - wäre wirklich zu viel verlangt, das von Dir zu verlangen, stimmt.

                Egal wie ich ein Echo setze, es wird nichts angezeigt.

                Dann wird die Stelle, an der Du das echo einbaust, anscheinend nicht abgearbeitet. Was sagt Dir das nun?

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Trotzdem ist dies kein Grund. Aber darum soll es ja jetzt nicht gehen.

                  Ist klar, es wird dann einfach nicht abgesendet. Habe es geändert und jetzt ist es so, dass alle Zeilen der Tabelle bis auf die erste geupdated werden.
                  Dabei soll er es nur dort tun, wo name = admin.php?edit=name

                      if ($_POST['submit'])  
                      {  
                    
                               $adden = mysql_query("UPDATE pagecontent  
                               SET headline = '".mysql_real_escape_string($_POST['headline'])."', content = '".mysql_real_escape_string($_POST['content'])."' WHERE name = '".mysql_real_escape_string($_POST['name'])."'") or die (mysql_error());  
                      if($adden)  
                      {  
                         echo 'Successfully added.';  
                      }  
                      else {  
                         echo 'Could not be added.';  
                      }  
                      }  
                      ?>  
                      <!-- start page -->  
                      <div id="page">  
                         <!-- start content -->  
                         <div id="content">  
                      <script language="javascript" type="text/javascript" src="../tinymce/jscripts/tiny_mce/tiny_mce.js"></script>  
                      <script language="javascript" type="text/javascript">  
                      tinyMCE.init({  
                      // General options  
                      mode : "textareas",  
                      theme : "advanced",  
                      plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager",  
                    
                    
                      // Theme options  
                      theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",  
                      theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",  
                      theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",  
                      theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",  
                      theme_advanced_toolbar_location : "top",  
                      theme_advanced_toolbar_align : "left",  
                      theme_advanced_statusbar_location : "bottom",  
                      theme_advanced_resizing : true,  
                    
                      // Example content CSS (should be your site CSS)  
                      content_css : "css/example.css",  
                    
                      // Drop lists for link/image/media/template dialogs  
                      template_external_list_url : "js/template_list.js",  
                      external_link_list_url : "js/link_list.js",  
                      external_image_list_url : "js/image_list.js",  
                      media_external_list_url : "js/media_list.js",  
                    
                      // Replace values for the template plugin  
                      template_replace_values : {  
                      username : "Some User",  
                      staffid : "991234"  
                      }  
                      });  
                      </script>  
                      <body>  
                      <!-- form sends content to ... -->  
                      <form method="post" action="add.php">  
                         <tr><p>Headline:  
                         <?php  
                         if ($_GET['edit'])  
                         {  
                            $name = mysql_real_escape_string($_GET['edit']);  
                         }  
                         $select = ("SELECT name, headline, content FROM pagecontent WHERE name='$name'");  
                         $query = mysql_query($select) or die (mysql_error());  
                         $ds = mysql_fetch_object($query);  
                         echo '<td><input type="text" maxlength="50" name="headline" value="'.$ds->headline.'"></td>  
                         </tr>  
                         <tr><td><textarea name="content" cols="5" rows="20" >'.$ds->content.'</textarea></td>  
                         </tr>  
                         <td><input name="submit" type="submit" value="Save"></td>  
                         <td><input type="hidden" name="'.$name.'"></td>';  
                    
                         ?>  
                      </form>  
                      <td><tr><a href="/admin.php"><b>Back to Admin Panel</b></a></tr></td>  
                      </body>  
                         <!-- end content -->  
                      </div>  
                         <!-- end page -->  
                      </div>  
                      <?php  
                      include 'navi.php';  
                      include 'footer.php';  
                      ?>  
                    
                      </html>
                  

                  Wenn ich den Quellcode öffne, zeigt er jedoch, dass das hidden-Feld den richtigen Name-Input hat.

                  1. Mahlzeit jürgen,

                    Ist klar, es wird dann einfach nicht abgesendet.

                    Was wird nicht abgesendet?

                    Habe es geändert und jetzt ist es so, dass alle Zeilen der Tabelle bis auf die erste geupdated werden.

                    Was hast Du wie geändert?

                    Dabei soll er es nur dort tun, wo name = admin.php?edit=name

                    Was soll wer tun, wenn name = admin.php?edit=name (was auch immer diese Bedingung heißen mag)?

                    Könntest Du vielleicht mal in allgemein üblicher Sprache und ohne auf irgendeine Stelle Deines Spaghetticodes bezug zu nehmen einfach beschreiben, was passieren soll - und was stattdessen passiert?

                    Es kann nämlich keiner Deiner Leser in Deinen Kopf schauen, Deine Gedanken lesen, auf Deinen Bildschirm schauen ... und funktionierende Glaskugeln sind auch eher selten.

                    Könntest Du Dir weiterhin bitte angewöhnen, nur den relevanten Quellcode zu zeigen und nicht immer Dein gesamtes Skript hier reinzukopieren?

                    <?php
                           if ($_GET['edit'])
                           {
                              $name = mysql_real_escape_string($_GET['edit']);
                           }
                           $select = ("SELECT name, headline, content FROM pagecontent WHERE name='$name'");

                    Wozu die Klammern?

                    $query = mysql_query($select) or die (mysql_error());
                           $ds = mysql_fetch_object($query);
                           echo '<td><input type="text" maxlength="50" name="headline" value="'.$ds->headline.'"></td>
                           </tr>
                           <tr><td><textarea name="content" cols="5" rows="20" >'.$ds->content.'</textarea></td>
                           </tr>
                           <td><input name="submit" type="submit" value="Save"></td>
                           <td><input type="hidden" name="'.$name.'"></td>';

                    Soll da der Inhalt der Variablen $name stehen? Oder vielleicht der Inhalt der Spalte name aus der Datenbank (den Du zwar abfragst, aber nicht ausliest oder gar weiterverarbeitest)?

                    Wenn ich den Quellcode öffne, zeigt er jedoch, dass das hidden-Feld den richtigen Name-Input hat.

                    Aha. Nochmals: was willst Du EIGENTLICH?

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|