Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 10-11-2007 17:30:59

fallaway
Membre
Date d'inscription: 10-11-2007
Messages: 2

utiliser rand() dans une boucle WHILE.

Bonjour,

J'ai un problème avec ce code.
La fonction rand() retourne la meme valeur pour chaque boucle bouclée par While.
ex : je lance mon script une fois : le 49 sort sur toutes les lignes.
       Une seconde fois : le 61 sur toutes les lignes.
J'aimerais que le rand s'effectue sur chaque boucle effectuée.
Merci de m'aider à comprendre comment générer un nombre aléeatoire sur chaque boucle tant que while est TRUE.

Code:

 
<?php
mysql_connect("localhost", "root", "") or
die("Impossible de se connecter : " . mysql_error());
mysql_select_db("database");
$result = mysql_query("SELECT id, pays, dep, city FROM users");

while ($row = mysql_fetch_array($result)) {  
$dep = rand(21, 94);
mysql_query("UPDATE users SET state_province=$dep");
  printf ("ID : %s  Pays : %s Dep : %s Ville : %s<br>", $row["id"], $row["pays"], $row["dep"], $row["city"]);
 }
 mysql_free_result($result);
 
?>

Merci pour votre aide

Hors ligne

 

#2 11-11-2007 12:26:21

Shiva
Moderateur
Lieu: BONNEUIL SUR MARNE
Date d'inscription: 15-11-2005
Messages: 299
Site web

Re: utiliser rand() dans une boucle WHILE.

Salut,
Tu parles de ce que la fonction printf() affiche ?
Sinon fais un echo $dep histoire de voir ce que ça affiche

Hors ligne

 

#3 11-11-2007 13:08:02

fallaway
Membre
Date d'inscription: 10-11-2007
Messages: 2

Re: utiliser rand() dans une boucle WHILE.

Merci, grace a toi shiva, effectivement, un echo $dep me donne une valeur differente j'aurais du verifier.
Mais lors de l'UPDATE de la table, c'est toujours la meme valeur qui est insérée.

Pour resumer :
Malgré que l'echo $dep confirme que le nombre est bien aleatoire a chaque ligne, la deuxieme action UPDATE insere la meme valeur dans toutes les lignes.

C'est très étrange ! Qqun peut t'il m'expliquer ? Dois-je ecrire ma commande SQL différement pour insérer la variable $dep ?

Merci !

Hors ligne

 

#4 12-11-2007 03:21:01

lolo3129
Membre
Lieu: Paris
Date d'inscription: 10-05-2005
Messages: 506
Site web

Re: utiliser rand() dans une boucle WHILE.

Salut,

update fait une mise à jour de toutes les lignes qui vérifie les conditions de la requêtes. Comme il n'y a pas de condition, toutes les lignes sont bonnes à mettre à jour. Ce qui fait que tu mets à jour toutes les lignes à chaque fois.
Si tu veux être plus précis dans ta mise à jour tu peux rajouter des conditions avec un where. Dans ton cas, je pense que tu veux mettre un filtre sur la colonne id.

Code:

mysql_query("UPDATE users SET state_province=$dep where id=". $row['id']);

Hors ligne