2016-08-08 1 views
0

Ich bin extrem neu sowohl auf MySQL und PHP (meist mysql), und ich bin nicht einmal sicher, ich habe alle Grundlagen, denn ich bin eher ein Lern- durchgehende Person. Also mein Code besteht aus verschiedenen Erklärungen rund um das Internet, und einige davon könnten falsch sein. Also versuche ich Daten aus einer Datenbank zu bekommen, sie in ein HTML-Formular zu bringen, zu bearbeiten und die Datenbank mit den neuen Daten zu aktualisieren. Bis jetzt werden die Daten korrekt in das Formular geladen, und mit einer Menge Fehlersuche bin ich zu dem Schluss gekommen, dass auch der Upload so funktioniert wie er sollte, außer dass die Felder leer sind. Also denke ich, dass mein Problem darin bestehen muss, die Daten vom Formular zur Update-Abfrage zu bekommen.Laden von MySQL-Daten in ein HTML-Formular und updata mit PHP

Dies ist mein Code

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 1</title> 
</head> 

<body> 
<?php 
require 'connect.php'; 


$result = $db->query("SELECT * FROM test") or die ($db->error); 

while($row = mysqli_fetch_array($result)) 
{ 

    $name = $row['name']; 
    $school = $row['school']; 
    $email = $row['email']; 
    $grade = $row['grade']; 
    $workshop = $row['workshop']; 
    $id = $row['id']; 
?> 
<form method="post" action="#"> 
    <?=$id?> 
    <input name="nameid" type="text" value="<?=$name?>"> 
    <input name="emailid" type="text" value="<?=$email?>"> 
    <input name="gradeid" type="text" value="<?=$grade?>"> 
    <input name="workshopid" type="text" value="<?=$workshop?>"> 
    <input name="schoolid" type="text" value="<?=$school?>"> 
<?php } 
session_start(); 
$_SESSION['storage'] = $_POST; 
?> 
<input name="update" type="submit" id="update" value="Update"> 
</form> 


<?php 
if(isset($_POST['update'])) 
{ 

    $link = mysqli_connect("localhost", "892847", "123456789", "892847"); 

    // Check connection 
    if($link === false){ 
     die("Couldn't connect. " . mysqli_connect_error()); 
    } 
    session_start(); 

    $name = $_SESSION['storage']['nameid']; 
    $school = $_SESSION['school']['schoolid']; 
    $email = $_SESSION['email']['emailid']; 
    $grade = $_SESSION['grade']['gradeid']; 
    $workshop = $_SESSION['workshop']['grade']; 
    $id = $_SESSION['id']; 


    $sql = "UPDATE test SET name = '$name', email = '$email', school = '$school', grade = '$grade', workshop = '$workshop' WHERE id = '8'"; 
    if(mysqli_query($link, $sql)){ 
     echo "Records added successfully. $name"; 
     print_r($_POST['nameid']); 
    } else{ 
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
    } 


    mysqli_close($link); 
} 
?> 

</body> 
</html> 

Ich bin mir bewusst, dass das Session-Chaos sieht seltsam aus, aber ich habe irgendwo gelesen, dass eine Information über PHP-Skripte nicht verfügbar ist, es sei denn, Sie eine Sitzung machen.

Ich bin wirklich dankbar für jede Art von Hilfe - ich habe für etwa 48 Stunden mit diesem gekämpft

+0

Sie müssen Ihren Post in der Sitzung nicht beibehalten. Und Ihre Abfrage wird Ihnen mehr als eine Zeile geben. Da Sie nur eine Zeile benötigen, sollten Sie nur die Zeile '$ result = $ db-> query (" SELECT * FROM Test WHERE id = '$ id' ") oder die Option ($ db-> error) wählen;' I Nehmen wir an, Sie haben ein 'ID'-Feld in Ihrer Tabelle und Sie erhalten die' $ ID' der Zeile, die Sie aktualisieren möchten. – Orion

+0

Entschuldigung, aber fast alles ist an der falschen Stelle in diesem Code. Ich schlage vor, Sie ändern Ihren Ansatz und beginnen mit einem guten Buch oder Tutorial – RiggsFolly

+0

@RiggsFolly Ja, es ist irgendwie durcheinander. Aber weißt du, ich weiß, wie man sich verbindet, wie man die Daten holt und wie man hochlädt, also dachte ich, es wäre einfach, dieses Wissen zu kombinieren – Oliver

Antwort

0

Dies ist ein grundlegender Ansatz, den einfachste Verfahren mit PHP. Zuerst laden Sie Daten in von MySQL in Array php wie folgt, vorausgesetzt, Sie haben bereits die Verbindungen hergestellt und id ist die ID dieser speziellen Reihe

$row = mysql_fetch_array(mysql_query("SELECT * FROM test WHERE `id` = '$id'")); 

Finden Sie einen Weg, sicherzustellen, dass die Seite das Anzeigen erforderlicher id, zum Beispiel, können Sie $id = $_GET[row]; in diesem Fall verwenden Ihre uRL http://url?row=id im hTML-Code verwendet Echo wird wie folgt

<form action="process.php" method="POST"> 
<input type="hidden" name="id" value="<?php echo $_GET['row']" ?>" > 
<input type="text" name="nameid" value="<?php echo $row['nameid'] ?>" > 
... 
</form> 

über Sitzungen vergessen, sobald Sie es drücken einreichen sollte all diese Daten tragen in zum process.php in einer globalen Variablen $ _POST oder $ _GET, abhängig davon, welche Methode Sie in <form method> gewählt haben.

Jetzt im process.php verwenden

$nameid = mysql_real_escape_string($_POST['nameid']); 
$id = $_POST['id']; 
$sql = mysql_query("UPDATE test SET `name_id` = '$nameid' WHERE `id` = '$id'"); 
if($sql) { 
echo "update successful"; 
} 

Unnötig zu sagen, müssen Sie Datenbankverbindungen in den beiden Seiten verwenden.

+0

Ihr Skript läuft Gefahr [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i) -prevent-sql-injection-in-php) Werfen Sie einen Blick auf, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [Wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Verwenden Sie [vorbereitete Anweisung und parametrisierte Anweisungen] (http://php.net/manual /mysqli.quickstart.prepared-statements.php) – RiggsFolly

+0

@RiggsFolly Ich habe die einfachste Methode demonstriert, das sollte funktionieren, aber es ist sehr unsicher, Benutzer sollten sicherere Methode verwenden, das ist nur eine einfache Demonstration – AntonyMN