Souci de modification en php

Fermé
bugs20007 Messages postés 196 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 21 janvier 2010 - 27 mars 2008 à 09:03
 Utilisateur anonyme - 28 mars 2008 à 18:35
Bonjour,

J'ai créer un petit script admin en PHP ou je peut créer une entrée, la supprimé et la modifier.
Pour créer ou supprimer une entrée cela fonctionne, mais pour modifier ca ne foctionne pas
quand je clic sur modifier, les données part bien dans le fichier formulaire.php mais après modification et cliquer sur envoyer la base n'est pas modifier.
je vous mets le fichier formulaire.php et execute.php

formulaire.php :

<html>
<body>
<?
if($_GET[action] == "modif") {

include("include.php");

$requete = "SELECT * FROM sav WHERE numero=$_GET[num]";
$resultat = mysql_query ($requete, $connection);
$test = mysql_fetch_row($resultat);
list ($numero, $nom, $prenom, $dat, $heure, $tec, $materiel, $pro, $diag, $trav, $etat) = $test;
}
?>
<form name="leformulaire" action="execute.php<?

switch ($_GET[action]) {
case "modif":
echo "?action=modif&num=$_GET[num]";
break;
case "insert":
echo "?action=insert";
break;
}

?>" method="post">
Nom du client :<br>
<input name="nom" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($nom, ENT_QUOTES)."'"; } ?>><br>
prenom :<br>
<input name="prenom" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($prenom, ENT_QUOTES)."'"; } ?>><br>
date d'entrée :<br>
<input name="dat" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($dat, ENT_QUOTES)."'"; } ?>><br>
Heure d'entrée :<br>
<input name="heure" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($heure, ENT_QUOTES)."'"; } ?>><br>
Technicien :<br>
<input name="tec" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($tec, ENT_QUOTES)."'"; } ?>><br>
Description du materiel entrée :<br>
<textarea name="materiel" cols=35 rows=6><? if($_GET[action]=="modif") { echo "'".htmlentities($materiel, ENT_QUOTES)."'"; } ?></textarea><br>
Problème déclarer par le client :<br>
<textarea name="pro" cols=35 rows=6><? if($_GET[action]=="modif") { echo "'".htmlentities($pro, ENT_QUOTES)."'"; } ?></textarea><br>
Diagnostic du technicien :<br>
<textarea name="diag" cols=35 rows=6><? if($_GET[action]=="modif") { echo "'".htmlentities($diag, ENT_QUOTES)."'"; } ?></textarea><br>
Travaux effectué par le technicien :<br>
<textarea name="trav" cols=35 rows=6><? if($_GET[action]=="modif") { echo "'".htmlentities($trav, ENT_QUOTES)."'"; } ?></textarea><br>
état du SAV :<br>
<input name="etat" type=text length=30 value=<? if($_GET[action]=="modif") { echo "'".htmlentities($etat, ENT_QUOTES)."'"; } ?>>En diagnostic / En réparation / Terminer / Cloturer / En attente<br>
<input type=submit value="envoyer!">
</form>
</body>
</html>
------------------------------------------------------------------------------------------------------------------------------------------------------------------

execute.php :

<?

include("include.php");
?>
<table border=1>
<tr><td><a href='execute1.php'>Mode Adminstrateur complet</a></td></tr>
<tr><td><a href='formulaire.php?action=insert'>ajouter un SAV</a></td></tr>
</table>
<?
$_POST[nom]."<br>";
$_POST[prenom]."<br>";
$_POST[dat]."<br>";
$_POST[heure]."<br>";
$_POST[tec]."<br>";
nl2br(stripslashes($_POST[materiel]))."<br>";
nl2br(stripslashes($_POST[pro]))."<br>";
nl2br(stripslashes($_POST[diag]))."<br>";
nl2br(stripslashes($_POST[trav]))."<br>";
$_POST[etat];


// pour supprimer, modifier, ajouter une entrée

if( $_GET['action'] == "suppr" ) {

$requetesupprime = "DELETE FROM sav WHERE numero='".$_GET['num']."' ";
mysql_query ($requetesupprime, $connection);
} elseif( $_GET[action] == "modif" ) {

$requetemodifier = "UPDATE sav SET numero='$_GET[num]', nom='$_POST[nom]', prenom='$_POST[prenom]', dat='$_POST[dat]', heure='$_POST[heure]', tec='$_POST[tec]', materiel='$_POST[materiel]', pro='$_POST[pro]', diag='$_POST[diag]', trav='$_POST[trav], etat='$_POST[etat]' WHERE numero='$_GET[num]' ";
mysql_query ($requetemodifier, $connection);
} elseif($_GET[action] == "insert" ) {

$requetecreation = "INSERT sav SET numero='', nom='$_POST[nom]', prenom='$_POST[prenom]', dat='$_POST[dat]', heure='$_POST[heure]', tec='$_POST[tec]', materiel='$_POST[materiel]', pro='$_POST[pro]', diag='$_POST[diag]', trav='$_POST[trav]', etat='$_POST[etat]' ";
mysql_query ($requetecreation, $connection);
}

