2016-09-17 3 views
1

Es gibt zwei PHP-Dateien, von denen die eine das Formular enthält und die andere den Code zum Einfügen der Formulardaten in die Tabelle in einer Datenbank enthält.Daten werden nicht an die Datenbank gesendet und eine Meldung "ERROR" zeigt

Dies ist die Form Code aus der ersten Datei

<form name="form" action="insert_dataE.php" onSubmit="return 
validation()" method="post" id="formServiceEntry"> 
    <fieldset id="fieldSetServiceEntry"> 
    <legend align="center">Please fill the form</legend> 
    <p class="FieldHeading"><i>Vehicle No(*): </i></p> 
    <input id="VehicleNoFieldArea" type="text" name="VehicleNoField" 
size="6" maxlength="8"/> 
    <p class="FieldHeading"><i>Description(*):</i></p> 
    <textarea id="descriptionFieldArea" name="descriptionField" 
rows="2" cols="20" size="15" maxlength="18"></textarea> 
    <p class="FieldHeading"><i>Total(*):</i></p> 
    <input id="totalFieldArea" name="totalField" type="text" 
size="4" maxlength="4"/> 
    <p id="amountFieldHeading"><i>Bill(*):</i></p> 
    <input id="amountFieldArea" name="amountField" type="text" 
size="3" maxlength="3" onKeyUp="balance();" /> 
    <br/> 
    <div id="divisionRadioButton"> 
     <h3 id="radioButtonHeading">Service(*):</h3> 
     Service &nbsp; 
     <input class="textFields" type="radio" 
name="serviceSelection" value="service" checked /> 
     <br/> 
     Wash &nbsp; 
     <input class="textFields" type="radio" 
name="serviceSelection" value="wash" /> 
    </div> 
    <p id="balanceFieldHeading"><i>Balance(*):</i></p> 
    <input id="balanceFieldArea" name="balanceField" type="text" 
size="4" maxlength="4"/> 
    </fieldset> 
    <input class="btnsSE" type="submit" name="Button" value="Submit" /> 
    <input class="btnsSE" type="reset" name="Button" value="Reset Form"/> 
    <input type="button" class="btnsSE" value="Back to the staff 
interface" onClick="window.location='staffE.php';"/> 
</form> 

einreichen Dies ist der Einsatz Datencode aus der zweiten Datei

<?php 
// Connects to your Database 
$conn=mysql_connect("localhost", "webgeek1_service", "6defyu4642070") or 
die(mysql_error()); 
mysql_select_db("webgeek1_software_order", $conn) or die(mysql_error()); 
$result = mysql_query("SELECT * FROM application", $conn); 
$num_rows = mysql_num_rows($result); 
$num_rows = $num_rows + 1; 
$id= $num_rows; 
$dateAndTime = date('y-m-d H:i:s',time()); 
$vehicleNo=mysql_real_escape_string($_POST['VehicleNoField']); 
$description=mysql_real_escape_string($_POST['descriptionField']); 
$amount=mysql_real_escape_string($_POST['amountField']); 
$service=mysql_real_escape_string($_POST['serviceSelection']); 
// Build an sql statment to add the query details 
$sql="INSERT INTO `webgeek1_software_order`.`application`(`serialNo`, 
`dateAndTime` , `vehicleNo` , `description` ,`amount`,`service`) 
VALUES 
('$id',  
'$dateAndTime','$vehicleNo','$description','$amount','$service')"; 
$result = mysql_query($sql, $conn); 
if($result) 
{ 
    echo "<p id='headingInsertData'>Service Station Web Application</p>"; 
    echo "<p id='receiptHeading'>Receipt</p>"; 
    echo "<div id='mainFieldsInsertData'>"; 
    echo "Serial No: " . " " . $id; 
    echo "<br/>"; 
    echo "Date and Time: " . " " . $dateAndTime; 
    echo "<br/>"; 
    echo "Vehicle No: " . " " . $vehicleNo; 
    echo "<br/>"; 
    echo "Description: " . " " . $description; 
    echo "<br/>"; 
    echo "Amount: " . " " . $amount; 
    echo "<br/>"; 
    echo "Service:" . " " . $service; 
    echo "<br/>"; 
    echo "<br/>"; 
    echo"Thanks for using our services"; 
    echo "</div>"; 
    echo "<div id='footerInsertData'>"; 
    echo "<i>Developed by: Web Geeks - Information Technology (IT) 
    Company</i>"; 
    echo "</div>"; 
    echo "<div align='center'>"; 
    echo "<input class='btns' type='button' value='Print' 
    onClick='javascript: window.print();'/>"; 
    echo "<input type='button' class='btns' value='Back to the 
    Application' onClick='newDoc()'/>"; 
    echo "</div>"; 
} 
else 
{ 
    echo "ERROR"; 
} 
// close connection 
mysql_close($conn); 
?> 
+0

