Wie am besten lösen?

Das heisst das $userid nicht abgefüllt ist.

Woher sollte dieser Inhalt kommen? ev. $userid = $_POST['userid']
Und welches FOrmat hat die id in der Datenbank?
 
Also
folgenden fehler hab ich glaub ich gefunden

Code:
<?php
session_start();
if(!session_is_registered('user') || $_SESSION['user'] == "") {
	header("location:index.php");
	die;
}
require("connect.inc.php");

$userid = false;

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['id']) && ctype_digit($_POST['id']))
    {
        $userid = $_POST['id'];

        
    }else{
	
	
		
/////eintragung in die MYSQL
    $dname = $_POST['dname'];
    $link = $_POST['link'];
	$format = $_POST['format'];
	

  

 
	
     $aendern = "UPDATE Download
	 	Set
			`dname` = '$dname',
			`link` = '$link',
	 		`format` = '$format',
	  WHERE `id` = $userid";
     $update = mysql_query($aendern);	
	 echo "$aendern";
		
///fertig der eintragung
    

        if(KEINE_FEHLER)
        {
            // Weiterleitung auf die Benutzerliste, wenn keine Fehler aufgetaucht sind, ansonsten nochmal das Formular anzeigen.
            echo "$aendern";
			//header('Location: sichere_seite.php?page=down_erfolg');
            //exit;
        }
    }
    //  den else-Teil können wir uns sparen. Wenn eine ungültige ID übergeben wurde, wird $userid nicht verändert. Er springt also automatisch in den unteren else-Zweig "Ungültige Anfrage"
}
elseif(isset($_GET['id']) && ctype_digit($_GET['id']))
{
    $userid = $_GET['id'];
}

if($userid !== false)
{
    $sql = "SELECT dname,link,format FROM `Download` WHERE `id` = ".$userid;
    $result = mysql_query($sql);
    if(mysql_num_rows($result) == 1)
    {
        $userdata = mysql_fetch_object($result);
?>		
		Formular
<?php
		
        // Formular aufbauen und Felder mit den Daten füllen
        // als action-Pfad wieder den Dateinamen wählen (z.B. site.php?page=benutzer_bearbeiten)
        // ein (hidden-)Feld mit der BenutzerID erstellen das id heißt
        // falls es beim abschicken (POST-TEIL) Fehler gab, kannst du eventuell die Daten aus dem POST nehmen, anstatt die Daten aus der Datenbank. Das ist dir überlassen ;)
    }
    else
    {
        // Fehlermeldung: Benutzer nicht gefunden!
    }
}
else
{
    // Fehlermeldung: Ungültige Anfrage
}
mysql_error()
?>


Also dort wo ich den MYSQL eintrag setzen möchte ist die variable USERID ja nochgarnicht gefüllt eigendlich erst weiter unten oder ? somit müsste ich den eintrag nach unten setzen oder ?...

lg
 
In Zeile 15 findest du "$userid = $_POST['id']". Ich hate auch gschrieben, dass direkt da danach, also noch in dem IF, dein Code zum Eintragen rein muss. Das "KEINE_FEHLER" habe ich nun auch mal angepasst ;)

PHP:
<?php
session_start();
if(!session_is_registered('user') || $_SESSION['user'] == "") {
	header("location:index.php");
	die;
}
require("connect.inc.php");

$userid = false;

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['id']) && ctype_digit($_POST['id']))
    {
        $userid = $_POST['id'];

		/////eintragung in die MYSQL
		$dname = $_POST['dname'];
		$link = $_POST['link'];
		$format = $_POST['format'];
		
		 $aendern = "UPDATE Download
			SET
				`dname` = '".$dname."',
				`link` = '".$link."',
				`format` = '".$format."',
		  WHERE `id` = ".$userid;
		 $update = mysql_query($aendern);				
		///fertig der eintragung
		
		// Weiterleitung auf die Benutzerliste, wenn keine Fehler aufgetaucht sind, ansonsten nochmal das Formular anzeigen.
		echo "$aendern";
		if($update)
		{
			//header('Location: sichere_seite.php?page=down_erfolg');
			//exit;
		}
		else
		{
			// Query fehlgeschlagen!!
		}
    }
}
elseif(isset($_GET['id']) && ctype_digit($_GET['id']))
{
    $userid = $_GET['id'];
}

if($userid !== false)
{
    $sql = "SELECT dname,link,format FROM `Download` WHERE `id` = ".$userid;
    $result = mysql_query($sql);
    if(mysql_num_rows($result) == 1)
    {
        $userdata = mysql_fetch_object($result);
?>		
		Formular
<?php
		
        // Formular aufbauen und Felder mit den Daten füllen
        // als action-Pfad wieder den Dateinamen wählen (z.B. site.php?page=benutzer_bearbeiten)
        // ein (hidden-)Feld mit der BenutzerID erstellen das id heißt
        // falls es beim abschicken (POST-TEIL) Fehler gab, kannst du eventuell die Daten aus dem POST nehmen, anstatt die Daten aus der Datenbank. Das ist dir überlassen ;)
    }
    else
    {
        // Fehlermeldung: Benutzer nicht gefunden!
    }
}
else
{
    // Fehlermeldung: Ungültige Anfrage
}
mysql_error()
?>
 
mach ein echo $aendern; und prüfe die Ausgabe mit phpMyAdmin. Studiere die Fehlermeldungen, pröble da herum und baus deine Erkenntnisse in dein Script ein.

Auf dei schnelle sehe ich höchstens '$userid' wobei ids normalerweise Zahlen sind, dann muss man es ohne '' schreiben

Wer sagt, das $userid ein Integer ist? Könnte auch ein SQL-Injection sein, welches bei nicht-Escapten Vars gerne für ein kleines Spielchen zwischendurch genutzt wird ;)
 
Wer sagt, das $userid ein Integer ist? Könnte auch ein SQL-Injection sein, welches bei nicht-Escapten Vars gerne für ein kleines Spielchen zwischendurch genutzt wird ;)
Es gibt immer ausnahmen. Anhand seiner bisherigen Kentnissen denke ich, dass es ien Integer ist. Aber solange er meine Frage nach dem Datentyxp nicht beantworten will, kann ich nur raten. Oder wiesst du mehr?
 
mhmmm habe jetzt den code 1 zu 1 übernommen von dir aber es muss noch ein fehler drin sein ... er gibt mir weder mein

echo "$aendern"; aus noch ändert er mir die einträge in der mysql datenbank ....
 
Zurück