Enregistrer des modifications

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Enregistrer des modifications

par Victor BRITO » 27 mai 2008, 14:45

La meilleure méthode consiste à récupérer l'identifiant unique de l'enregistrement à modifier (un identifiant inséré dans une colonne de ta table sous forme d'entier auto-incrémenté lorsqu'un nouvel enregistrement est effectué). Encore faut-il récupérer cet identifiant dès l'insertion de l'enregistrement (regarde du côté de mysql_insert_id() ;) ) ou, à défaut, effectuer une requête de type SELECT sélectionnant l'identifiant unique correspondant au client en question, comme suit :

Code : Tout sélectionner

SELECT id FROM clients_prospects WHERE email='[email protected]'
Encore faut-il s'assurer que l'adresse e-mail est unique (autrement dit, une seule occurence de cette adresse dans la table). Ensuite, la requête de mise à jour ressemblera à ça :

Code : Tout sélectionner

UPDATE clients_prospects SET [ici tes instructions de mise à jour] WHERE id=identifiant

par flippaeti » 27 mai 2008, 12:47

sachant que je débute je ne sais pas trop quoi mettre dans "where"

selon ma logique il faudrait que j'y retourne les anciennes informations du client que je souhaite modifier donc faire :

Code : Tout sélectionner

mysql_query ("UPDATE clients_prospects SET nom_resp='$resp', email='$email', etat='$etat' WHERE nom_resp= [i]L'ancienne valeur[/i]");


mais je ne sais pas comment retourner cette ancienne valeur :s

par Victor BRITO » 27 mai 2008, 12:18

Je viens de réaliser que mes requêtes UPDATE devrait tout de même avoir un WHERE pour qu'il sache pour quel client modifier non ?
Il vaut mieux indiquer une condition pour une mise à jour d'enregistrements, en effet.

par flippaeti » 27 mai 2008, 12:15

Je viens de réaliser que mes requêtes UPDATE devrait tout de même avoir un WHERE pour qu'il sache pour quel client modifier non ?

par geqr » 27 mai 2008, 11:52

vraiment dsl Zeus :oops:

tu as quoi comme erreur à l'exécution flippaeti?

fais un echo des différentes requêtes et de leur résultats afin de voir si tes reqûetes sont correctes..et dit nous ce qui cloche :D
La deuxième pages ne sert peut être à rien ou du moins pourrais directement être introduite dans la page principale, les données ne sont pas récupérer je ne sais pas trop pourquoi certainement un problème au niveau de la reliure entre la page devistraitement et fiche_devis !
oui le traitement du formulaire aurait très bien pu être sur devis.php, mais le problême n'est pas réellement la..regarde aussi le passage des valeurs..

par flippaeti » 27 mai 2008, 11:29

ben malgrès tout ça, les modifications ne sont toujours pas envoyer dans la BDD !

Donc c'est que y a un truc qui marche pas :D

La deuxième pages ne sert peut être à rien ou du moins pourrais directement être introduite dans la page principale, les données ne sont pas récupérer je ne sais pas trop pourquoi certainement un problème au niveau de la reliure entre la page devistraitement et fiche_devis !

par zeus » 27 mai 2008, 11:20

Tu attends du code tout fais prêt à l'emploi? c'est pas ici que tu le trouvera..
Merci de ton implication gegr, mais c'est aux modérateurs de dire ça ;)

Sinon, flippaeti, quelles sont tes erreurs maintenant que tu as modifiés quelques trucs ?

par flippaeti » 27 mai 2008, 11:17

j'ai un peu solutionné le problème mais il y a des erreurs !

Maintenant j'ai créer une troisième pages pour récupérer les données, je ne sais pas s'il fallait faire autrement.

code page "devistraitement":
<?php include(header("Location:devis.php")); ?>
<?php

$num=$_POST["num"];
$date=$_POST["date"];
$resp=$_POST["resp"];
$email=$_POST["mail"];
$etat=$_POST["etat"];
$des=$_POST["des"];
$com=$_POST["com"];
$mont=$_POST["montant"];