Bitte geben Sie ausführlich über Ihr Problem und Fehlercode. Verwenden Sie auch mysqli, da mysql abwertet – rak007

+0

Ich versuchte mysqli auch das Problem besteht weiter. Das Problem ist ziemlich einfach. Meine Daten werden nicht übermittelt –

+0

Ist das der ganze PHP-Code? oder nur ein Teil davon? –

Antwort

1

Der Fehler Sie mit (Duplicate entry '51' for key 'PRIMARY') scheint ziemlich logisch da Sie Ihre angegebene ID der Zeile zuweisen, anstatt sie automatisch zu schreiben. Außerdem verwenden Sie eine ID, die auf der Anzahl der Zeilen basiert, die sich derzeit befinden. Dies führt zu MySQL-Fehlern bei der ID-Duplizierung.

Um dieses Problem zu lösen:

  1. Ändern serialNo Spalte und markieren Sie eine Checkbox auf A_I Spalte (AUTO_INCREMENT). Dies wird sicherstellen, dass Sie immer einzigartige ID haben werden.

  2. Entfernen ganz dieser Teil im Code:

$result = mysql_query("SELECT * FROM application", $conn); $num_rows = mysql_num_rows($result); $num_rows = $num_rows + 1; $id= $num_rows;

  1. Ändern Sie bitte Ihre Anfrage:

Diese bereits modifiziert

$sql="INSERT INTO `webgeek1_software_order`.`application` (`dateAndTime`, `vehicleNo`, `description`,`amount`, `service`) VALUES('$dateAndTime', '$vehicleNo', '$description', '$amount', '$service')"; 

Ich glaube, die Datenbank sollte automatisch festlegen, welche nächste ID nach dem Einfügen neuer Daten kommen soll. Dies verhindert, dass Sie solche Fehler als ID-Duplizierung bekommen, weil Sie nicht mehr Ihre eigene Nummer eingeben.

Eine Randnotiz (aber wichtig): Sie mysqli oder PDO statements weil mysql Erweiterung verwenden sollten ist veraltet (und sogar in PHP 7.0.0 entfernt wird).

+0

Vielen Dank Edvin, ich dachte, dass auch deshalb, habe ich diese Dinge umgesetzt, und es hat gearbeitet. Vielen Dank noch einmal für den Befehl: "mysql_error ($ conn)". Dieser Befehl löste das Problem, da es uns die Idee gab, was falsch ist –

+0

@ user3119917 Ich bin froh, dass das geholfen hat! Wenn du kannst, denke bitte darüber nach, meine Antwort zu erhöhen/zu akzeptieren, da es mir sehr hilft (wenn du eine Antwort akzeptierst, bekommst du +2 Ansehen). Viel Glück! –

0

In der Struktur für meine Tabelle in phpMyAdmin, ich brauchte die Spalte ‚SerialNo‘ AI (Autoincrement) und im Einsatzdatencode zu setzen, musste ich die Zeilen Kommentar:

$num_rows = mysql_num_rows($result); 
$num_rows = $num_rows + 1; 
$id= $num_rows; 

ähnlich Ich musste die 'Seriennummer' aus der Einfügeabfrage in der gleichen Datei entfernen. Schließlich musste ich die Zeilen kommentieren:

echo "Serial No: " . " " . $id; 
echo "<br/>"; 

im Einsatz Datencode

Verwandte Themen