Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Update d'un enregistrement MySQL avec PHP

13 réponses
Avatar
Otto Haldi
Bonjour

Je bébute en PHP et j'ai un problème de logique.

Depuis une liste je passe un identifiant pour afficher à
l'aide d'un formulaire les champs dans une nouvelle page
PHP.
A l'aide de l'identifiant je fais un select pour me pointer
sur l'enregistrement.

J'ai inclus dans mon formulaire un bouton pour enregistrer
les modifications.
J'ai pu réaliser ce programme jusque là.

Je voudrais maintenant que lorsque l'on click sur ce bouton
que le même programme PHP enregistre les modifications et
relise l'enregistrement pour contrôle.

Y-a-t'il quelqu'un pour me dire comment faire ou me dire ou
l'on peut trouver des examples?

Merci d'avance pour tous renseignements.

O. Haldi,

Si quelqu'un veux m'aider je peux lui envoyer mon source.

10 réponses

1 2
Avatar
Nudrema
Je voudrais maintenant que lorsque l'on click sur ce bouton
que le même programme PHP enregistre les modifications et
relise l'enregistrement pour contrôle.

Y-a-t'il quelqu'un pour me dire comment faire ou me dire ou
l'on peut trouver des examples?


euh... dans mysql tu peux toujours récupérer les ids de champs modifiés
via mysql_affected_rows et afficher le contenu de ces champs pour
vérifier manuellement... ou vérifier que mysql n'a pas renvoyé d'erreur
lors de la requête... l'astuce : remplacer les mysql_query() par ceci :µ

$sql = "UPDATE ...";
$answer = mysql_query($sql,$cnx) or trigger_error('Erreur SQL.<br
/>Requête : '.htmlentities($sql).'<br />Erreur : '.mysql_error(),
E_USER_ERROR);

ce qui provoquera l'affichage par PHP d'une éventuelle erreur (horreur?)
retournée par mysql...

ceci dit je ne suis pas certain d'avoir compris la question ^^

Avatar
Guillaume Bouchard
Otto Haldi wrote:

Bonjour


Bonjour.

Je bébute en PHP et j'ai un problème de logique.


<blague>
Ne serais-ce pas plutot l'inverse ?
</blague>

Depuis une liste je passe un identifiant pour afficher à
l'aide d'un formulaire les champs dans une nouvelle page
PHP.
A l'aide de l'identifiant je fais un select pour me pointer
sur l'enregistrement.

J'ai inclus dans mon formulaire un bouton pour enregistrer
les modifications.
J'ai pu réaliser ce programme jusque là.

Je voudrais maintenant que lorsque l'on click sur ce bouton
que le même programme PHP enregistre les modifications et
relise l'enregistrement pour contrôle.


En fait, la technique dans ce genre de cas

// modification de l'enregistrement
// affichage de l'enregistrement.

Bref, tu modifie en haut de page et comme tu affiche ( dans tout les cas
) apres et bien les modifications auront été prisent en compte.

Si quelqu'un veux m'aider je peux lui envoyer mon source.


Disont que je trouve ta question un peut imprecise, si ma reponse vague
ne te convient pas ( ca m'ettonerais pas :)) tu peut poster ton code ici
( dans le corps du message, pas en fichier joint ) en limitant au strict
minimum et en esseyant qu'il soit propre, cela nous facilitera peut etre
pour t'aider.

--
Guillaume.

Avatar
John Gallet
<mode type="evengelisateur" de="recomandation" du="w3c">
- tag en minuscules
- oublié les declaration de design ( couleur ) dans le html, mais plutot
dans un fichier texte
- doctype ?
- meta COntent-type
</mode>


<TROLL Couleur=On>
Sopo la syntaxe ! Vive le HTML 3.2 libre ;-)
</TRoll>

Ensuite tu doit toujours verifié la validité de ton ID, exemple, tu veut
seulement un nombre
Bof. Au stockage oui. Au select, c'est mieux, mais après tout ce sera le

principe très simple du "garbage in, garbage out". Si quelqu'un s'amuse
avec tes paramètres et n'envoie pas la bonne donnée, si ça ne pourrit
pas la base, tant pis pour lui.

