UPDATE ?

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 : UPDATE ?

par Truc » 28 avr. 2008, 14:20

Modération :
grinding_yanus, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par grinding_yanus » 28 avr. 2008, 14:07

Chez moi aussi ça marche mais le problème c'est qu'avec le INSERT avant le UPDATE, la position que je viens d'ajouter est mise dans la table avant la requête UPDATE si bien que la position qui s'ajoute s'auto-incrémente de 1.
En écrivant ce message je me suis dis qu'il n'y avait qu'a mettre la requête UPDATE avant INSERT....

... et ça fonctionne :D :D

Merci à toi pour ton aide
bonne continuation et porte toi bien :)

par Cyrano » 28 avr. 2008, 13:17

Alors il doit y avoir un problème avec la valeur récupérée dans $_POST.

Je viens de faire un petit essai et ça fonctionne parfaitement :

Code : Tout sélectionner

mysql> CREATE TABLE `test` ( -> `test_id` int(11) NOT NULL auto_increment, -> `test_texte` varchar(255) NOT NULL, -> `test_pos` smallint(5) NOT NULL, -> PRIMARY KEY (`test_id`) -> ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; Query OK, 0 rows affected (0.11 sec) mysql> mysql> INSERT INTO `test` (`test_texte`, `test_pos`) VALUES -> ('texte 1', 1), -> ('texte 2', 2), -> ('texte 3', 3), -> ('texte 4', 4), -> ('texte 5', 5), -> ('texte 6', 6), -> ('texte 7', 7); Query OK, 7 rows affected (0.02 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> mysql> SELECT * FROM `test`; +---------+------------+----------+ | test_id | test_texte | test_pos | +---------+------------+----------+ | 8 | texte 1 | 1 | | 9 | texte 2 | 2 | | 10 | texte 3 | 3 | | 11 | texte 4 | 4 | | 12 | texte 5 | 5 | | 13 | texte 6 | 6 | | 14 | texte 7 | 7 | +---------+------------+----------+ 7 rows in set (0.00 sec) mysql> mysql> UPDATE `test` -> SET test_pos = test_pos + 1 -> WHERE test_pos >= 4; Query OK, 4 rows affected (0.05 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> mysql> SELECT * FROM `test`; +---------+------------+----------+ | test_id | test_texte | test_pos | +---------+------------+----------+ | 8 | texte 1 | 1 | | 9 | texte 2 | 2 | | 10 | texte 3 | 3 | | 11 | texte 4 | 5 | | 12 | texte 5 | 6 | | 13 | texte 6 | 7 | | 14 | texte 7 | 8 | +---------+------------+----------+ 7 rows in set (0.00 sec)
Comme tu peux le voir, le résultat entre les deux SELECT * a changé.

par grinding_yanus » 28 avr. 2008, 12:28

Il ne me retourne aucune erreur, mais il prend en compte le numéro que je viens de saisir dans le formulaire si bien qu'il se trouve directement dans la table.

En gros si je met dans mon formulaire le champ position à 1, il met dans la table le champ printPos à 1 et le passe directement à 2 vu qu'il vient de l'entrer dans la table.

Je voudrais juste que lorsque je rentre un article avec un numéro de position déjà présent dans la table il ajoute 1 a tout les printPos supérieur ou égale à la position envoyée pour l'inséré dedans.

Mais avec UPDATE SQL ne me retourne aucun message d'erreur.

PS: merci pour l'attention, je dois pas très bien m'expliquer du fait que je débute...

par Cyrano » 28 avr. 2008, 12:17

Qu'est-ce que retourne MySQL lorsque tu exécutes ta requête ?

par grinding_yanus » 28 avr. 2008, 12:12

oups désolé c'est une vieille version de la table.
La voici mise à jour, désolé :oops:

CREATE TABLE `print` (
`printId` int(11) NOT NULL auto_increment,
`printNom` varchar(50) NOT NULL,
`printDesc` varchar(250) NOT NULL,
`printImg` varchar(50) NOT NULL,
`printPos` int(5) NOT NULL,
PRIMARY KEY (`printId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

par Cyrano » 28 avr. 2008, 12:00

Il n'y a pas de colonne printPos dans ta table, cette requête n'a donc absolument aucune chance d'aboutir :-k

UPDATE ?

par grinding_yanus » 28 avr. 2008, 10:40

Bonjour à tous,
je vous écris car je bute sur le même problème depuis plusieurs jour.

J'ai un formulaire que je remplis pour mettre à jour un site, il y a dans ce formulaire un champ 'position' qui détermine la position de l'article dans le site. Je voudrais que à chaque envoi du formulaire la table 'print' se mette à jour. J'ai donc créé un champ 'printPos' qui prend la valeur du champ 'position' du formulaire. Il faudrait donc que le champ 'printPos' de la table s'incrémente de 1 quand ce champ est supérieur ou égal au champ 'position' envoyé par le formulaire.

J'ai fait plusieur essais après avoir cherché dans des forum, des sites etc mais en vain.

Je pense quand même que la solution se trouve du côte de UPDATE, j'ai donc fait cette requete :

Code : Tout sélectionner

"UPDATE `print` SET printPos = printPos+1 WHERE printPos >= " . $_POST['position'];
Mais cela ne fonctionne pas...

Je fonctionne avec easyphp et mysql

La table 'print' :

CREATE TABLE `print` (
`printId` int(11) NOT NULL auto_increment,
`printNom` varchar(50) NOT NULL,
`printDesc` varchar(250) NOT NULL,
`printImg` varchar(50) NOT NULL,
PRIMARY KEY (`printId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Je me demandais donc si quelqu'un ici avait un peu de temps pour jeter un oeil sur mon pb.

Merci d'avance à vous