tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
19
ZUGRIFFE
234
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Black Angel Black Angel ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    Hallo Com,
    habe (mal wieder) ein Problem und zwar möchte ich eine Seite "Profil bearbeiten" erstellen.

    Leider weiß ich nicht wirklich wie ich das anstellen soll, habe zwar schon einen Code aber der funktioniert nicht.

    Die Datenbank lautet "projekt" tabelle "benutzerdaten" mit folgenden Feldern "Id", "Vorname", "Nachname", "E-Mail", "Kennwort" und "level".

    Hier mal mein Code
    PHP-Code:
    <form action="?s=profil_edit" method="post">
    E-Mail
    <input name="email" type="text"> 
    <input type="submit" value="Updaten">
    <?php 
    $connectionid 
    mysql_connect ("xxx""xx""xxx"); 
    if (!
    mysql_select_db ("projekt"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 



    $sql =  $sql 'UPDATE
                    benutzerdaten
                SET
                    E-Mail = "'
    .$_POST["email"].'"
                WHERE
                    Id = "'
    $_SESSION["user_id"].'"';
    mysql_query ($sql)?>
    Leider weiß ich nicht weiter, wäre nett wenn mir jemand helfen könnte
    Geändert von Black Angel (29.07.11 um 12:22 Uhr)
     

  2. #2
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Jetzt erstellste dir ein Formular zum verändern der Daten. Liest die Aktuellen Daten des Users aus und befüllst die Input-Felder. Nach dem Abschicken des Formulares überprüfste die Übergaben der Inputs und speicherst sie mit dem Update in der DB.

    Editier bitte deinen ersten Beitrag und nimm die Zugangsdaten zu deiner MySQL-DB raus******!
    Black Angel bedankt sich. 
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Wieso hast du 2x "$sql" hintereinander?

    Außerdem würde ich $_POST['email'] im SQL-Query erstmal mit mysql_real_escape_string() "entschärfen", sodass kein schädlicher Code eingefügt werden kann.
    Noch dazu musst du dieses Feld noch in einfache Anführungszeichen einschließen, also:
    PHP-Code:
    $sql "UPDATE benutzerdaten SET E-Mail = '".$_POST["email"]."' WHERE Id = ".$_SESSION["user_id"]."; 
    Und wie Maniac gesagt hat, musst du erstmal die Felder mit einem SELECT-Statement auslesen, z.B.:
    Code sql:
    1
    
    SELECT * FROM benutzerdaten WHERE Id=3
    Black Angel bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    Black Angel Black Angel ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    Also so?
    PHP-Code:
    <form action="?s=profil_edit" method="post">
    E-Mail:
    <input name="email" type="text"> 
    Vorname:
    <input name="vname" type="text">
    Nachname:
    <input name="nname" type="text">
    <input type="submit" value="Updaten">
    <?php
    $connectionid 
    mysql_connect ("xxx""xxx""xxx"); 
    if (!
    mysql_select_db ("projekt"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT 
    `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` LIKE '"
    .$_SESSION['user_id']."'";
    mysql_query ($sql);
    $sql2 "UPDATE 
    benutzerdaten 
    SET 
    E-Mail = '"
    .$_POST["email"]."' WHERE Id = ".$_SESSION["user_id"]."'";  
    mysql_query($sql2);
    ?>
    Geändert von Black Angel (29.07.11 um 12:33 Uhr)
     

  5. #5
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Du musst erstmal überprüfen, ob Daten schon geschickt worden sind:
    PHP-Code:
    if ($_POST)
    {
      
    /* update */
    }
    else
    {
      
    /* select */

    Wieso benutzt bei der Id ein LIKE? Du kannst doch einfach ein Gleichheitszeichen und wenn es ein Integer (Zahl) ist, dass brauchst du auch keine Anführungszeichen.

    Beim zweiten Statement musst du $_POST['email'] noch entschärfen:
    PHP-Code:
    $sql2 "UPDATE 
    benutzerdaten 
    SET 
    E-Mail = '"
    .mysql_real_escape_string($_POST["email"])."' WHERE Id = ".$_SESSION["user_id"]."'"
    Black Angel bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  6. #6
    Black Angel Black Angel ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    PHP-Code:
    <form action="?s=profil_edit" method="post">
    E-Mail:
    <input name="email" type="text"> 
    Vorname:
    <input name="vname" type="text">
    Nachname:
    <input name="nname" type="text">
    <input type="submit" value="Updaten">
    <?php
    $connectionid 
    mysql_connect ("xxx""xxx""xxx"); 
    if (!
    mysql_select_db ("projekt"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    if (
    $_POST)
    {
      
    $sql2 "UPDATE 
    benutzerdaten 
    SET 
    E-Mail = '"
    .mysql_real_escape_string($_POST["email"])."' WHERE Id = ".$_SESSION["user_id"]."'";   
    }
    else
    {
    $sql "SELECT 
       `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` = '"
    .$_SESSION['user_id']."'";
    }  

    mysql_query($sql2);
    ?>
    Funktioniert irgendwie immer noch nicht :|
    Hab ich was vergessen?
     

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Was erwartest du denn?

    Das mit diesen Zeilen der Computer ein schönes Formular zaubert?

    Du musst die Daten doch noch in die einzelnen Formular-Felder schreiben.
    Also füge dein Formular in das if ($_POST) ein und schreibe in die value-Attribute die Felder aus dem MySQL-Query-Ergebnis.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Ich habs dir mal schnell aus dem Kopf geschrieben, gebe aber keine Garantie das es funktioniert, da ich es nicht getestet habe.

    Ist jetzt mal ein Ansatz, daher nicht ganz fertig!
    PHP-Code:
    <?php
    $connectionid 
    mysql_connect ("xxx""xxx""xxx"); 
    if (!
    mysql_select_db ("projekt"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT
       `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` = '"
    .$_SESSION['user_id']."'";

        
    $query mysql_query($sql);
        
    $data mysql_fetch_row($query);


    if (isset(
    $_POST['send']))
    {
      
    $sql2 "UPDATE 
    `benutzerdaten`
    SET 
    `E-Mail` = '"
    .mysql_real_escape_string($_POST['email'])."' WHERE Id = ".$_SESSION['user_id'];  
      
    $update mysql_query($sql2);
      
      if(
    $update 0) echo "Profil wurde gespeichert";
    }

     


    ?>

    <form action="?s=profil_edit" method="post">
    E-Mail:
    <input name="email" type="text" value="<?php echo $data['E-Mail']; ?>" /> 
    Vorname:
    <input name="vname" type="text" value="<?php echo $data['Vorname']; ?>" />
    Nachname:
    <input name="nname" type="text" value="<?php echo $data['Nachname'];?>" />
    <input type="submit" name="send" value="Updaten">

    </form>
    Geändert von Maniac (29.07.11 um 12:51 Uhr)
    Black Angel bedankt sich. 
    Die Schweine von heute sind unsere Schnitzel von morgen!

  9. #9
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    @Maniac:

    Das SELECT-Statement inklusive mysql_query() könnte man noch nach dem UPDATE einfügen. Dann werden bei einer Aktualisierung auch die aktuellen Daten angezeigt.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  10. #10
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Zitat Zitat von ComFreek Beitrag anzeigen
    @Maniac:

    Das SELECT-Statement inklusive mysql_query() könnte man noch nach dem UPDATE einfügen. Dann werden bei einer Aktualisierung auch die aktuellen Daten angezeigt.
    Jepp, ich hab extra nicht alles so geschrieben wie es normalerweise sein sollte, wollte nicht das ganze Script für den Threadersteller machen...
    Deshalb fehlen im UPDATe auch noch die anderen Felder sowie die Default-Werte für das Formular.
    Black Angel bedankt sich. 
    Die Schweine von heute sind unsere Schnitzel von morgen!

  11. #11
    Black Angel Black Angel ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    Zitat Zitat von Maniac Beitrag anzeigen
    Jepp, ich hab extra nicht alles so geschrieben wie es normalerweise sein sollte, wollte nicht das ganze Script für den Threadersteller machen...
    Deshalb fehlen im UPDATe auch noch die anderen Felder sowie die Default-Werte für das Formular.
    Ich will auch gar nicht das mir wer das ganze Script macht, ich frage ja um zu lernen.
    Habe es jetzt so und es funktioniert: DANKE
    PHP-Code:
    <?php
    $connectionid 
    mysql_connect ("xxx    ""xxx""xxx"); 
    if (!
    mysql_select_db ("projekt"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT
       `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` = '"
    .$_SESSION['user_id']."'";

        
    $query mysql_query($sql);
        
    $data mysql_fetch_row($query);


    if (isset(
    $_POST['send']))
    {
      
    $sql2 "UPDATE 
    `benutzerdaten`
    SET 
    `E-Mail` = '"
    .mysql_real_escape_string($_POST['email'])."',
    `Vorname` = '"
    .mysql_real_escape_string($_POST['vname'])."',
    `Nachname` = '"
    .mysql_real_escape_string($_POST['nname'])."'

    WHERE Id = "
    .$_SESSION['user_id'];  
      
    $update mysql_query($sql2);
      
      if(
    $update 0) {
          echo 
    "Profil wurde gespeichert";
         
          
    "SELECT
       `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` = '"
    .$_SESSION['user_id']."'";

    $result mysql_query ($sql); 
    if (
    mysql_num_rows ($result) > 0

      
    // Benutzerdaten in ein Array auslesen. 
      
    $data mysql_fetch_array ($result); 

      
    // Sessionvariablen erstellen und registrieren 
      
    $_SESSION["user_id"] = $data["Id"]; 
      
    $_SESSION["email"] = $data["E-Mail"]; 
      
    $_SESSION["user_nachname"] = $data["Nachname"]; 
      
    $_SESSION["user_vorname"] = $data["Vorname"]; 
      
    $_SESSION["level"] = $data["level"];
    }
      }}

     


    ?>

    <form action="?s=profil_edit" method="post">
    E-Mail:<br>
    <input name="email" type="text" value="<?php echo $_SESSION['email']; ?>" /> <br>
    Vorname:<br>
    <input name="vname" type="text" value="<?php echo $_SESSION['user_vorname']; ?>" /><br>
    Nachname:<br>
    <input name="nname" type="text" value="<?php echo $_SESSION['user_nachname'];?>" /><br>
    <input type="submit" name="send" value="Updaten">

    </form>
    Habe gleich nochmal eine Frage.
    Ich hab ja vorher einen Login.
    Wenn ich jetzt die Daten ändere und dann auf Profil klicke (Profil ansehen) bin ich ausgeloggt.
    Kann man das irgendwie fixxen?
     

  12. #12
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Wie prüfst du denn, ob du eingeloggt bist?

    Hast du vielleicht ein session_start() vergessen?
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  13. #13
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Zitat Zitat von ComFreek Beitrag anzeigen
    @Maniac:

    Das SELECT-Statement inklusive mysql_query() könnte man noch nach dem UPDATE einfügen. Dann werden bei einer Aktualisierung auch die aktuellen Daten angezeigt.
    Solltest du auch noch beachten...
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  14. #14
    Black Angel Black Angel ist offline Mitglied Bronze
    Registriert seit
    Jun 2011
    Beiträge
    32
    session_start() hab ich nicht vergessen aber mich hauts trotzdem raus.:|
    @Maniac:
    So?
    PHP-Code:
     if($update 0) {
          echo 
    "Profil wurde gespeichert";
         
        
    $sql3 =  "SELECT
       `E-Mail`, `Nachname`, `Vorname`
      FROM 
        `benutzerdaten` 
      WHERE  
        `Id` = '"
    .$_SESSION['user_id']."'";

    $result mysql_query ($sql3); 
    Geändert von Black Angel (29.07.11 um 13:44 Uhr)
     

  15. #15
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Nein, ausserhalb der Bedingung.
    Es geht darum, wenn das Update gemacht wurde und den SELECT unter dem UPDATE hast, werden auch gleich die neuen Daten in den Feldern angezeigt. In meinem oben geposteten Script ist das noch nicht der Fall.
    Also den SELECT nach der POST-Bedingung.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

Ähnliche Themen

  1. Problem mit Profil laden
    Von sekte im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 16.11.07, 10:53
  2. Antworten: 3
    Letzter Beitrag: 31.07.05, 23:16
  3. Firefox Profil Problem
    Von Fanthom im Forum Internet, DSL & Flatrate
    Antworten: 2
    Letzter Beitrag: 17.01.05, 22:43
  4. Antworten: 1
    Letzter Beitrag: 28.04.04, 18:22
  5. dw mx - problem mit bearbeiten von *.dat files
    Von Dorian Iten im Forum HTML-Editoren
    Antworten: 1
    Letzter Beitrag: 29.09.02, 15:13