OVH Cloud OVH Cloud

Update sur requete (presque debutant)

2 réponses
Avatar
ADB
lorsque je lance une requête du type
$requete = "SELECT * FROM base WHERE $critere LIKE \"%$choix%\" ORDER BY nom
";
j'obtiens, disons, 10 enregistrements, affichés de manière à pouvoir les
modifier :
<INPUT NAME=\"nom\" VALUE=\"$table[nom]\">";
Je ne veux modifier que 3 de ces enregistrements.

Actuellement, si je fais une modification et que je valide, avec ensuite un
$req="update base set nom=\"$nom\" ";
la commande update ne s'applique qu'au dernier enregistrement affiché et non
pas à ceux que j'ai réellement modifiés.

Comment puis-je faire pour updater uniquement les enregistrements que j'ai
modifiés ?

Dans phpmyadmin, par exemple, on peut sélectionner plusieurs
enregistrements, en modifier un ou plusieurs et cliquer sur Exécuter
(n'importe quel bouton exécuter en fait) pour que les modifications soient
enregistrées - la commande update s'appliquant à tous les enregistrements,
modifiés ou non.

ADB
e-mail : adupinbe@noos.fr
Sites :
http://guidemediterranee.free.fr : tous les ports et mouillages de
Méditerranée
http://annupresse.free.fr : l'Annuaire des Journalistes indépendants
francophones
http://annued.free.fr : l'Annuaire de l'Edition francophone

2 réponses

Avatar
Guillaume Bouchard
ADB wrote:
lorsque je lance une requête du type
$requete = "SELECT * FROM base WHERE $critere LIKE "%$choix%" ORDER BY nom
";


Beurk de chez beurk

$req = "SELECT teschamps FROM base WHERE $critere = truc ....";

Ne pas utiliser like sauf si tu en a expressement besoin, c'ets une
mauvaises habitude qui donne des failles de securité par la suite.

j'obtiens, disons, 10 enregistrements, affichés de manière à pouvoir les
modifier :
<INPUT NAME="nom" VALUE="$table[nom]">";


<input type="text" name="nom" id="nom" value="tavaleur" />

Manquais 2 attributs dont un obligatoire :)


$req="update base set nom="$nom" ";


Manque le where pour savoir quel enregistrement updater.

la commande update ne s'applique qu'au dernier enregistrement affiché et non
pas à ceux que j'ai réellement modifiés.

Comment puis-je faire pour updater uniquement les enregistrements que j'ai
modifiés ?


Utilise le WHERE.

xpost et fu2 sur le ng kivabien fr.comp.applications.sgbd

--
Guillaume.

Avatar
Christophe MERESSE
"Guillaume Bouchard" a écrit dans le message de
news:4038f773$0$2440$
ADB wrote:
lorsque je lance une requête du type
$requete = "SELECT * FROM base WHERE $critere LIKE "%$choix%" ORDER BY
nom


";


Beurk de chez beurk

$req = "SELECT teschamps FROM base WHERE $critere = truc ....";

Ne pas utiliser like sauf si tu en a expressement besoin, c'ets une
mauvaises habitude qui donne des failles de securité par la suite.


C'est un peu definitif comme conseil.
Effectivement LIKE ne doit pas remplacer = mais visiblement ici il
veut recuperer tous les enregistrements dont le $critere contient
$choix et je ne vois pas comment il pourrait faire ca avec un
Personellement d'ailleur je ne vois pas quelle faille de securité on
pourrait introduire avec LIKE et pas avec Si tu as un exemple, je suis preneur...

A+
Christophe