IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

délais dans une boucle entre les éléments du tableau [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    Merci pour le coup de main.

    Je ne peux pas appliquer l'effet boulier avoir mon image de la boule en arrière
    des chiffres puisque ce n'est plus synchro. Avec ForEach de PHP, je pouvais
    mettre mon style dans la boucle.

    Maintenant, c'est séparé.

    A moins que je puisse appliquer mon style dans la boucle

    à quelque part dans la boucle ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <script>
    var tab_php1 = <?php echo json_encode($numbers1)?>;
    var tab_php2 = <?php echo json_encode($numbers2)?>;
    var tab_php3 = <?php echo json_encode($numbers3)?>;
     
    function Affiche(i,tab,id){
    i++;
    if (typeof tab[i] != 'undefined')
    	{	
    		setTimeout(function(){Affiche(i,tab,id)},1000);
     
    		var nombre = document.createTextNode(tab[i]+' ');
    		document.getElementById(id).appendChild(nombre);
    	}
     
    }
     
    </script>
    Oui c'est un peu ça. En fait à la place de créer des noeuds de texte standard on peut créer des blocs "p" sur lesquels tu pourras appliquer un background ou tout autre formatage.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
     
    function Loterie($debut,$quantite_elements,$nb_tirage)
    {
    	$limite = $debut + $quantite_elements -1;
     
    	// création du tableau 
    	$tab = range($debut,$limite);
     
    	// mélange du tableau
    	shuffle($tab);
     
    	// prend les $nb_tirage premiers
    	$tab_tirage = array_slice($tab, 0, $nb_tirage);  
     
    	return $tab_tirage;
    }
     
    $debut = 1;
    $quantite_elements = 20;
    $nb_tirage = 8;
     
    $numbers1 = Loterie($debut,$quantite_elements,$nb_tirage);
     
    $debut = 21;
    $numbers2 = Loterie($debut,$quantite_elements,$nb_tirage);
     
    $debut = 41;
    $numbers3 = Loterie($debut,$quantite_elements,$nb_tirage);
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Loterie</title>
     
    <script>
    var tab_php1 = <?php echo json_encode($numbers1)?>;
    var tab_php2 = <?php echo json_encode($numbers2)?>;
    var tab_php3 = <?php echo json_encode($numbers3)?>;
     
    function Affiche(i,tab,id){
    i++;
    if (typeof tab[i] != 'undefined')
    	{	
    		setTimeout(function(){Affiche(i,tab,id)},1000);
     
    		var p = document.createElement("p");
    		var nombre = document.createTextNode(tab[i]);
    		p.appendChild(nombre); 
    		document.getElementById(id).appendChild(p);
    	}
     
    }
     
    </script>
    <style type="text/css">
     
    .loto p {
      float:left;
      border:1px solid green;
      background: #FFCC00;
      color: black;
      text-align: center;
      width: 50px;
      height: 45px;
      font-weight: bolder;
      font-size: 2em;
      font-family: serif, Arial;
      font-stretch: wider;
      font-style: normal;
    }
    .loto {
      clear:both;
    }
    </style>
    </head>
     
    <body onload="Affiche(-1,tab_php1,'mondiv1'),Affiche(-1,tab_php2,'mondiv2'),Affiche(-1,tab_php3,'mondiv3')">
     
    <div class = "loto" id = "mondiv1" ></div>
    <div class = "loto" id = "mondiv2" ></div>
    <div class = "loto" id = "mondiv3" ></div>
     
    </body>
    </html>
    Dans le formatage css ".loto p" j'ai mis des valeurs perso pour "border", "background" et "color" pour visualiser plus vite. A toi d'adapter avec tes valeurs.

  2. #22
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    J'ai réussi à faire mes adaptations et j'obtiens ce que je désirais.
    Je vais prendre le temps d'étudier le tout pour approfondir mes
    connaissances globalement. Merci ABCIWEB pour les coups de
    main, c'est apprécié.

    Je vais aussi regarder du coté Ajax pour placer la partie boulier
    dans un fichier qui lui seul va être rafraichi.


  3. #23
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Bonjour.

    Un ajout que j'essaie de faire est de placer un "0" devant les unité de 1 à 9.

    J'ai tenté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <script>
    	var tab_php1 = <?php echo json_encode($numbers1)?>;
    	var tab_php2 = <?php echo json_encode($numbers2)?>;
    	var tab_php3 = <?php echo json_encode($numbers3)?>;
     
    	function Affiche(i,tab,id) {
    	i++;
    	if (typeof tab[i] != 'undefined') {
    			setTimeout(function() {Affiche(i,tab,id)},400);
     
    			var p = document.createElement("p");
    			var nombre = document.createTextNode(tab[i]);
    			p.appendChild(nombre);
    			document.getElementById(id).appendChild(p);
    		}
    	}
     
     
    //STR_PAD_RIGHT = 1; STR_PAD_LEFT = 0;
    function str_pad(input, pad_length, pad_string, pad_type){
    for(i=input.length; i<pad_length; i++){
    if(pad_type)
    input = input + pad_string;
    else
    input = pad_string + input;
    }
    return input;
    } 
     
    str_pad(nombre, 2, "0", 0)
     
     
    </script>
    J'ai essayé aussi avec le coté PHP str_pad dans la partie PHP, rien du tout.

  4. #24
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Touches pas au javascript c'est plus facile côté php.

    Tu étais sur la bonne voie avec str_pad mais je vois pas ce que fait cette fonction mélangée avec du javascript.

    On peux échanger des variables ou des tableaux de php à javascript (ou inversement avec ajax) mais ça s'arrête là. On ne peut pas mélanger des fonctions php avec des fonctions javascript car php s'exécute avant le chargement de la page côté serveur et javascript s'exécute lors du chargement de la page (et après) sur le navigateur du visiteur.

    Donc complète uniquement ton code php du haut de page sans toucher au reste et faire voir ce que tu propose en utilisant str_pad après avoir bien regardé l'exemple d'utilisation de cette fonction.

  5. #25
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Bonjour.

    Normalement, j'aurais str_pad avec une chaine de caractère mais dans ma fonction qui touche au contenu d'un tableau, ça fait soit rien ou bien ça fait une erreur array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: str_pad() expects parameter 1 to be string, array given
    Et ma modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Loterie($debut,$quantite_elements,$nb_tirage) {
    	$limite = $debut + $quantite_elements -1;
    	$tab = range($debut,$limite);
    	shuffle($tab);
     
            $tab_tirage = str_pad($tab, 2, "0", STR_PAD_LEFT); 
     
    	$tab_tirage = array_slice($tab, 0, $nb_tirage);
    	sort($tab_tirage);
    	return $tab_tirage;
    }
    J'ai essayé d'autres scénarios à d'autres endroits du code sans succès.

    J'ai aussi essayé à faire ressortir avec foreach pour faire ressortir le tableau et faire le traitement avec str_pad, sans change rien.

  6. #26
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Tu dois passer une string à la fonction str_pad(), or le range() te renvoit un tableau d'où l'erreur.
    Ce que tu dois faire c'est parcourir ton tableau et passer chaque valeur à la moulinette str_pad().
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_tirage = array_map(function($p) { return str_pad($p, 2, "0", STR_PAD_LEFT); }, $tab);
    ou comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($tab as $num) {
       $tab_tirage[] = str_pad($num, 2, "0", STR_PAD_LEFT);
    }
    Une dernière chose, ton array_slice() n'est pas correct. Si tu complètes tes chiffres à deux digits avant la sélection, tu dois faire ta sélection sur le tableau contenant les chiffres complétés : $tab_tirage.
    Tu peux très bien faire tout le traitement de sélection en premier sur $tab et ne compléter à deux chiffres que le tableau en sortie.

  7. #27
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    La 2me convient parfaitement. Il ne me manquait pas grand chose
    pour solutionner le problème. Ajouter les crochet puis donner un
    nouveau nom dans retour de la fonction.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2014, 10h39
  2. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  3. Réponses: 5
    Dernier message: 22/03/2009, 23h22
  4. Réponses: 2
    Dernier message: 16/05/2008, 08h23
  5. Réponses: 2
    Dernier message: 30/05/2006, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo