tirer au hasard 5 lettres de l'alphabet

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 : tirer au hasard 5 lettres de l'alphabet

par Invité » 20 avr. 2006, 10:56

Merci Ryle, je testerai ça ;)

par Ryle » 20 avr. 2006, 10:15

Si tu ne met pas de condition WHERE dans ta requête update, ce sont tous les enregistrements qui sont affectés. Il faut donc boucler pour chaque id utilisateur, générer le code et mettre à jour sa ligne uniquement :
$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'); 

$sql = "SELECT idDesUsers FROM tableDesUsers"; // liste des id
$rs = mysql_query($sql); // exécution
while($row = mysql_fetch_assoc($rs)) { // pour chaque utilisateur
  $idDuUser = $row['idDesUsers']; // récupération de l'id

  $indices = array_rand($alphatab,3); 
  $q2="update matable set monchamp='"; 
  foreach($indices as $keys) { 
    $q2 .= $alphatab[$keys]; 
  } 
  $q2 .= "'"; 
  $q2 .= " WHERE idDesUsers = $idDuUser"; // l'update ne se fera que sur le user en cours

  echo $q2; // pour voir que la requête générée est bonne
// ou bien directement
  mysql_query($q2); // execution
}
Te reste plus qu'à modifier, adapter, bidouiller, farfouiller, bricoller... bref développer ;)

par El doc » 20 avr. 2006, 09:23

Merci à tous et en particulier à toi jpaul pour ton soutien. J'ai trouvé une solution alternative mais je veux réussir question de fierté et d'apprentissage avec le script initial.

Je bloque sur les tableaux, c'est dingue, je reprends avec un exemple concret :

J'ai 100 enregistrements en base. J'ai une colonne de ma base pour ces 100 individus qui est vide. Je dois donner une valeur unique, je dis bien unique sur 5 caractères pour chacun des 100 enregistrements.

Le script modifié affichait bien 100 infos uniques mais entrait en base que la dernière info générée, la dernière valeur de i donc stérile pour de l'unique. Comment faire ? Je pense que ca va se jouer avec un tableau...D'autre part, comment placer dans un tableau le résultat d'un select ?

Je sais que votre temps est précieux...

El doc

par jpaul » 19 avr. 2006, 21:45

Hum hum [-(
Je fait pas la loi mais la fait respecter :lol:

Nous sommes sur un forum publique alors que ce soit des quetion qui sont "urgentes" ou non les réponses sont préférables en publique pour que tout le monde puisse en profiter par la suite. :)

:oops:
Oki pas de problème, je prends note, 8) moi je proposais ça juste pour gagner du temps : je ne vais pas rester debout jusqu'à 3 H du mat, je bosse demain :wink:

par Truc » 19 avr. 2006, 21:40

Tu as une adresse où te joindre sur msn ?
Hum hum [-(
Je fait pas la loi mais la fait respecter :lol:

Nous sommes sur un forum publique alors que ce soit des quetion qui sont "urgentes" ou non les réponses sont préférables en publique pour que tout le monde puisse en profiter par la suite. :)

@El doc
Regarde ce post et notamment la fonction passgen() qui fait appel à mt_rand() pour un tri au hasard

par jpaul » 19 avr. 2006, 21:18

Ben je veux bien essayer de t'aider mais tu en es où ?
Tu as une adresse où te joindre sur msn ?

par El doc » 19 avr. 2006, 20:37

Bonsoir je suis dans la merde ultime !!!!

Quelqu'un peut-il m'aider même plus puisqu'on me demande d'écrire un script que je ne connais pas et je dois le faire pour demain.

Reconnaissance éternelle à ceux qui voudront bien m'aider...

Comment arrêter de boucler l'update svp !!!!

El doc...

par El doc » 19 avr. 2006, 17:50

Ok mais ca m'enregistre toujours la même valeur en base :cry:

AU SECOURS !!!!

Je voudrais juste entrer dans un champ vide "C" de ma table "T" une valeur unique.

Par avance merci

El doc

par yuuzhantar » 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

par jpaul » 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.

par El doc » 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:

par Invité » 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

par jpaul » 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."';";

par El doc » 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

par jpaul » 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...