Je ne te parle meme pas de la faille de securité immense que tu laissais
passer en faisant ta requete SQL sur un id non testé.


N'exagérons pas non plus dans le bon sens. Oui il est bon de filtrer un
peu ses variables. C'est pas moi qui dirait le contraire ! Surtout au
stockage (INSERT/UPDATE). Mais de là à parler d'une "faille de sécurité
immense" il y a de la marge hein...

Puis extract c'est un truc de porc...
Bof. Ca ne me viendrait pas à l'idée de l'utiliser parce que ça risque

d'écraser des varables locales et que ça ne sert pas à grand chose (on
peut en effet se demander quel sombre besoin a bien pu pousser quelqu'un
à doter le langage de cette fonction, et ce dès la 3.0.7) mais en
porgrammation (non, non, pas de faute de frappe) j'ai lu pire.

$row['nom_champs']; fonctionne, pourquoi s'en privé...
Par exemple parce que pour l'utiliser dans un echo avec une chaîne c'est

chiant. Il faut ou utiliser
echo "yyyy {$row['nomcol']} xxxx";
ou
echo 'yyyy'.$row['nomcol']."zzzz $toto";
Tu remarqueras l'économie de bouts de chandelles qui t'est chère ;-)

Je suis de plus en plus surprit du nombre de personnes qui n'ont pas
bien comprit les principes du html et qui font du php...
No comment.


a++
JG

Avatar
Guillaume Bouchard
John Gallet wrote:

<TROLL Couleur=On>
Sopo la syntaxe ! Vive le HTML 3.2 libre ;-)
</TRoll>


<b><MarQueE>Yeahhh ViVe le |-|t|/||_ 0.4 beta 375 avec balise proprio
|/|lc|90$0ft. Ca rox plus mieux...</B></MarquEe>

N'exagérons pas non plus dans le bon sens. Oui il est bon de filtrer un
peu ses variables. C'est pas moi qui dirait le contraire ! Surtout au
stockage (INSERT/UPDATE). Mais de là à parler d'une "faille de sécurité
immense" il y a de la marge hein...


Je prefere faire peur que de se retrouver avec une 'injection SQL' sur
son prochain script de login...

Bof. Ca ne me viendrait pas à l'idée de l'utiliser parce que ça risque
d'écraser des varables locales et que ça ne sert pas à grand chose (on
peut en effet se demander quel sombre besoin a bien pu pousser quelqu'un
à doter le langage de cette fonction, et ce dès la 3.0.7) mais en
porgrammation (non, non, pas de faute de frappe) j'ai lu pire.


Moi aussi, mais cela n'empeche pas que ca fait partit des trucs idiots
que je voudrais voir disparaitre dans php5 ( et je peut toujours courir... )

$row['nom_champs']; fonctionne, pourquoi s'en privé...


Par exemple parce que pour l'utiliser dans un echo avec une chaîne c'est
chiant. Il faut ou utiliser
echo "yyyy {$row['nomcol']} xxxx";
ou
echo 'yyyy'.$row['nomcol']."zzzz $toto";


Depuis j'ai evolué, je sais recopier des vars :) Mais disont que là le
probleme est different, entre recopier betement dans l'environement
local toutes ses vars ou se servir que de cele que l'on à besoin

Autre chose, pour economisé de la memoire,
extract(mysql_fetch_assoc(..)) c'est mieux :)

Ou alors directos le bon truc a la method bourin

list($truc,$chose,$bidule) = mysql_....;

Ca j'aime bien :)

Tu remarqueras l'économie de bouts de chandelles qui t'est chère ;-)


Ba attend, 0.00000000000002 seconde ( je sais meme pas si il faudrais
mettre un 's' à seconde la... ) ca peut changer la face du monde. Non ?

Plus serieusement, je trouve plus lisible une chaine ou l'on ne melange
pas variable, constante et chaine de caracteres, une des forceq de php
reside dans son concept de typage tres libre, mais il ne faut pas en
abuser...

echo " lalala $totot lallala $truc[BOU] hehe TRUC";

c'est plutot flou.
ALors que