if (isset($_POST['bouton'])){

mysql_query ("UPDATE clients_prospects SET nom_resp=$resp, email=$email, etat=$etat");

mysql_query ("UPDATE devis SET num_devis=$num, date_devis=$date, commentaires=$com, montant_devis_ht=$mont"); 
}
?>
et pour la page devis le code a un peu changer aussi, tout est en php !

page "fiche_devis":
<?php
 
//pour enregistrer le numéro correspondant à celui du client
$nom_page2=$_SERVER['QUERY_STRING'];
$nom2=explode("=", $nom_page2);
$name2=$nom2[1];


$requete = mysql_query("SELECT d.num_devis 'N° DEVIS', d.date_devis 'DATE', cp.nom_resp 'RESPONSABLE', d.designation_devis 'DESIGNATION', d.etat_devis 'ETAT', d.commentaires                       'COMMENTAIRES', d.montant_devis_ht 'MONTANT HT',cp.email 'EMAIL'
						FROM clients_prospects AS cp, devis AS d
						WHERE cp.id=d.id AND d.num_devis='$name2'"); 

echo '<table bgcolor="#CCCCCC" cellspacing="10" width="100%">';
echo '<td>';

echo '<form method="post" name="devisform" action="devistraitement.php">'; 
 while($res = mysql_fetch_row($requete))
{
echo '<h2 class=form>';
echo '<b>N° DEVIS : </b><input style="text-align:center" size=10 type="int" name="num" value='.$res[0].'><br><br>';

echo '<b>Date : </b><input style="text-align:center" size=10 type="text" name="date" value='.date('d/m/Y',$res[1]).'><br>';
echo '<b>Responsable : </b><input style="text-align:center" size=20 type="text" name="resp" value='.$res[2].'><br>';
echo '<b>Email : </b><input style="text-align:center" size=30 type="text" name="mail" value='.$res[7].'><br><br>';

echo '<b>Etat : </b>&nbsp;non accepté'; 
$check='checked';
if ($res[4]=='non accepté'){ echo '<input name="etat" type="radio" '.$check.'>';} else {echo '<input name="etat" type="radio">';}
echo '&nbsp;&nbsp;&nbsp;accepté';
if ($res[4]=='accepté'){ echo '<input name="etat" type="radio" '.$check.'>';} else {echo '<input name="etat" type="radio">';}
echo '&nbsp;&nbsp;&nbsp;traité';
if ($res[4]=='traité'){ echo '<input name="etat" type="radio" '.$check.'><br><br>';} else {echo '<input name="etat" type="radio"><br><br>';}

echo '<div><label class="alignTopLeft"><b>Désignation principale : </b></label><textarea name="des" id="comments4" rows="5" cols="50">'.$res[3].'</TEXTAREA><br>';
echo '<div><label class="alignTopLeft"><b>Commentaires : </b></label><textarea name="com" id="comments4" rows="5" cols="50">'.$res[5].'</TEXTAREA><br><br>';

echo '<b>MONTANT HT : </b><input style="text-align:center" type="text" name="montant" value='.$res[6].'><br>';
echo '</h2>';
}
echo '<h1 class=index align=center>';
echo '<a href="devis.php">Retour</a>';
echo '&nbsp';
echo '<input type="submit" name"bouton" value="enregistrer">';
echo '&nbsp';
echo '<a href="devis.php">Annuler</a>';
echo '&nbsp';
echo '<a href="devis.php">Supprimer</a>';
echo '&nbsp';
echo '</form>';
echo '</td>';
echo '</table>';
echo '</h1>';
?>
Mais sa ne marche pas encore ! maintenant ai-je droit à votre aide pour corriger mes erreurs ? Merci d'avance

par Victor BRITO » 26 mai 2008, 19:11

va voir du coté de ALTER TABLE pour faire la modification d'un enregistrement dans ta base de données
ALTER TABLE modifie la structure d'une table ; pour modifier un enregistrement d'une table, la commande idoine est UPDATE. ;)