$requete = "SELECT * FROM sav ORDER BY numero DESC";

$resultat = mysql_query ($requete, $connection);

if(isset($_SESSION[variable])) {
?>
<body bgcolor="#eeffff">
<? }
?>

<table align=center border=1>
<?
while ($test = mysql_fetch_row($resultat)) {

list ($numero, $nom, $prenom, $dat, $heure, $tec, $materiel, $pro, $diag, $trav, $etat) = $test;
echo '<tr><td>';
echo $nom;
echo '</td><td>';
echo $etat;
echo '</td><td>';
echo "<a href='execute.php?num=$numero&action=suppr'>Supprimer</a>";
echo '</td><td>';
echo "<a href='formulaire.php?num=$numero&action=modif'>Modifier</a>";
echo '</td></tr>';
}
?>
</table>
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Merci pour votre aide.
A voir également:

4 réponses

Utilisateur anonyme
27 mars 2008 à 10:27
Bonjour,

les données arrivent bien dans fromulaire.php, mais avez-vous fait une trace plus loin ?
allez vous dans le if de elseif( $_GET[action] == "modif" )
si oui avez-vous fait un echo de la requête pour voir la "tête" qu'elle a ?

0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 mars 2008 à 20:35
Bonsoir,

première remarque, prend l'habitude de mettre <?php ?> plutôt que <? ?>

à quoi sert çà:
<?
$_POST[nom]."<br>";
$_POST[prenom]."<br>";
$_POST[dat]."<br>";
$_POST[heure]."<br>";
$_POST[tec]."<br>";
nl2br(stripslashes($_POST[materiel]))."<br>";
nl2br(stripslashes($_POST[pro]))."<br>";
nl2br(stripslashes($_POST[diag]))."<br>";
nl2br(stripslashes($_POST[trav]))."<br>";
$_POST[etat];


si tu veux afficher ce que tu reçoit, il faut mettre echo nom: ".$_POST[nom]."<br>"; par exemple


pour un UPDATE il faut une condition sinon quelle entrée doit être modifiée:

"UPDATE sav SET  nom='$_POST[nom]' .......WHERE numero='$_GET[num]'"


mais le numéro ne doit pas être modifiable
0
bugs20007 Messages postés 196 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 21 janvier 2010 12 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
27 mars 2008 à 20:58
Dans le script execute.php la condition et bien present
UPDATE sav SET nom='$_POST[nom]' .......WHERE numero='$_GET[num]'"
mais la base ne ce modifie pas
j'ai supprimé les $_POST[nom]."<br>";
mais toujours pareil, les modif ne sont pas prise en compte

Merci pour votre aide
0
bugs20007 Messages postés 196 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 21 janvier 2010 12
27 mars 2008 à 20:01
enfaite quand je clique sur modifier la page formulaire.php s'ouvre bien avec les données dans chaque casse mais quand je modifie les champs et que je valide les infos ne sont pas modifier dans la base, je reviens à la page execute.php et les données n'ont pas etaient modifier.
je n'ai aucun message d'erreur mysql.
0
bugs20007 Messages postés 196 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 21 janvier 2010 12
27 mars 2008 à 21:33
help c'est la galère
personne pour verifier si je n'est pas ecrit ou ajouter des virgules ou il ne faut pas
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 mars 2008 à 11:05
Bonjour,

quelques détails de règles à respecter:

- dans toutes les balises html par exemple <input, tu dois mettre les valeurs des paremètres entre " ou '
exemple:
<input name="nom" type="text" length="30" value="<? if($_GET[action]=="modif") { echo "'".htmlentities($nom, ENT_QUOTES)."'"; } ?>"><br>

<input type="submit" value="envoyer!">



- dans les $_GET['action'] il faut que action soit entre '
ex:
elseif($_GET['action'] ==


ensuite quand tu auras bien tout mis ok, tu modifies cette partie pour avoir une trace (provisoirement bien sûr):

......
elseif( $_GET['action'] == "modif" ) {
echo "Coucou je passe par là<br>";//trace pour voir si on passe bien dans cette condition
//la on va voir si on reçoit bien tous les champs modifiés
echo "<pre>";
print_r($_POST);
echo "</pre>";

$requetemodifier = "UPDATE sav SET...........
mysql_query ($requetemodifier, $connection) or die ("Erreur requette modif ".mysql_error());
......



@lain
0
Utilisateur anonyme
28 mars 2008 à 18:35
recopie ça ainsi (copier coller) pour ne pas te mélanger entre les simples quote et les double quote.

$requetemodifier = "UPDATE sav SET numero='".$_GET[num]."', nom='".$_POST[nom]."', prenom='".$_POST[prenom]."', dat='".$_POST[dat]."', heure='".$_POST[heure]."', tec='".$_POST[tec]."', materiel='".$_POST[materiel]'"., pro='".$_POST[pro]'"., diag='".$_POST[diag]."', trav='".$_POST[trav].", etat='".$_POST[etat]."' WHERE numero='".$_GET[num]."' ";
0