profil edit schreiben

ede592

Mitglied
Hallo,

Ich habe ein kleines bzw. größeres Problem. Ich habe ein Loginscript angelegt mit einer new_user funktion (in der Tabelle sind mehrere Benutzer angelegt) usw. naja zum eigentlichen Thema Ich will jetz eine Formular schreiben womit jeder Benutzer sein eigenes Profil editieren kann. Ich habe mir schon einmal vorgedanken gemacht, aber weiss nicht wie ich das konkret formulieren könnte. Ich habe in der Tabelle ein Feld UserID angelegt kann ich das auch für die eingaben benutzen um für jeden User an der richtigen stelle die Eingaben einzutragen und von dieser Stelle auch wieder auszulesen? Falls einer Dieser Felder leer is soll in diesem Feld auch nichts eingetragen werden.
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';

	if (logged_in()) {
		//Formular zur Eingabe
		echo '<form action="edit.php" method="post" 					 	 		 		      			         enctype="multipart/form-data" name="upload-form">
		//Maximal 2MB<br>
		<label>Bild</label><input type="file" name="bild" /> 
		<input type="submit" name="bild_submit" value="Hochladen!">
		</form>
		
		<form action"edit.php" method="post" id="formular" name="formular">
		<br /><br /><label>Name</label><input name="name" type="text" id="name">
		<br><label>Wohnort</label><input name="wohnort" type="text" id="wohnort">
		<br><label>Spitzname</label><input name="spitzname" type="text" 			 				 	 		id="spitzname">
		<br><label>Geburtsdatum</label><input name="gebdatum" type="text" 			 		 		   		id="gebdatum">
		<br><label>Essen</label><input name="essen" type="text" 
		id="essen">
		<br /><label>Getränk</label><input name="getraenk" type="text" id="getraenk" />
		<br /><label>Musik</label><input name="musik" type="text" id="musik" />
		<input type="submit" name="submit" value="Edit!">
		</form>';}
		//Eingabe speichern
		bild_hochladen('http://rollbrettgurken.de/user/bilder/');
		$name    = $_POST['name'];
		$wohnort = $_POST['wohnort'];
		$spitzname= $_POST['spitzname'];
		$geburtsdatum $_POST['gebdatum'];
		$essen   = $_POST['essen'];
		$getraenk= $_POST['getraenk'];
		$musik   = $_POST['musik'];
			else {fehler();}
		
		//Eingabe an der richtigen Stelle eintragen?

               //Eingabe an der richtigen Stelle auslesen?

			
?>

Danke im Vorraus!!
 
Du benötigst die ID, um den richtigen Datensatz auswählen zu können. Einmal um den richtigen Datensatz auszugeben und nachher den richtigen Datensatz zu überschreiben.
 
Ja soweit war ich ja auch schon ich habe auch schon ne UserID Spalte angelegt in meiner Tabelle mit dem Usernamen und dem userpasswort, nur stellt sich jetz für mich die frage wie der eingeloggte benutzer seine eingegebenen daten in seine spalten, die ich angelegt habe, einfügt.
 
Wenn der User eingeloggt ist speicherst du doch sicherlich auch irgendwo die ID des Users aus der Datenbank zwischen ($_SESSION['UserID'] o.Ä. ?)
Und mit Absenden des Edit-Formulars führst du dann die SQL-Update Funktion aus
UPDATE `tabelle` SET `feldname` = 'wert' WHERE `id` = $_SESSION['UserID']
Wenn das nicht dein Problem ist - versuch nochmal zu beschreiben WAS es ist ;)
 
Nein das tu ich ja gerade nicht, ich will es aber, wusste aber nicht wie es geht ; ) wär nett wenn du mir vllt ne genauere beschreibung geben kannst wie man das mit der session und der UserID mache DANKE!
 
Zuletzt bearbeitet:
Das wäre in der Funktion/dem Codeteil, der den Login-Vorgang bearbeitet, einzufügen.
Wenn der User sich einloggt, musst du ja irgendwie sein Passwort vergleichen,
wo also logischerweise eine SELECT-Anfrage an deine Datenbank gesendet wird und du kannst dann dir dann da auch die ID des entsprechendes Eintrags mitliefern lassen.
Die speicherst du dann in einer Session-Variable und hast dann in dieser immer die ID des Users abgelegt, um ihn in der DB identifizieren zu können
PHP:
...
$_SESSION['UserID'] = $row['id']; // Wert aus DB zuweisen
...
Wenn dir nicht klar ist wie das gehen soll, poste mal deine Login-Funktion!

MfG
 
Ok hier ist sie:
Die einzelnen Funktionen:
(sessionhelpers.inc.php)
PHP:
function check_user($name, $pass)
{
    $sql="SELECT UserId
    FROM users
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        return $user['UserId'];
    }
    else
        return false;
}

function login($userid)
{
    $sql="UPDATE users
    SET UserSession='".session_id()."'
    WHERE UserId=".$userid;
     mysql_query($sql);
}

function logged_in()
{
    $sql="SELECT UserId
    FROM users
    WHERE UserSession='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
	  
}

Das Login Formular (Falls nötig):

PHP:
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
    else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
    echo '<form method="post" action="login.php">
        <label>Benutzername:</label><input name="username" type="text"><br>
        <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
        <input name="login" type="submit" id="login" value="Einloggen">
    </form>';
else
    echo '<a href="logout.php">Ausloggen</a><br>';
	echo '<a href="new_user.php">Benutzer anlegen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
?>
 
Der Teil mit dem Login-Formular:
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
        $_SESSION['user_id'] = $userid; // Session-Variable setzen
    else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
    echo '<form method="post" action="login.php">
        <label>Benutzername:</label><input name="username" type="text"><br>
        <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
        <input name="login" type="submit" id="login" value="Einloggen">
    </form>';
else
    echo '<a href="logout.php">Ausloggen</a><br>';
    echo '<a href="new_user.php">Benutzer anlegen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
?>

Und nun hast du, solange die Session aktiv ist, auf jeder Seite die ID des aktuellen Users in der Variable $_SESSION['user_id'] verfügbar!
 
Danke, schonmal aber da ich ja so unwissend bin.... Wird die Userid denn jetz in der Datenbank gespeichert? Ne oder? Also muss ich jetz mit Update Users set UserID=$_SESSION['user_id'] die Sachen in die Datenbank transportieren und d.h. für mein edit formular das ich die Daten mit WHERE UserID='.$_SESSION['user_id'].' eintragen muss oder habe ich das falsch verstanden?
Danke für deine Hilfe!
 
Wenn ich mir der Diskusion anschließen dürfte ;)

Die ID wird am einfachsten vergeben, wenn eine Spalte AUTO_INCREMENT hat..meine DB sieht so aus:
PHP:
CREATE TABLE `test`.`testuser` (
`ID` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`NAME` VARCHAR( 100 ) NOT NULL ,
`PASS` VARCHAR( 100 ) NOT NULL ,
`EMAIL` VARCHAR( 100 ) NOT NULL ,
`IP` VARCHAR( 100 ) NOT NULL
)

also der wert der spalte wird immer um eins erhöt, wenn ein neuer benutzer sich registriert...somit bekommt jeder USER eine einzige ID, die speziell zu seiner Zeile passt... mit der Abfrage

SELECT blah FROM blubb WHERE ID = $_SESSION['ID']

oder so wird genau die Zeile ausgelesen...

____
hey, mein erster beitrag xD hallo leutz ;)
I hoff i konnt jez irgendwie produktiv beitragen :confused:
 
Zurück