par flippaeti » 26 mai 2008, 16:41

je ne demande pas la réponse mais la logique !

je me suis dis qu'il fallait prendre les nouvelles données et les relier avec les champs de la table devis, mais sachant que je débute en php je ne vois même pas comment recupérer les informations nouvelles !
faire un mysql_query (INSERT INTO ??

par geqr » 26 mai 2008, 15:49

Tu attends du code tout fais prêt à l'emploi? c'est pas ici que tu le trouvera..

Tu postes du code, ici ca corrige, ca aide, ca oriente, mais ca fournit pas du code sans que tu es même réfléchit à la solution..

Pour ton dit "problème du jour", commence par récupèrer les données du form ac la méthode GET ou POST, contrôle ces mêmes données pour quelles correspondent à ce que tu attends de l'utilisateur, puis va voir du coté de UPDATE pour faire la modification d'un enregistrement dans ta base de données.
Pour la redirection à la suite des modifs, commence par jetter un coup d'oeil sur les différents types de redirection PHP, HTML, Javascript.. ;)

Edit : Merci, pour la correction, j'étais en train de faire des alter table donc ca c'est écrit tout seul :lol:

Enregistrer des modifications

par flippaeti » 26 mai 2008, 15:35

Exposition du problème du jour :

J'ai deux pages :
_"devis" (contient le tableau qui renvoi les enregistrements de devis)
_"fiche_devis" (contient le formulaire permettant de modifier l'enregistrement du devis)

Le Problème:
Je dois configurer le bouton enregistrer de la page "fiche_devis"; ce bouton doit enregistrer les modifications faite sur le champ choisi dans le tableau.
Comment valider les modifications, donc renvoyer les nouvelles données dans la BDD et par la même occasion qu'en enregistrant on retombe sur la page "devis" avec les modifications effectués.

Extrait code Php page "fiche_devis":
<form method="post" name="devisform">
<? while($res = mysql_fetch_row($requete))
{
echo '<h2 class=form>';
echo '<b>N° DEVIS : </b><input style="text-align:center" size=10 type=int name=devis value='.$res[0].'><br><br>';

echo '<b>Date : </b><input style="text-align:center" size=10 type=text name=date value='.date('d/m/Y',$res[1]).'><br>';
echo '<b>Responsable : </b><input style="text-align:center" size=20 type=text name=resp value='.$res[2].'><br>';
echo '<b>Email : </b><input style="text-align:center" size=30 type=text name=mail value='.$res[7].'><br><br>';

echo '<b>Etat : </b>&nbsp;non accepté'; 
$check='checked';
if ($res[4]=='non accepté'){ echo '<input name=etat type=radio '.$check.'>';} else {echo '<input name=etat type=radio>';}
echo '&nbsp;&nbsp;&nbsp;accepté';
if ($res[4]=='accepté'){ echo '<input name=etat type=radio '.$check.'>';} else {echo '<input name=etat type=radio>';}
echo '&nbsp;&nbsp;&nbsp;traité';
if ($res[4]=='traité'){ echo '<input name=etat type=radio '.$check.'><br><br>';} else {echo '<input name=etat type=radio><br><br>';}

echo '<div><label class="alignTopLeft"><b>Désignation principale : </b></label><textarea name="des" id="comments4" rows="5" cols="50">'.$res[3].'</TEXTAREA><br>';
echo '<div><label class="alignTopLeft"><b>Commentaires : </b></label><textarea name="com" id="comments4" rows="5" cols="50">'.$res[5].'</TEXTAREA><br><br>';

echo '<b>MONTANT HT : </b><input style="text-align:center" type=text name=montant value='.$res[6].'><br>';
echo '</h2>';
}
?>
</form>
</td>
</table>
<h1 class=index align=center>
<a href="devis.php">Retour</a>
&nbsp;
<a href="devis.php">Enregistrer </a>
&nbsp;