Hi, wollte eine Funktion einbauen, die einen Eintrag in der Datenbank ändert.
Habe dazu unter jedem Newseintrag(die mit einer Schleife halt generiert werden) versteckte Felder hinzugefügt:
Klickt man auf den submit button wird man zu folgender Funktion weitergeleitet:
So, da kann man dann die Einträge verändern. Bis hierer funktioniert auch alles, er zeigt auch den Inhalt richtig an.
Jetzt leite ich dann weiter auf die eingentliche UPDATE funktion
Bloß hier kommt folgende Fehlermeldung im Browser :
also liegt der Fehler hier
Aber ich find ihn nicht. Ist der UPDATE Befehl vllt falsch?
Danke schon mal
Lg
Dennis
Habe dazu unter jedem Newseintrag(die mit einer Schleife halt generiert werden) versteckte Felder hinzugefügt:
PHP:
//Versteckte Felder um Eintrag zu ändern
echo '<section class="news-box" style="min-height: 10px;opacity: .8; height: 21px; margin-top: -9px; ">
<form action="index.php?action=update-news-form" method="post">
<input name="id" type="hidden" value="' . $row['ID'] . '">
<input type="hidden" name="titel" value="' . $row['titel'] . '">
<textarea name="inhalt" class="hidden">' . $row['inhalt'] . '</textarea>
<input type="submit" value="Eintrag ändern" style="background-color: gray; border: none; width: 100%; font-size: 16px; font-weight: bold; color: #fff; display: block; cursor: pointer;">
</form>
</section>';
Klickt man auf den submit button wird man zu folgender Funktion weitergeleitet:
PHP:
<?php
function update_news_form() {
// Erst mal prüfen, ob wir eingeloggt sind
if( !isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] != true )
{
// Nicht eingeloggt -> Login-Formular anzeigen
display_login_form();
}
else
{
if (isset($_POST['titel']) && isset($_POST['inhalt']) && isset($_POST['id'])) {
$titel = $_POST['titel'];
$inhalt = $_POST['inhalt'];
$id = $_POST['id'];
?>
<form name="newseintragupdate" action="index.php?action=update-news" method="post" enctype="multipart/form-data">
<fieldset id="newseintragupdate"><legend>Newseintrag erstellen</legend>
<label>Titel:</label> <input cols="5" rows="10" id="titelupdate" type="text" name="titel" value="<?php echo $titel; ?>" /><br/>
<label>Inhalt:</label> <textarea name="inhalt" id="inhaltupdate" name="inhalt"><?php echo $inhalt; ?></textarea><br/>
<label>Bild:</label> <input id="uploadupdate" type="file" name="bild"/><br/>
<input name="ID" type="hidden" value="<?php echo $id; ?>"><br>
<fieldset id="abbrechen" onclick="location.href='index.php?action=news';">Abbrechen</fieldset>
<input class="speichern" type="submit" name="news_submit" value="Speichern"/>
</fieldset>
<br>
</form>
<?php
} else {
echo "Fehler";
}
}
}
?>
So, da kann man dann die Einträge verändern. Bis hierer funktioniert auch alles, er zeigt auch den Inhalt richtig an.
Jetzt leite ich dann weiter auf die eingentliche UPDATE funktion
PHP:
<?php
function update_news()
{
// Erst mal prüfen, ob wir eingeloggt sind
if( !isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] != true )
{
// Nicht eingeloggt -> Login-Formular anzeigen
display_login_form();
}
else
{
// Eingeloggt -> News-Daten prüfen
if(empty($_POST['titel']) || empty($_POST['inhalt']) )
{
echo "<fieldset class='fehler'>Der Titel und der Inhalt fehlt! Bitte eintragen</fieldset>";
update_news_form();
}
else
{
// Eingaben entschärfen
$titel = mysql_real_escape_string($_POST['titel']);
$inhalt = mysql_real_escape_string($_POST['inhalt']);
$inhalt = nl2br($_POST['inhalt']);
$id = $_POST['ID'];
$bild = null;
// Wurde ein Bild hochgeladen?
if( isset($_FILES['bild']['size']) && $_FILES['bild']['size'] > 0 && getimagesize($_FILES['bild']['tmp_name']) )
{
$bild = mysql_real_escape_string( './bilder/' . $_FILES['bild']['name'] );
// Achtung! Der Ordner bilder muss existieren! Evtl. vorher anlegen!
move_uploaded_file( $_FILES['bild']['tmp_name'], $bild );
$query = sprintf( "UPDATE 'news' SET 'titel' = '" . $titel . "', 'inhalt' = '" . $inhalt . "', 'bild' = '" . $bild . "' WHERE 'id' = '" . $id . "'");
}
else
{
$query = sprintf( "UPDATE 'news' SET 'titel' = '" . $titel . "', 'inhalt' = '" . $inhalt . "' WHERE 'id' = '" . $id . "'");
}
// Datenbank-Query zusammen bauen -> Simpler INSERT INTO
// Query ausführen und prüfen, ob alles ok war
if( ! mysql_query($query) )
{
echo "Die News konnte nicht korrekt aktualisiert werden! Fehlermeldung: " . mysql_error() . "<br/>";
update_news_form();
}
else
{
?>
<fieldset class="erfolg">Der Newseintrag wurde erfolgreich geändert.</fieldset>
<?php
include ('news.php');
}
}
}
}
?>
Bloß hier kommt folgende Fehlermeldung im Browser :
Die News konnte nicht korrekt aktualisiert werden! Fehlermeldung: 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 ''news' SET 'titel' = 'Nummer 3', 'inhalt' = 'Nummer 3.dfgd' WHERE 'id' = '38'' at line 1
Fehler
also liegt der Fehler hier
PHP:
<?php
...
$query = sprintf( "UPDATE 'news' SET 'titel' = '" . $titel . "', 'inhalt' = '" . $inhalt . "', 'bild' = '" . $bild . "' WHERE 'id' = '" . $id . "'");
}
else
{
$query = sprintf( "UPDATE 'news' SET 'titel' = '" . $titel . "', 'inhalt' = '" . $inhalt . "' WHERE 'id' = '" . $id . "'");
}
...
?>
Aber ich find ihn nicht. Ist der UPDATE Befehl vllt falsch?
Danke schon mal
Lg
Dennis