Base de données SQL - mise à Jour de l'Enregistrement via PHP Formulaire. Pas d'Erreurs, mais pas de mise à jour.
En espérant que c'est le bon endroit pour mettre ce. Au courant, je travaille sur un petit projet pour le plaisir et en même temps de tenter de m'enseigner quelques PHP. J'ai créé un peu d '"Audit" de la page qui est associé à mon site qui me permet de saisir de nouvelles données à un pré-existante de SQL Base de données, la Recherche sur des Données et de la mise à Jour des Données. Maintenant, l'Ajout et la Recherche fonctionne sans Accroc. Le seul problème est la "mise à Jour" de la fonction n'est pas... Ça n'a pas d'Erreur (en fait, il déclare que c'est réussi) et tout fonctionne, comment il devrait, sauf que ce n'est pas "fait" mettre à jour les informations dans la table.
J'ai passé les 2 ou 3 derniers jours de lecture par le biais de StackOverflow, Tutoriel Guides, Forums et juste à jouer avec des parties de code moi-même, rien de ce qui a condition même une distance de réponse.
J'ai 2 pages qui sont pertinentes, le "update.php" et de la "update_ac.php la page qui exécute le script après avoir cliquer sur "soumettre" sur la Forme, le code est comme ci-dessous:
update.php
<?php
$host="localhost"; //Host name
$username="member2"; //Mysql username
$password="********"; //Mysql password
$db_name="audits"; //Database name
$tbl_name="data"; //Table name
//Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//get value of id that sent from address bar
$id=$_GET['id'];
//Retrieve data from database
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<form name="form1" method="post" action="update_ac.php">
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td> </td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
</tr>
<tr>
<td align="center"> </td>
<td align="center"><strong>Barcode</strong></td>
<td align="center"><strong>Product</strong></td>
<td align="center"><strong>Category</strong></td>
<td align="center"><strong>Assigned</strong></td>
<td align="center"><strong>Notes</strong></td>
</tr>
<tr>
<td> </td>
<td align="center">
<input name="barcode" type="text" id="barcode" value="<? echo $rows['barcode']; ?>">
</td>
<td align="center">
<input name="product" type="text" id="product" value="<? echo $rows['product']; ?>" size="15">
</td>
<td align="center">
<select name="category" id="category" value="<? echo $rows['category']; ?>">
<option value="Hardware">Hardware</option>
<option value="Software">Software</option>
<option value="Furniture">Furniture</option>
</select>
</td>
<td align="center">
<select name="assigned" id="assigned" value="<? echo $rows['assigned']; ?>">
<option value="name1">Name 1</option>
<option value="name1">Name 2</option>
<option value="name1">Name 3</option>
<option value="name1">Name 4</option>
</select>
</td>
<td align="center">
<input name="notes" type="text" id="notes" value="<? echo $rows['notes']; ?>" size="15">
</td>
</tr>
<tr>
<td> </td>
<td>
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
</td>
<td align="center">
<input type="submit" name="Submit" value="Submit">
</td>
<td> </td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<?php
//close connection
mysql_close();
?>
update_ac.php
<?php
$host="localhost"; //Host name
$username="member2"; //Mysql username
$password="********"; //Mysql password
$db_name="audits"; //Database name
$tbl_name="data"; //Table name
//Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//update data in mysql database
$sql="UPDATE $tbl_name SET barcode='$barcode', product='$product', category='$category', assigned='$assigned', notes='$notes' WHERE id='$id'";
$result=mysql_query($sql);
//if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='assets.php'>View Changes</a>";
echo "<BR>";
echo "<a href='login-home.php'>Home</a>";
}
else {
echo "ERROR";
}
?>
Maintenant, je l'ai fait tirer à partir d'une les plus âgés site et le type de 'modifié en fonction de mes besoins propres, en vain. J'ai même fait un copie/coller de leur Tutoriel (avec leur Base de données) et même pour ceux qui n'ont pas de travail, ce qui semble indiquer que quelque chose est incorrect avec le code quelque part. Merci à l'avance.
- Ce que le débogage avez-vous fait? Je pense que vous pouvez briser ce vers le bas dans un simple cas d'utilisation. Si vous avez besoin de poster ce code je soupçonne que vous pouvez faire plus d'efforts pour résoudre ce problème.
- Que cherchez-vous à qui vous fait penser que l'enregistrement n'a pas à jour?
- Hm, je ne vois pas où vous définissez $code à barres, $produit et d'autres variables.
- Salut Dan, c'est pas mon réel assets.php la page ainsi que la table lors de la vérification dans phpMyAdmin ainsi. Ci-dessous, je crois que l'erreur se situe à l'absence de variables, dont im sur le point de tester.
Vous devez vous connecter pour publier un commentaire.
Je ne vois rien dans le second script définition de ces variables. Le formulaire de valeurs ne sont pas automatiquement passer dans des variables, vous devez récupérer le $_POST variable de tableau, qui est pourquoi vous avez ce 'post' méthode de votre forme sur la première page. Vous faites comme ceci:
Vous n'avez pas besoin de l'instruction si, mais c'est sympa pour le dépannage et l'erreur générale de la prévention. Il est tout à fait sûr que le terrain était à la fois ensemble et pas vide.
(Je voudrais expliquer des tableaux, mais il semble que vous avez déjà une emprise sur eux en fonction de votre boucle avec le $lignes variable. Si vous avez besoin d'aide faites le moi savoir et je vais vous donner une brève explication et vous lien pour un tutoriel.)
id
à' OR '1'='1
ou pour le pire! (Puisque vous êtes en train de faire une vérification d'erreur dans cet exemple de code, quelqu'un à venir le long pourrait penser que c'est complet et essayer de le copier et l'utiliser comme l'est!)code'$_POST['barcode']=$barcode; $_GET['id']=$id;'code
Et de même pour les autres entrées. J'ai tiré cela de cette lien Toujours difficile. Les états du succès et a mon option pour 'voir' l'origine de l'Actif de la page, mais n'a pas réellement été mis à jour (même avec la vérification de la table de données dans phpMyAdmin). Bien que je ne vois pas $_POST dans update.php seulement $row qui est en corrélation.Vous mettre à jour les valeurs que vous devez utiliser $_POST[NOM de SÉLECTIONNER] en vous update_ac.php
Ce code fonctionne il suffit de copier et de les coller dans update_ac.php