php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.06.2008, 16:53  
Neuer Benutzer
 
Registriert seit: 18.06.2008
Beiträge: 9
taucher befindet sich auf einem aufstrebenden Ast
Standard Problem mit Update

irgendwie bin ich zu dumm, datensäte per UPDATE zu ändern.

Mit den beiden hier geposteten Dateien schaffe ich es nur, bei einer Änderung vom wert titel den titel zu löschen, egal was ich eingebe. Kann mir hier jemand ein wenig unter die arme greifen?

Die datei "ändern.php" sieht wie folgt aus:

PHP-Code:
<?php
include "../config.php";
include_once(
"fckeditor/fckeditor.php") ;
error_reporting(E_ALL);
$datensatz = ($_GET['daten']);         // Gültigkeit prüfen

$query_tauchplatz "
    SELECT
        autor,    
       status,
        titel,        
        inhalt,
        id,
        kategorie
    FROM 
      tfadatenbank
    WHERE
        id = $datensatz"
;
$tauchplatz mysql_query($query_tauchplatz) or die(mysql_error());

    
while(
$ausgabe mysql_fetch_assoc($tauchplatz))
{
echo 
"<a href='datenbank.php?id=$ausgabe[id]'>zum prufen</a>";
?>
<form method="post" action="dbaendern.php?id=<?php echo $ausgabe["id"]; ?>">

Autor: <input type=text name="[autor]" size= 30 value="<?php echo $ausgabe["autor"]; ?>">
Status (1 = aktiv, 2 = in Bearbeitung): <input type=text name="[status]" size= 5 value="<?php echo $ausgabe["status"]; ?>">
<br>
<br>
Titel: <input type=text name="[titel]" size= 30 value="<?php echo $ausgabe["titel"]; ?>">
<br>
<br>
Textinhalt<br>


<?php
$oFCKeditor 
= new FCKeditor('4') ;
$oFCKeditor->BasePath    'fckeditor/' ;
$oFCKeditor->Value $ausgabe['inhalt'] ;
$oFCKeditor->Create() ;
?>
<br><br>
Kategorie: <input type=text name="[kategorie]" size= 30 value="<?php echo $ausgabe["kategorie"]; ?>">
<input type=submit name="SUBMIT" value="Datensatz &auml;ndern">
</form>
<?php

?>
und die datei "dbaendern.php" so:

PHP-Code:
<?php
include "../config.php";
$datensatz = ($_GET['id']);         // Gültigkeit prüfen

$dbanfrage "
    UPDATE 
        tfadatenbank 
    SET 
        autor = '$_POST[autor]',
        status = '$_POST[status]',
        titel =  '$_POST[titel]',
        inhalt = '$_POST[inhalt]',
        kategorie = '$_POST[kategorie]'
    WHERE 
        id = $datensatz"
;

if (
mysql_db_query ($dbname$dbanfrage$dbverbindung)) {
print (
"Datenbankeintrag erfolgreich.");
} else {
print (
"Es traten folgende Probleme auf. ");
mysql_query($sql) or die(mysql_error()); 
}

mysql_close ($dbverbindung);

?>
<a href="uebersichtaenderbar.php">Zurück zur &Uuml;bersicht</a><br>
Als Meldung kommt "Datenbankeintrag erfolgreich", eine Änderung, ausser dass der Titel gelöscht wird kommt jedoch nicht.
taucher ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.06.2008, 17:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bitte mache Dich mit den Grundlagen der Formuarverarbeitung mit PHP vertraut. Sowohl die Nutzung des Input name-Attributs als auch die Stringverknüpfung zur Query sind fehlerhaft.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.06.2008, 17:50  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Hallo!

Du versuchst ein Update nach einer id zu machen aber du übergibst die id nicht im Formular!

Füge das mal ein

PHP-Code:
<?php
//ins formular einfügen
<input type="hidden" name="id" value="<?php echo $ausgabe['id'] ?>">
 
//so dein update statement ändern
WHERE
        id 
$_POST['id']";
?>
So müsste das klappen!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 29.06.2008, 17:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Doch, die id wird via GET übergeben.
Aber das ist falsch:
Zitat:
"... titel = '$_POST[titel]', ..."
und sowas auch
Zitat:
<input type=text name="[kategorie]" size= 30
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.06.2008, 18:38  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ja ok stimmt. Naja ich habe es so gelernt das man eine id im Formular mit übergibt.

$datensatz = ($_GET['id']);

Die Klammern sind da überflüssig und ich würde an seiner Stelle aber auch noch sichern das id wirklich eine Zahl ist!

Also so

$datensatz = intval($_GET['id'])

Sonst kann man damit jene Menge Unsinn anstellen und SQL-Injections sind bei ihm auch sehr Willkommen!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 29.06.2008, 21:24  
Neuer Benutzer
 
Registriert seit: 18.06.2008
Beiträge: 9
taucher befindet sich auf einem aufstrebenden Ast
Standard

Hm, die id-Übergabe funtkioniert mit $_GET, das muss ja auch funktionieren, da ja der Datensatz wirklich geändert wird. Wo ich den gravierenden Fehler habe ist entweder bei der Variablenbezeichnung schon im Formular oder beim eintrag.

Hm - und ich gestehe, ich nehme an, das ich den Fehler in beiden mache.
Wo kann ich mich denn über diese Formularverarbeitung am besten schlau machen? Denke das das Tutorial auf peterkropff.de schon fast zu weit geht, und bei schattenbaum dürfte irgendwas fehlen, das ich dazu benötigen würde.
taucher ist offline  
Alt 01.07.2008, 05:50  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,
dein Skript ist ziemlich unsicher. Was machst du wenn ich $_GET["id"] = "1 OR 1 = 1" uebergebe? Dann kann ich deine komplette Tabelle zuruecksetzen.

Schau dir mal folgende Funktionen und PHP-Einstellungen an:
PHP: error_reporting - Manual
PHP: mysql_real_escape_string - Manual

Ersteres zeigt die Fehler im Skript an, wenn du es auf E_ALL | E_STRICT setzt. Ich denke das wurde aber bereits in der Foren-Ankuendigung erklaert, die du wohl erstmal lesen solltest.

Auch ein HTML-Validator wuerde guttun:
https://addons.mozilla.org/de/firefox/addon/249

Ich meine warum sollten wir die Fehler suchen, wenn sie von einer Maschine gefunden werden koennten ..
__________________
"Nuschel ich?" - "Was?"

Geändert von Chriz (01.07.2008 um 05:52 Uhr).
Chriz ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
update sql anweisung - problem Mach!N3 PHP Tipps 2006 6 09.09.2006 18:44
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
db update problem annaloga PHP Tipps 2006 4 11.06.2006 22:25
datenbank update via install.php problem annaloga Datenbanken 6 31.05.2006 10:59
Problem bei Update PHP Tipps 2005-2 10 13.09.2005 15:50
Update Befehl Problem! Datenbanken 9 16.08.2005 18:01
[Erledigt] Problem mit Backslash Patrick Schwarz PHP Tipps 2005-2 5 26.07.2005 09:54
[Erledigt] Problem mit User/Group: nobody(99)/99 Server, Hosting und Workstations 3 09.07.2005 15:31
problem mit UPDATE query nautiluS Datenbanken 4 17.03.2005 10:22
[Erledigt] Problem mit UPDATE Datenbanken 3 22.02.2005 17:47
Update Problem beim zurück schreiben... PHP Tipps 2005 3 09.02.2005 12:50
[Erledigt] Hilfe - Problem mit Warenkorb PHP Tipps 2004 1 26.11.2004 11:32
php update PHP Tipps 2004 2 24.09.2004 01:07
[Erledigt] UPDATE Syntax problem Datenbanken 6 17.08.2004 16:18
mysql !!! Update problem!!! PHP Tipps 2004 2 18.07.2004 20:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum