2016-06-20 6 views
0

Beim Bearbeiten eines bestimmten Datensatzes mit dem unten angegebenen PHP-Code werden alle Datensätze in der Datenbank gleichzeitig mit den Werten für die Anzahl der Einträge bearbeitet. Hier ist "db" die Datenbank. Ich bin neu in PHP und SQL. Bitte helfenBearbeiten der SQL-Datenbank mit PHP

<?php 
/* 
EDIT.PHP 
Allows user to edit specific entry in database 
*/ 

// creates the edit record form 
// since this form is used multiple times in this file, I have made it a function that is easily reusable 
function renderForm($reportno, $dateofreceipt, $title, $type, $issuingagency, $markedto, $date, $remarks, $isdate, $issuedto, $returndate) 
{ 
?> 
<!DOCTYPE HTML PUBLIC > 
<html> 
<head> 

<title>Edit Record</title> 
</head> 
<body> 


<form action="edit.php" method="post"> 
    <div> 
<p><strong>Report No.:</strong> <?php echo $reportno; ?></p> 
<strong>Date of receipt: *</strong> <input type="date" name="dateofreceipt" value="<?php echo $dateofreceipt; ?>"/><br/> 
<strong>Report Title: *</strong> <input type="text" name="title" value="<?php echo $title; ?>"/><br/> 
<strong>Report Type: *</strong> <input type="text" name="type" value="<?php echo $type; ?>"/><br/> 
<strong>Issuing agency: *</strong> <input type="text" name="issuingagency" value="<?php echo $issuingagency; ?>"/><br/> 
<strong>Marked to: *</strong> <input type="text" name="markedto" value="<?php echo $markedto; ?>"/><br/> 
<strong>Date: *</strong> <input type="date" name="date" value="<?php echo $date; ?>"/><br/> 
<strong>Remarks: *</strong> <input type="text" name="remarks" value="<?php echo $remarks; ?>"/><br/> 
<strong>Issuing Date: *</strong> <input type="date" name="isdate" value="<?php echo $isdate; ?>"/><br/> 
<strong>Issued To: *</strong> <input type="text" name="issuedto" value="<?php echo $issuedto; ?>"/><br/> 
<strong>Return Date: *</strong> <input type="date" name="returndate" value="<?php echo $returndate; ?>"/><br/> 
<p>* Required</p> 
<input type="submit" name="submit" value="Submit"> 
</div> 
</form> 
</body> 
</html> 
<?php 
} 



// connect to the database 
include('connect-db.php'); 

// check if the form has been submitted. If it has, process the form and save it to the database 
if (isset($_POST['submit'])) 
{ 


// get form data, making sure it is valid 
$reportno = $_POST['reportno']; 
$dateofreceipt = mysql_real_escape_string(htmlspecialchars($_POST['dateofreceipt'])); 
$title = mysql_real_escape_string(htmlspecialchars($_POST['title'])); 
$type = mysql_real_escape_string(htmlspecialchars($_POST['type'])); 
$issuingagency = mysql_real_escape_string(htmlspecialchars($_POST['issuingagency'])); 
$markedto = mysql_real_escape_string(htmlspecialchars($_POST['markedto'])); 
$date = mysql_real_escape_string(htmlspecialchars($_POST['date'])); 
$remarks = mysql_real_escape_string(htmlspecialchars($_POST['remarks'])); 
$isdate = mysql_real_escape_string(htmlspecialchars($_POST['isdate'])); 
$issuedto = mysql_real_escape_string(htmlspecialchars($_POST['issuedto'])); 
$returndate = mysql_real_escape_string(htmlspecialchars($_POST['returndate'])); 



//renderForm($reportno, $dateofreceipt, $title, $type, $issuingagency, $markedto, $date,$remarks, $isdate, $issuedto, $returndate, $error); 

// save the data to the database 
mysql_query("UPDATE `db` SET `Report No.`='[$reportno]',`Date of receipt`='[$dateofreceipt]',`Report Title`='[$title]',`Report Type`='[$type]',`Issuing agency`='[$issuingagency]',`Marked to`='[$markedto]',`Date`='[$date]',`Remarks`='[$remarks]',`Issuing date`='[$isdate]',`Issued to`='[$issuedto]',`Return Date`='[$returndate]' WHERE `Report No.`= '$id'") 


// once saved, redirect back to the view page 
header("Location: view.php"); 


    } 

// query db 
$id = $_GET['id']; 
$result = mysql_query("SELECT * FROM db WHERE `Report No.`= '$id'") 
or die(mysql_error()); 
$row = mysql_fetch_array($result); 

// check that the 'id' matches up with a row in the databse 
if($row) 
{ 

// get data from db 

$reportno = $row['Report No.']; 
$dateofreceipt = $row['Date of receipt']; 
$title= $row['Report Title']; 
$type= $row['Report Type']; 
$issuingagency= $row['Issuing agency']; 
$markedto= $row['Marked to']; 
$date= $row['Date']; 
$remarks=$row['Remarks']; 
$isdate= $row['Issuing date']; 
$issuedto= $row['Issued to']; 
$returndate= $row['Return Date']; 

// show form 
renderForm($reportno, $dateofreceipt, $title, $type, $issuingagency, $markedto, $date, $remarks ,$isdate, $issuedto, $returndate, ''); 
} 


?> 
+1

Stopp deprecated' mysql_ mit * 'API. Benutze 'mysqli_ *' oder 'PDO' und lerne über vorbereitete Anweisungen – Jens

+1

warum' [] 'here' [$ reportno] '? Verwenden Sie '{}' – C2486

+1

Sie müssen eine Bedingung anwenden, um nur den beabsichtigten Datensatz zu aktualisieren. Dafür wird die WHERE-Klausel und meistens ID (Primärschlüssel) verwendet, um einen Datensatz eindeutig zu identifizieren. –

Antwort

0

diese Abfrage für Aktualisierungs. auch vergessen Sie nicht Semikolons nach Anweisungen hinzufügen. Verwenden Sie mysqli_ * Funktionen statt mysql_ *

mysqli_query("UPDATE `db` SET `Date of receipt`='$dateofreceipt',`Report Title`='$title',`Report Type`='$type',`Issuing agency`='$issuingagency',`Marked to`='$markedto',`Date`='$date',`Remarks`='$remarks',`Issuing date`='$isdate',`Issued to`='$issuedto',`Return Date`='$returndate' WHERE Report No = $reportno"); 
0

Mehrere Probleme hier:

  • Die mysql api in PhP ist veraltet. Wetten nicht, dass es länger funktioniert. Benutze stattdessen mysqli api.

  • In Ihrer Anfrage die "where 1 Teil ist komplett überflüssig. 1 bedeutet wahr und where 1 alle Aufzeichnungen, an welcher Stelle Sie die WHERE komplett auslassen können. Sie wollten wahrscheinlich WHERE somekey = 1 verwenden, die anders ist.

+0

Danke, dass Sie darauf hingewiesen haben. Der Code an der Where-Klausel wurde aktualisiert - 'Report No. '=' $ id '. Die Editierfunktion stoppte jedoch nun vollständig –

0

versuchen, diese

mysql_query ("UPDATE db SET Report No. =". '$ Reportno'. "Date of receipt =." '$ Dateofreceipt'. "Report Title =". '$ Title'. "Report Type =." '$ Typ' . ", Issuing agency =.", $ Emissionenagent '. ", Marked to =."' $ Markedto '. ", Date =."' $ Date '. ", Remarks =."' $ Bemerkungen '. ", Issuing date =. " '$ isdate'.", Issued to =. " '$ issuedto'." Return Date =. " '$ Retour'." WHERE Report No. = " '$ id'." ")

+0

Versuchte es. Funktioniert nicht. Danke für den Vorschlag. –

Verwandte Themen