Modifier tous les enregistrements d'un champ

yoblob Messages postés 2 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 19 mai 2004 - 19 mai 2004 à 01:24
dyto Messages postés 11 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 31 mai 2004 - 19 mai 2004 à 15:25
Bonsoir,

Je réalise un site de pronostics sportifs :
Pour cela j'ai une table "prono" où les joueurs entrent leurs pronostics, une table "score" où je rentre le score effectif de la rencontre et une table "points" où sont inscrits les points marqués par joueur en fonction de la concordance entre les 2 tables précédentes.

Mon souhait est de modifier la table "points" chaque fois que j'entre un nouveau score.

Malheureusement, je n'arrive pas à modifier tous les enregistrements d'un champ (soit les points de tous les joueurs) en fonction du résultat rentré. J'ai réussi par un système de boucle à les modifier mais ils prennent tous la valeur des points marqués par le premier joueur.

J'ai l'impression de toucher au but, pourtant je n'y arrive pas... si quelqu'un pouvait me donner un coup de pouce ;-)

Voici ma requête (pour un seul score) :

<?php
$i=1;

$colID_rsTab = "1";
if (isset($HTTP_SERVER_VARS['i'])) {
$colID_rsTab = (get_magic_quotes_gpc()) ? $HTTP_SERVER_VARS['i'] : addslashes($HTTP_SERVER_VARS['i']);
}

mysql_select_db($database_Connexion, $Connexion);
$query_rsTab = sprintf("SELECT * FROM score, prono, points WHERE prono.playerID=points.pID AND points.pID=%s ORDER BY points.pID", $colID_rsTab);
$rsTab = mysql_query($query_rsTab, $Connexion) or die(mysql_error());
$row_rsTab = mysql_fetch_assoc($rsTab);
$totalRows_rsTab = mysql_num_rows($rsTab);
$pID = $row_rsTab['pID'];
$playerID = $row_rsTab['playerID'];

while ($i <= 20):
{
if (($row_rsTab['score réel 1']==$row_rsTab['score prono 1'] AND $row_rsTab['score réel 2']==$row_rsTab['score prono 2']) AND $pID==$i)
{
mysql_query("UPDATE points SET 'points marqués'=3 where pID=$i") OR DIE;
$i++;
}
else
...
}
endwhile;
?>

Je reste à votre dispo pour toute précision supplémentaire. Merci.

3 réponses

dyto Messages postés 11 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 31 mai 2004
19 mai 2004 à 10:38
Mets ce petit bout de code dans ta requete :
<?
$sql = mysql_query("UPDATE point SET tonchamp='$_POST[lenomduchampdetexte]'");
?>
0
yoblob Messages postés 2 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 19 mai 2004
19 mai 2004 à 12:39
il y avait une grosse erreur de conception dans ma requête au niveau de SELECT.

à présent, celui-ci semble bien marcher mais je n'arrive pas à réaliser mon UPDATE pour qu'il en tienne compte...

l'idée étant d'uploader tous les champs d'un enregistrement répondant au critère du SELECT.

<?php
mysql_select_db($database_Connexion, $Connexion);
$result11 = mysql_query ( "SELECT * FROM score, prono, points WHERE prono.playerID=points.pID AND score.s1sc1=prono.1sc1 AND score.s1sc2=prono.1sc2 ORDER BY points.pID");
while ($row = mysql_fetch_array($result11, MYSQL_ASSOC))
{
printf ("pID: %s playerID: %s", $row["pID"], $row["playerID"]);
}
?>

Pour mon UPDATE, je ne sais plus quoi mettre dans le WHERE pour qu'il ne modifie que les enregistrements sélectionnés.
$sql = mysql_query("UPDATE points SET p1=3 WHERE ...");
0
dyto Messages postés 11 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 31 mai 2004
19 mai 2004 à 15:25
ben le nom du champ que tu veux changez, tu dis
"Mon souhait est de modifier la table "points" chaque fois que j'entre un nouveau score."
ben dans ta ble point, il y a bien une table ke tu veu changez, bien c'est ce ke tu fai
$sql = mysql_query("UPDATE points SET p1=3 WHERE tonchamp='lenomdetatabel'"); 

ou bien sinon si tu veu changez toute la table
$sql = mysql_query("UPDATE points SET option1='$_POST[xxx]', option2='$_POST[xxxx]'...ect WHERE ton champ='lenomduchamp'");

j'espere t'avoir aidés
0
Rejoignez-nous