[Problème] UPDATE et Foreach

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 : [Problème] UPDATE et Foreach

par mere-teresa » 09 mars 2007, 15:40

REPLACE INTO `Personne` (login,nom,prenom,groupe,rang) VALUES ('fabie.lecler','Lecler','Fabie',1,52);
Et la requête qui pose pb, tu la copie-colles dans PHPMyAdmin ou MySQL Query Browser

par Tom2me » 09 mars 2007, 14:18

alan8fortune
alan.fortune
51
REPLACE INTO `Personne` (login,nom,prenom,groupe,rang) VALUES ('alan.fortune',' fortune',' alan',0,51);ok miracle alleluia c cool
fabien8lecler
fabien.lecler
52
REPLACE INTO `Personne` (login,nom,prenom,groupe,rang) VALUES ('fabie.lecler','Lecler','Fabie',1,52);exception 'RequeteException' with message 'Probleme lors de l'envoi de la requete' in /hometu/dossiersCommuns/projets/dut-info-pg11-2007/poursuitetude/BD/BD.php:40 Stack trace: #0 /hometu/dossiersCommuns/projets/dut-info-pg11-2007/poursuitetude/presentation/ajoutrang2.php(25): Bd->envoiRequete('REPLACE INTO `E...') #1 {main}Exception :Probleme lors de l'envoi de la requete

par mere-teresa » 07 mars 2007, 19:02

Au lieu de echo miracle alleluia, fais plutôt :
echo "REPLACE INTO `Etudiants` (login, rang) VALUES ('".$login."',".$rang.");"."<br />"

par Tom2me » 07 mars 2007, 18:19

Après encore 15000 tentatives voici l'evolution !

Code : Tout sélectionner

$Bd->connecter(); $Bd2->connecter(); foreach ($Bd->listeEtu() as $row) { $login=$row['login']; $var=str_replace(".","8",$login); $nom=$row['nom']; $prenom=$row['prenom']; $groupe=$row['groupe']; $rang=$_GET[$var]; echo $var."<br/>"; echo $login."<br/>"; echo $rang."<br/>"; //$Bd2->envoiRequete("UPDATE `Etudiants` SET `rang`=".$rang." WHERE `idetu`='alan.fortune';"); // $Bd2->envoiRequete("REPLACE INTO `Etudiants` (login,nom,prenom,groupe,rang) VALUES ('".$login."','".$nom."','".$prenom."',".$groupe.",".$rang.");"); $Bd2->envoiRequete("REPLACE INTO `Etudiants` (login, rang) VALUES ('".$login."',".$rang.");"); echo "ok miracle alleluia c cool<br />"; }
le résultat :

Code : Tout sélectionner

alan8fortune alan.fortune 102 ok miracle alleluia c cool fabie8lecler fabie.lecler 103 exception 'RequeteException' with message 'Probleme lors de l'envoi de la requete' in /hometu/dossiersCommuns/projets/dut-info-pg11-2007/poursuitetude/BD/BD.php:40 Stack trace: #0 /hometu/dossiersCommuns/projets/dut-info-pg11-2007/poursuitetude/presentation/ajoutrang2.php(24): Bd->envoiRequete('REPLACE INTO `E...') #1 {main}Exception :Probleme lors de l'envoi de la requete

par jojolapine » 07 mars 2007, 17:20

montre nous donc ta fonction listetu()

par mere-teresa » 07 mars 2007, 17:19

foreach($Bd->listetu() as $row)
Quel est le type de $BD->listetu() ?

par Tom2me » 07 mars 2007, 17:15

Après d'autres test il s'avère que le problème se repete avec n'importe quel type de requête (SELECT * from Personne par exemple)

Un code tel que :

Code : Tout sélectionner

foreach($Bd->listetu() as $row){ echo $row['login']; $Bd->envoiRequete("SELECT * from Personne"); }
Ne marche pas !!!! Le problème ne vient pas de envoiRequete puisque j'utilise cette fonction dans d'autres cas ! (Cette fonction sert à envoyer une requete a executer).

On peut donc conclure que l'execution de n'importe quel requete dans une boucle du type foreach($Bd->listEtu() as $row) bug ![/code]

par Tom2me » 07 mars 2007, 16:41

exception 'RequeteException' with message
'Probl譥 lors de l'envoi de la requ괥 suivante: UPDATE `Personne` SET `score`=23 WHERE `login`='alan.fortune''
in poursuitetude/BD/BD.php:193 Stack trace: #0 presentation/ajoutrang2.php(12):
Bd->ajouteRang('alan.fortune', 23) #1 {main}Exception :Probl譥 lors de l'envoi de la requ괥 suivante: UPDATE `Personne` SET `score`=23 WHERE `login`='alan.fortune'

Voila ce qui est relevé :?

Mais techniquement il n'y aucune contrainte vis a vis de l'association du foreach et de l'update ?

par jojolapine » 07 mars 2007, 16:27

bon déja on voit qu'il y a un problème de quotes, il en manque autour du login:
    $sql="UPDATE `Etudiants` SET `score`=".$rang." WHERE `login`='".$log."'"; 
essaye ceci, et dis nous si le problème persiste

par Tom2me » 07 mars 2007, 16:19

Le problème intervient dès la première boucle à la première execution de la requete

Voila j'ai fait un echo de mon expeption !

exception 'RequeteException' with message 'Probleme lors de l'envoi de la requete suivante: UPDATE `Etudiants` SET `score`=23 WHERE `login`=alan.fortune' in /poursuitetude/BD/BD.php:193 Stack trace: #0 /presentation/ajoutrang2.php(13): Bd->ajouteRang('alan.fortune', 23) #1 {main}Exception :Probleme lors de l'envoi de la requete suivante: UPDATE `Etudiants` SET `score`=23 WHERE `login`=alan.fortune

par mere-teresa » 07 mars 2007, 16:05

Le pb de requête arrive-t-il sur un utilisateur précis ? Sur le premier de la boucle ? Sur tous ?


Je te conseille d'afficher à l'écran toutes les requêtes que tu cherches à faire...

par jojolapine » 07 mars 2007, 16:02

au passage, tu as une erreur dans ta requête sql.... il y a une parenthèse de trop

par jojolapine » 07 mars 2007, 15:59

change ta fonction en ceci:
public function ajouteRang($log, $rang) {
    $sql="UPDATE `Etudiants` SET `score`=".$rang." WHERE `login`=".$log;
    try {
        return $this->connexion->query($sql);
    }
    catch (PDOException $e) {
        throw new RequeteException("Problème lors de l'envoi de la requête suivante: ".$sql);
    }
}
et montre moi le résultat de l'exécution

par Tom2me » 07 mars 2007, 15:49

j'ai effectuer les vérification come je l'ai dit le prolbème vient vraiment de la présence de ma fonction dans ma boucle si je sort la fonction de la boucle mon score est changé mais seulement pour la personne contenu dans la variable $log évidement!
mon foreach me permettant d'update pour chaque personne contenue dans la BD je n'ai plus aucune solution :(

Existe t il une contre indication pour le foreach et le update ???

par jojolapine » 07 mars 2007, 15:45

essaye d'afficher $log et $_POST[$log], pour voir si tout correspond bien ...