tirer au hasard 5 lettres de l'alphabet

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 09:58

Stlm !!

Je débute en php et voudrais savoir comment puis-je sortir 5 lettres au hasard de l'alphabet ?

El doc

Eléphant du PHP | 451 Messages

19 avr. 2006, 10:02

Je ne te donne pas la solution ?
Tu préfère des pistes pour mieux apprendre ?

Regarde les fonctions :
rand()
et
substr()
tu auras peut être aussi besoin de strlen() pour passer en paramètre à rand le nombre de caractères qui se trouvent dans la chaîne où tu les tire...

L'idée est de construire une chaine avec tes lettres dans laquelle tu va aller puiser les caractères au hazard.
Si tu ne veux pas doublon, il faut retirer les lettres de la chaîne de départ à chaque fois que tu en tire une...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 11:47

Re,

Entre-temps j'étais parti sur une autre piste à savoir les tableaux mais je rencontre un problème particulier. En faisant :
$alphatab=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
while ($i<200){
$indices = array_rand($alphatab,3);
$q2="update matable set monchamp='".$i;
foreach($indices as $keys) {
echo $alphatab[$keys];
}
$q2 .= "'";
echo $q2."<br>";
$i++;
L'echo de ma requête me donne par exemple :
QTYupdate matable set monchamp='250'
alors que j'attends/ca devrait me donner :
update matable set monchamp='250QTY'

Quelqu'un a une idée du pourquoi du comment ?

El doc

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2006, 11:54

Il ne fait que ce que tu lui demande :)
while ($i<200){ // tant que $i est inférieur à 200
  $indices = array_rand($alphatab,3); // récupère 3 valeurs au hazard de $alphatab dans $indices
  $q2="update matable set monchamp='".$i; // renseigne $q2
  foreach($indices as $keys) { // pour chaque élément de $indices
    echo $alphatab[$keys]; // affiche l'élément
  } 
  $q2 .= "'"; // complete $q2
  echo $q2."<br>"; // affiche $q2
  $i++; // incrémente $i
}

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 12:17

Il me met toujours les 3 lettres avant mon nombre alors qu'elles viennent après !

J'obtiens toujours une requête bizarre :

QXYupdate matable set monchamp='200'

:?

El doc[/b]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2006, 12:22

Vi mais ca c'est normal, je n'ai fait que décrire ce que tu lui demandais de faire pour que tu vois bien que l'instruction "afficher l'élément" était appellé avant l'instruction "afficher $q2" et qu'il était tout à fait logique que ceux-ci soient donc affichés en premier... :)

A toi de voir comment corriger maintenant, n'hésite pas à prendre une feuille et un crayon et à suivre ton code pas à pas pour noter ce qui sera affiché et dans quel ordre :)

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 13:31

J'ai réussi avec un peu de logique (merci ryle ;)) à écrire la requête dans le bon ordre. Par contre, je ne vois pas mais alors vraiment pas comment exécuter ma requête avec le mysql_query dans ce contexte :(

Si une âme charitable...

El doc

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2006, 13:55

Pourrais tu être un peu plus précis sur ce que tu veux faire exactement, parce que là, en dehors de la récupération des 3 lettres, c'est pas très évident :)

Pour l'exécution de ta requête, au lieu de mettre des echo pour afficher les valeurs, tu les ajoutes à la suite dans une chaine ($q2 faisant très bien l'affaire), et une fois que celle ci est prête, au lieu de l'afficher à son tour, tu la passes dans ton mysql_query() pour que la requête soit exécutée :)

Eléphant du PHP | 451 Messages

19 avr. 2006, 13:58

Sauf erreur, mysql_query c'est un nouvel élément, tu n'en avais pas encore parlé.
Que veux tu récupérer ?
Un petite piste, phpMyAdmin si tu ne l'as pas, à ta place, je demanderais à google de me le trouver.
Une fois installé, tu peux administrer ce que tu veux (en mysql) et faire des tests...
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 13:59

En clair, je cherche à générer un chiffre qui s'incrémente avec x lettres derrière. Ensuite, à chaque boucle j'update en base...

El doc

Eléphant du PHP | 451 Messages

19 avr. 2006, 14:04

Ben, comme te l'as dit Ryle, au lieu de faire au lieu de faire echo, tu concatènes chaque lettre tirée dans une variable préalablement initialisée à vide ensuite, tu pourras concaténer des chaînes de caractères pour construire ta réquête...

Ca pourrait ressembler à :
$q2="update matable set monchamp='".$i.$mes_lettres_tirées."';";
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Invité
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 14:12

On y vient, c'est ce que je cherche à faire depuis le début mais je ne sais pas comment alimenter ma variable $mes_lettres_tirees :roll:
Après, pour la concaténation, je n'ai pas de problème ;)

El doc

El doc
Invité n'ayant pas de compte PHPfrance

19 avr. 2006, 14:33

On y vient, c'est ce que je cherche à faire depuis le début mais je ne sais pas comment alimenter ma variable $mes_lettres_tirees :roll:
Après, pour la concaténation, je n'ai pas de problème ;)

El doc
C'était moi, désolé :oops:

Eléphant du PHP | 451 Messages

19 avr. 2006, 14:38

Pourtant, tu as tous les éléments, faut pas avoir peur du code ;)

Tu peux essayer de concaténer dans $q2 comme l'a suggéré Ryle :
$alphatab=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
while ($i<200){
$indices = array_rand($alphatab,3);
$q2="update matable set monchamp='".$i;
foreach($indices as $keys) {
//echo $alphatab[$keys];
$q2 .= $alphatab[$keys];
}
$q2 .= "'";
echo $q2."<br>";
$i++;
Au lieu d'afficher par echo (mis en commentaire) tu concatènes.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 259 Messages

19 avr. 2006, 17:47

voila un truc qui peut etre interessant

a toi de le modifier
//Générer un mot de passe aléatoirement  
// de www.phpdebutant.org
<?php

$chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
 
 srand((double)microtime()*1000000);
 
// on génère un mot de passe de 6 caractères
 
 for($i=0; $i<6; $i++) 
{
$pass .= $chaine{rand()%strlen($chaine)};
}

echo $pass;
 
?>
 

voila