[PHP] Edit User

  • Hallo, ich lasse alle User aus einer Tabelle (MySQL) auf meiner Seite auflisten, hinter jedem Name hab ich ein Edit, und Lösch Button. Wie mache ich es, das wenn ich auf den Edit Button klicke, auf eine neue Seite komme, auf der ich alle Einträge des Users ändern kann?


    Bis jetzt nur der Button:

    PHP
    echo "<td> <a href='?edit=".$fetch['Name']."'><img src='img/i_edit.png'/></a> </td>";



    Wäre über Hilfe sehr dankbar! :)


    Liebe Grüße

  • echo "<td> <a href='?edit=".$fetch['Name']."'><img src='img/i_edit.png'/></a> </td>";


    Wenn ich das richtig sehe benutzt du die $_GET Variante um Daten zu übermitteln. Du musst vor dem Fragezeichen deine Zielseite angeben und auf der Zielseite die Daten des Benutzers anhand der übergebenen Parameter aus der Datenbank laden.


    PHP
    if(isset($_GET['edit']) && !empty($_GET['edit'])){
        // Daten vom Benutzer holen
    }


    Am besten übergibst du aber nicht den Namen des Benutzers sondern benutzt die ID also den Primary Key um die Daten eindeutig zu identifizieren =)

  • Dafür müsstest du eine neue Seite erstellen,. dort alles reinladen sowie neu abspeichgern..


    Kann e ssein, dass du 0plan hast wie man mit php umgeht? ;D

    Korrekt

    Wenn ich das richtig sehe benutzt du die $_GET Variante um Daten zu übermitteln. Du musst vor dem Fragezeichen deine Zielseite angeben und auf der Zielseite die Daten des Benutzers anhand der übergebenen Parameter aus der Datenbank laden.


    PHP
    if(isset($_GET['edit']) && !empty($_GET['edit'])){
        // Daten vom Benutzer holen
    }


    Am besten übergibst du aber nicht den Namen des Benutzers sondern benutzt die ID also den Primary Key um die Daten eindeutig zu identifizieren =)


    Bin schon mal dadurch ein Stück weiter gekommen, aber: (//Daten vom Benutzer holen) wie mach ich das am besten? $var = x ? Wenn ja, ersetze ich x mit?

  • mysql wird bald abgeschaft (falls das noch nicht ist) - lieber mysqli verwenden


    PHP
    $mysqli = mysqli_connect($host, $user, $pw, $db) or die("Error " . mysqli_error($mysqli));
    	$result = $mysqli->query("SELECT * FROM user WHERE Username = '$username'");
    	echo mysqli_error($mysqli);
  • Was mache ich falsch?


    Zitat

    Notice: Undefined index: Name in C:\xampp\htdocs\punkte\edit.php on line 47


    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\punkte\edit.php on line 48


    PHP
    $result = mysql_query("SELECT * FROM konten WHERE Name = ".mysql_real_escape_string($_GET['Name'])); //Zeile 47
    while ($var = mysql_fetch_object($result))  //Zeile 48
    { 
        $Name = $var->Name; 
    }
  • ein string muss immer " '$string' " enthalten, also mach es lieber so:


    PHP
    $username = mysql_real_escape_string($_GET['Name']);
    $result = mysql_query("SELECT * FROM konten WHERE Name = '$username'"); //Zeile 47
    while ($var = mysql_fetch_object($result))  //Zeile 48
    { 
        $Name = $var->Name; 
    }
  • MySQL ist veraltet, du solltest auf PDO oder MySQLi umsteigen.
    Hier mal ein paar Beispiele:


    Verbindung zur Datenbank aufbauen

    PHP
    try {
    	$pdo = new PDO("mysql:host=localhost;dbname=root", "user", "pass");
    	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    	$pdo->exec("SET CHARACTER SET utf8");
    } catch (PDOException $ex) {
    	die($ex->getMessage());
    	exit();
    }


    Query ausführen

    PHP
    $sth = $pdo->query("DELETE FROM `table` WHERE `row` = '0' LIMIT 1");


    Vorbeireteten Query ausführen (bspw. für Variablen)

    PHP
    $value = "test";
    $sth = $pdo->prepare("SELECT `row` FROM `table` WHERE `row` = :value LIMIT 1");
    $sth->execute(array(":value" => $value));


    Zeilen zählen

    PHP
    $sth->rowCount();


    Objekt erstellen

    PHP
    $obj = $sth->fetch(PDO::FETCH_ASSOC);

    Für das Moderationsteam:
    Ich nutze offene WLAN's und bin im Intercafe oder im Hotel. (Vor Ban wegen Multiaccount deswegen bitte eine private Nachricht, um dies zu klären).