DB updaten: Fehler
jürgen
- php
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>
Bitte teste, ob die Datenbankverbindung funktioniert und insbesondere Schreibrechte auf die Tabelle vorliegen.
Gruß, LX
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?
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
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.
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
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.
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
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.
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
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
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.
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