Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Update funktioniert nicht [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Update funktioniert nicht


 
someone94
10-02-2010, 19:26 
 
Habe Probleme mit einem Update. Finde den Fehler nicht, es wird nix geupdatet. Hoffe auf Hilfe.

<?php
session_start();
?>

<html>
<head>

<meta http-equiv="Content-Language" content="de">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Neue Seite 1</title>


<link rel="stylesheet" href="http://calvano.bplaced.de/lmain.css">

</head>


<body>

<p align="center" class="head">Futterpläne</p>
Du kannst jedem deiner Pferde einen eigenen Futterplan erstellen. Dieser hilft den Stallburschen und Pflegern auf Calvano zu
wissen wie, wann und womit dein Pferd gefüttert wird. Erstellst du keinen
Futterplan wird das Standartfutter verwendet.
<br><br>
Wähle aus von welchem deiner Pferde du den Plan ändern möchtest.


<br>
<form action=futterplanerstellen.php method=post>
<select name=pname>

<?php
include("db.php");
include("functions.inc.php");
$Ergebnisone = mysql_query("SELECT name FROM mitglieder WHERE id = ".$_SESSION["login"]);
while($row = mysql_fetch_object($Ergebnisone))
{
$besitzername = $row->name;
}


$Ergebnis = mysql_query("SELECT * FROM pferd WHERE besitzer = '".$besitzername."'");

if (mysql_num_rows($Ergebnis) == 0) {
echo 'Fehler.';
}

else {
while($Data = mysql_fetch_array($Ergebnis)) {

echo "
<option>$Data[name]</option>

";
{
$pname=$_REQUEST['pname'];
}
}
}

echo mysql_error();

?>

</select>
<input type=submit name=send value=Auswählen>
</form>
<br>

<?php
include("db.php");
if(isset($_SESSION["login"])) { // Wenn eingeloggt..

{
$pname=$_REQUEST['pname'];
}

echo "
Du hast $pname ausgewählt.

";


$pname=$HTTP_POST_VARS['pname'];

refresh($_SESSION["login"]); // refresht
if(isset($_REQUEST["sentt"])) {


$aendern = ("UPDATE pferd Set Futterplan = '".strip_tags($_REQUEST["Futterplan"])."' WHERE name='$pname'");
$update = mysql_query($aendern);



}

$abfrage = "SELECT * FROM pferd WHERE name = '".$pname."'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))

{ // Formular ->
echo mysql_error();

?>

<center>
<table border="0" width="300">
<tr>
<td><img border="0" src="http://calvano.bplaced.de/bilder/<?= $row->vorschaupic ?>" align="center"></td>
<td>
<form action=futterplanerstellen.php method=post enctype="multipart/form-data">
<textarea name="Futterplan" cols=38 rows=8>
<?= $row->Futterplan ?>
</textarea><br>
<input type=submit name=sentt value=Neu>
</form>
</td>
</tr>
</table>
</center>

<br>
<br>
<br>

Der Futterplan wird automatisch geändert. Einmal klicken genügt.
<?php

include("footer.php");


}
}
echo mysql_error();
?>

 
Quetschi
10-02-2010, 20:58 
 
Boah - mal ganz ehrlich - blickst du selbst bei dem Code-Chaos durch?:goth:

Lass dir deine Variable $aendern mal einfach per echo ausgeben.

 
someone94
10-02-2010, 21:15 
 
Kommt folgendes:

UPDATE pferd Set Futterplan = 'Morgens: Heu (mittlere Portion) blaaablaaahhhh' WHERE name=''

Der Name wird also gar nicht erst erkannt !?
Soetwas hatte ich mir schon gedacht, denn gebe ich bei


$aendern = ("UPDATE pferd Set Futterplan = '".strip_tags($_REQUEST["Futterplan"])."' WHERE name='$pname'");
$update = mysql_query($aendern);


Anstatt $pname manuell etwas ein funktioniert das Update sofort.

 
h3ll
10-02-2010, 21:20 
 
Kommt folgendes:

UPDATE pferd Set Futterplan = 'Morgens: Heu (mittlere Portion) blaaablaaahhhh' WHERE name=''

Der Name wird also gar nicht erst erkannt !?
Soetwas hatte ich mir schon gedacht, denn gebe ich bei


$aendern = ("UPDATE pferd Set Futterplan = '".strip_tags($_REQUEST["Futterplan"])."' WHERE name='$pname'");
$update = mysql_query($aendern);


Anstatt $pname manuell etwas ein funktioniert das Update sofort.

Dann ist $pname offenbar leer.

Du solltest die Benutzerwerte übrigens mit mysql_real_escape_string() absichern, weil sonst jeder beliebige Benutzer Befehle in der Datenbank ausführen kann (auslesen, verändern, löschen, usw.).

Dein HTML-Code ist übrigens total veraltet und fehlerhaft, was vermutlich daher rührt, dass er mit dem Schrottprogramm Frontpage erstellt wurde.

 
AmicaNoctis
10-02-2010, 21:24 
 
Hallo,

strip_tags hat in einer SQL-Abfrage nichts zu suchen. Informier dich mal über Kontextwechsel (http://aktuell.de.selfhtml.org/artikel/php/kontextwechsel/), SQL-Injection und verfolg mal deine Variablen gedanklich im Code. Wenn deren Initialisierung bedingt ist, sollte auch deren Verwendung bedingt sein.

Gruß,

Amica

 
Quetschi
10-02-2010, 21:24 
 
Ja - und damit wollt ich dich dezent auf folgendes hinweisen:

$HTTP_POST_VARS ist veraltet: PHP: $_POST - Manual (http://de3.php.net/manual/de/reserved.variables.post.php) ;)

 
someone94
11-02-2010, 16:14 
 
Habs geändert / ersetzt.
Die $pname wird immernoch nicht erkannt. Warum, ist mir aber ein Rätsel. Denn wenn ich $pname 2 Zeilen vor dem Update mit echo ausgebe wird mir das richtige angezeigt. :goth:
Warum ist $pname denn beim updaten leer ... Ich weiß nicht mehr weiter.

Zum besseren Verständnis:

Alle Tiere im eigenen Besitz werden angezeigt man kann eines auswählen.
http://i.imagehost.org/0209/schritt1.jpg
Dann erscheint das was bei dem Pferd unter "Futterplan" eingetragen ist in einer Textarea und man kanns nach belieben ändern.
http://f.imagehost.org/0256/schritt2.jpg
Klickt man aber anschließend auf Ändern wird $pname plötzlich nicht mehr erkannt (im Screen wird Variable aendern ausgegeben)
http://i.imagehost.org/0382/schritt3.jpg

Ich hoffe jemand findet den Fehler :(
Der code im Moment:
<?php
session_start();
?>

<html>
<head>

<meta http-equiv="Content-Language" content="de">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Neue Seite 1</title>


<link rel="stylesheet" href="http://calvano.bplaced.de/lmain.css">

</head>


<body>

<p align="center" class="head">Futterpläne</p>
Du kannst jedem deiner Pferde einen eigenen Futterplan erstellen. Dieser hilft den Stallburschen und Pflegern auf Calvano zu
wissen wie, wann und womit dein Pferd gefüttert wird. Erstellst du keinen
Futterplan wird das Standartfutter verwendet.
<br><br>
Wähle aus von welchem deiner Pferde du den Plan ändern möchtest.


<br>
<form action=futterplanerstellen.php method=post>
<select name=pname>

<?php
include("db.php");
include("functions.inc.php");
$Ergebnisone = mysql_query("SELECT name FROM mitglieder WHERE id = ".$_SESSION["login"]);
while($row = mysql_fetch_object($Ergebnisone))
{
$besitzername = $row->name;
}


$Ergebnis = mysql_query("SELECT * FROM pferd WHERE besitzer = '".$besitzername."'");

if (mysql_num_rows($Ergebnis) == 0) {
echo 'Fehler.';
}

else {
while($Data = mysql_fetch_array($Ergebnis)) {

echo "
<option>$Data[name]</option>

";
{
$pname=$_REQUEST['pname'];
}
}
}

echo mysql_error();

?>

</select>
<input type=submit name=send value=Auswählen>
</form>
<br>

<?php
include("db.php");
if(isset($_SESSION["login"])) { // Wenn eingeloggt..

{
$pname=$_REQUEST['pname'];
}

echo "
Du hast -$pname- ausgewählt.

";





if(isset($_REQUEST["sentt"])) {




$aendern = ("UPDATE pferd Set Futterplan = '".mysql_real_escape_string($_REQUEST["Futterplan"])."' WHERE name='$pname'");
$update = mysql_query($aendern);

}


echo "
$aendern

";



$abfrage = "SELECT * FROM pferd WHERE name = '".$pname."'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))

{ // Formular ->
echo mysql_error();

?>

<center>
<table border="0" width="300">
<tr>
<td><img border="0" src="http://calvano.bplaced.de/bilder/<?= $row->vorschaupic ?>" align="center"></td>
<td>
<form action=futterplanerstellen.php method=post enctype="multipart/form-data">
<textarea name="Futterplan" cols=38 rows=8>
<?= $row->Futterplan ?>
</textarea><br>
<input type=submit name=sentt value=Erstellen/Ändern>
</form>
</td>
</tr>
</table>
</center>

<br>
<br>

Der Futterplan wird automatisch geändert. Einmal klicken genügt.
<?php

include("footer.php");


}
}
echo mysql_error();
?>

 
Quetschi
11-02-2010, 16:52 
 
Ehrlich gesagt hab ich nicht allzuviel Lust mir diese morbide Code-Einrückungsorgie genauer durchzusehen und ich denke, dass sich kaum andere hier finden werden, die dazu Lust haben.

Lass dir mal auch ein var_dump($_REQUEST); ausgeben.

 
AmicaNoctis
11-02-2010, 16:59 
 
Ich hoffe jemand findet den Fehler :(

<spass>
Fehler gefunden in Zeile 50.

047| $Ergebnis = mysql_query("SELECT * FROM pferd WHERE besitzer = '".$besitzername."'");
048|
049| if (mysql_num_rows($Ergebnis) == 0) {
050| echo 'Fehler.';
051| }
052|


:)
</spass>

Quetschi hat recht. Solchen Code sieht man sich wirklich nicht gerne an.

Gruß,

Amica


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:51 Uhr.