echo " lalala ".$totot." lallala ".$truc[BOU]." hehe ".TRUC;

On saisit reelement ce que l'on à... ( comme le coup du tableau, on ne
sais pas vraiment si l'on accede a la ligne 'BOU' ou a la ligne
referencé par la contenu de la constante BOU...

Bref.

--
Guillaume.


Avatar
Nudrema
$row['nom_champs']; fonctionne, pourquoi s'en privé...


Par exemple parce que pour l'utiliser dans un echo avec une chaîne c'est
chiant. Il faut ou utiliser
echo "yyyy {$row['nomcol']} xxxx";
ou
echo 'yyyy'.$row['nomcol']."zzzz $toto";
Tu remarqueras l'économie de bouts de chandelles qui t'est chère ;-)



c'est pas chiant du tout : echo("yyyy $row[nomcol] zzzz $toto") c'est
encore le plus court ^^


Avatar
Otto Haldi
Bonjour Guillaume,

Tu rappel directement avec le formulaire ce script là et tu fait les
modification via UPDATE ( si tu ne connais pas UPDATE, tu n'est pas sur
le bon newsgroup ) Avant tout autre chose. comme cela quand les
modifications auront été faites, le script reprendra son cours normale
et il fera ton affichage.

Merci pour ton aide critique. Je sais que j'ai encore beaucoup à

apprendre. Malheureusement les bouquins que je possède n'expliquent pas
tout cela!
Si je te comprends bien, je dois rappeler ce même script. Mais comment
détecter si c'est le bouton "Enregistrer" qui à appelé ce même script afin
que je passe dans la boucle UPDATE ?

Je remercie aussi les autres intervenants pour leurs conseils.

Salutations

Otto

Avatar
Nudrema
Si je te comprends bien, je dois rappeler ce même script. Mais comment
détecter si c'est le bouton "Enregistrer" qui à appelé ce même script afin
que je passe dans la boucle UPDATE ?


<form id="monform" action="<? echo $_SERVER['PHP_SELF']; ?>"
method="post"><div>
[...]
<input type="hidden" name="action" value="enregistrer" />
</div></form>

|
|
V

if (isset($_POST['action']) && $_POST['action']=='enregistrer') {

// action

}

Mais tu peux aussi gérer l'action sur un second script et rediriger vers
la première page par après (c'est ce que je fais personnellement)...

Avatar
Guillaume Bouchard

Merci pour ton aide critique. Je sais que j'ai encore beaucoup à
apprendre. Malheureusement les bouquins que je possède n'expliquent pas
tout cela!


Normal, un livre n'expliquera jamais la logique de programation, cela
s'apprend seul.

Si je te comprends bien, je dois rappeler ce même script. Mais comment
détecter si c'est le bouton "Enregistrer" qui à appelé ce même script afin
que je passe dans la boucle UPDATE ?


Ton formulaire envoye bien des variables non ? :)
Donc il te suffit de tester ses variables, comme par exemple le button
submit

if(isset($_POST['submit']))
{
// suite;


Bonne chance.

<annonce>
Vous avez un modem adsl qui traine et qui ne vous sert pas, aider moi a
remplacer mon cher snouki ( c'est le modem :) qui est décédé dans
d'atroce soufrance.
</annonce>


--
Guillaume.

Avatar
Otto Haldi
Normal, un livre n'expliquera jamais la logique de programation, cela
s'apprend seul.

D'accord, mais j'ai bien lire les questions des autres et là j'en

apprend encore plus...

Salutations

Avatar
Otto Haldi
Merci à tous pour votre aide.
C'est exactement ce que je cherchais!


Remarque que ma technique fait exactement la meme chose a moindre fraits.

Encore merci.


Guillaume je vois que tu es un crack en php.
Depuis quelques jours, j'ai compris plein de trucs grace à ce forum. Mais à
pars taper un nombre de lignes importants, je ne vois pas encore comment
passer "a moindre fraits" env. 30 variables d'un script à un même script
que je rappelle par $PHP_SELF.

Peux-tu me mettre sur le bon chemin?

Meilleures salutations

Otto


1 2