Mettre à jour chaque ligne du champ

Résolu
theking77 Messages postés 3 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 8 décembre 2010 - 8 déc. 2010 à 12:50
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 - 8 déc. 2010 à 16:35
Bonjour à tous
j'ai un petit souci sur mon code, je vous montre ma base + le code

la base de donnee :
ID | temps
1 | 35
2 | 25
3 | 15

et voici le code php
<?php
// Connection à la base de donnee
try
{
$bdd = new PDO('mysql:host=(serveur);dbname=(base)', '(login)', '(mdp)');
}
catch(exception $e)
{
die('erreur : '.$e->getmessage());
}

// Demande les infos du champ "temps"
$demande = $bdd->query('SELECT temps FROM (base)');
while ($resultat= $demande->fetch())
{
                $variable = $resultat['temps'] - 1;
$change = $bdd->exec('UPDATE (base) SET temps=\'' . $variable  . '\'');
}
$demande->closeCursor();
?>


Le problème est :
en résultat j'ai
ID | temps
1 | 14
2 | 14
3 | 14

hors j'aurais voulu avoir
ID | temps
1 | 34
2 | 24
3 | 14

voila en espérant ne pas mettre trompée de section
je vous remercie d'avance

6 réponses

cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
8 déc. 2010 à 16:01
Ben c'est ce que fait la requête UPDATE mis ci-dessus.

<?php
// Connection à la base de donnee
try
{
$bdd = new PDO('mysql:host=(serveur);dbname=(base)', '(login)', '(mdp)');
}
catch(exception $e)
{
die('erreur : '.$e->getmessage());
}

// Demande les infos du champ "temps"
$demande = $bdd->query('SELECT temps FROM (base)');
while ($resultat= $demande->fetch())
{
    // pour chaque enregistrement on deduit 1
    $change = $bdd->exec('UPDATE (base) SET temps=temps-1 WHERE ID = \'".$resultat['ID']."\'');

}
$demande->closeCursor();
?>

3
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
8 déc. 2010 à 15:06
Bonjour

le résultat final est normal car vous ne précisez pas quel enregistrement vous voulez modifier.

Remplacer la requête update par :

$change = $bdd->exec('UPDATE (base) SET temps=\'' . $variable  . '\' WHERE ID = \'".$resultat['ID']."\'');
0
theking77 Messages postés 3 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 8 décembre 2010
8 déc. 2010 à 15:53
enfaite je souhaite que cela change pour toute les lignes du champs en faite que cela déduit 1 pour chaque ligne même si ce n'est pas la même valeur à la base pas que pour une seule ligne
0
theking77 Messages postés 3 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 8 décembre 2010
8 déc. 2010 à 16:17
je te remercie j'ai compris ce qui n'allais pas et en plus maintenant sa marche
merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
8 déc. 2010 à 16:28
Hello,

Petit question : Pourquoi faire des boucles inutiles ?

Une requête de ce type devrait faire l'affaire non ?

UPDATE (base) SET temps=temps-1
0
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
8 déc. 2010 à 16:35
Oui bien vu morpheus57

Autant pour moi ^^
0
Rejoignez-nous