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 :

Comment faire un cycle en php


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Par défaut Comment faire un cycle en php
    Bonjour je reviens vers vous une nouvelle fois pour un nouveau problème ^^ , je voulais savoir comment faire un cycle. je m'explique:

    Je voudrais faire tourner 5 page php que j'include, j'ai essayé avec un while mais cela ne fonctionne.

    Je voulais faire un système de tour, disant que tant que Tour n’égale pas 10 il recharge le script etc...

    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
      $tour = 0;
      while($tour<=10)
      {
     
    	 echo "TOUR " . $tour . "";
    	require_once 'composition_attaquant.php';
    	require_once 'composition_defenseur.php';
    	//require_once 'composition_defense_defenseur.php';
     
    	$ResteBouclierDefenseur = $BOUCLIER_DEFENSEUR-$ATTAQUE_ATTAQUANT; // DEGAT DE L'ATTAQUE DE L'ATTAQUANT SUR LES BOUCLIERS
    	$CoqueDefenseur = $DEFENSE_DEFENSEUR;
    	$CoqueAttaquant = $DEFENSE_ATTAQUANT;
     
    	require_once 'perte_attaquant.php';
    	require_once 'perte_defenseur.php';
     
        $tour++;
      }
    Cordialement,

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je ne comprends pas ton problème.
    Tu utilises require_once qui n'inclut le fichier qu'une seule fois si c'est ça ton souci. Autrement si c'est un problème de fonctionnement alors tu ne donnes pas assez d'éléments.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Plus efficacement, crée des fonctions dans tes scripts inclus : tu n'inclus qu'une seule fois le script et tu executes plusieurs fois la fonction.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Par défaut
    alors badaze, enfaite mes includes ce sont d'autres fichier php d'une centaines de lignes qui calcul les forces en présences, les pertes, les degats etc... Mais sur un tour. Et moi je voudrais que se code se relance 10 fois.

    Les faire en fonctions c'est à dire? Car le code fait environs 100 lignes.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux faire une fonction de 100 lignes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Par défaut
    Okay je vais essayer ça alors je vous tiens au courant merci

  7. #7
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Est-ce que tu as essayé de mettre des include ou require à la place de require_once ?

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    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 418
    Par défaut
    Nan on inclue pas des include ou des require dans une boucle. sabotage a donné la solution.

  9. #9
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Par défaut
    Bonsoir, alors oui la fonction est sans doute le mieux, mais je n'y arrive pas. Je ne voit pas comment je peux faire une fonction de mon code enfaite. Il est assez long. Je ne connais pas encore bien le système de fonction. J'ai lu sur différent tutos qu'il fallait mettre des paramètres etc.. mais je pige pas tout ^^

    J'ai par ailleurs testé tout mes codes dans la même pages et donc dans la boucle et cela donne le résultat attendu. Après je voudrais quand même tout séparer pour la simple et bonne raison que c'est plus lisible et vraiment plus simple a modifier qu'un bazard de 3.000 lignes.

    Donc peut être que je parais stupide ou autre car je n'utilise pas de fonction mais bon il faut bien apprendre un jour :p J'aimerais avoir un peu d'aide à se sujet pour essayer de comprendre. je vous donne un exemple de l'un de mes codes :

    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
    echo "</br></br> PERTE ATTAQUANT </br></br>" ;
     
    // DIVISION DES DEGATS ET PERTES
     
    $ATTAQUE_DIVISER = $ATTAQUE_DEFENSEUR / $total_a; // Total est le nombre de vaisseaux total du defenseur
     
    // L'id de la planete ennemi (numero de sa planete)
    $ennemi_id=htmlentities($ennemi['id']); 
     
    echo "Points d'attaque diviser par le nombre de vaisseaux : " . ceil($ATTAQUE_DIVISER) . "</br>";
     
    if($ATTAQUE_DIVISER > 0)
    	{
     
    		$select=$bdd->prepare('SELECT * FROM vaisseau_selection WHERE id_membre = ? AND planete_vise = ? ');
    		$select->execute(array($id_membre,$ennemi_id));
    		while($r=$select->fetch())
    		{
     
    			$r_n = htmlentities($r['nom_vaisseau']);
    			$r_a = htmlentities($r['attaque']);
    			$r_b = htmlentities($r['bouclier']);
    			$r_c = htmlentities($r['defense']);
    			$id_VR = htmlentities($r['id']);
     
    			//PARTIE HTML
    			echo "</br> Nom : " . $r_n . "</br>";
    			echo " Attaque : " . $r_a . "</br>";
    			echo " Bouclier : " . $r_b . "</br>";
    			echo " Coque : " . $r_c . "</br>";	
     
    			// Attaque sur le bouclier en premier
    			$Nv_valeur_bouclier_attaquant = $r_b - $ATTAQUE_DIVISER; // On calcul la nouvelle valeur du bouclier
    			echo " </br> Resultat apres 1 tir ";
    			echo "</br> Points de Bouclier restant : " . ceil($Nv_valeur_bouclier_attaquant) . "</br>"; // affichage
     
     
    			//Si la nouvelle valeur est inferieur à zéro on enchaine sur la coque sinon on passera à l'update du bouclier
    			if(ceil($Nv_valeur_bouclier_attaquant) <= 0)
    				{
    					$NV_ATTAQUE_DIVISER_attaquant = $r_b-$ATTAQUE_DIVISER; // on récupère la nouvelle valeur d'attaque avec les dernier pts de bouclier utilisé
    					$destruction_coque = $r_c - abs($NV_ATTAQUE_DIVISER_attaquant); // Combien de pts de coque sont perdus
    					echo "</br> Points de Coque restant : " . ceil($destruction_coque) . "</br></br>"; // affichage
     
    					//Mise a zéro du bouclier
    					$update_bouclier=$bdd->prepare('UPDATE vaisseau_selection SET bouclier = ? WHERE id_membre = ? AND planete_vise = ? AND id=?');
    					$update_bouclier->execute(array(0,$id_membre,$ennemi_id,$id_VR));
     
    						if($destruction_coque < 0) // Si la valeur de la coque est en dessous de zéro, donc détruite on Delete le vaisseau
    							{
     
    							$delete_vaisseau=$bdd->prepare('DELETE FROM vaisseau_selection WHERE id_membre = ? AND planete_vise = ? AND id=?');
    							$delete_vaisseau->execute(array($id_membre,$ennemi_id,$id_VR));// id_V sert a indiquer quel vaisseau va se voir Update. Chaque vaisseau qui aura encore du bouclier aura sa valeur modifier dans la bdd
     
    							$tour=$tour+1;
     
    							}
    							else // Sinon on update la nouvelle valeur de la coque
    							{
     
    								$update_bouclier=$bdd->prepare('UPDATE vaisseau_selection SET defense = ? WHERE id_membre = ? AND planete_vise = ? AND id=?');
    								$update_bouclier->execute(array(ceil($destruction_coque),$id_membre,$ennemi_id,$id_VR));// id_V sert a indiquer quel vaisseau va se voir Update. Chaque vaisseau qui aura encore du bouclier aura sa valeur modifier dans la bdd
     
    								$tour=$tour+1;
    							}
    				}
    				else // Si la valeur du bouclier n'est pas à zéro on enregistre les nouvelles valeurs dans la BDD
    				{
    					echo " Bouclier n'est pas a zero, il reste : " . ceil($Nv_valeur_bouclier_attaquant) . "</br></br>";
    					$update_bouclier=$bdd->prepare('UPDATE vaisseau_joueur SET bouclier = ? WHERE id_membre = ? AND planete_vise = ? AND id=?');
    					$update_bouclier->execute(array(ceil($Nv_valeur_bouclier_attaquant),$id_membre,$ennemi_id,$id_VR));// id_V sert a indiquer quel vaisseau va se voir Update. Chaque vaisseau qui aura encore du bouclier aura sa valeur modifier dans la bdd
     
    					$tour=$tour+1;
    				}
    		}
     
    	}
    Cordialement, Malibx

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    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 418
    Par défaut
    Il y a deux choses à maitriser impérativement pour pouvoir avancer en php, ce sont les tableaux et les fonctions. Les tableaux parce qu'on en a toujours besoin à un moment ou à un autre, et les fonctions parce que c'est la base de la programmation qui permet d'avoir une structure évolutive. La POO vient naturellement ensuite pour mieux structurer son code quand on a bien assimilé les fonctions. Donc trouves-toi un tuto sur les fonctions php et essaies de voir comment tu pourrais en profiter.

    Une première approche serait de mettre tout le code qui est à l'intérieur de la condition if($ATTAQUE_DIVISER > 0) dans une fonction. Après si tu dois faire des mises à jour de la bdd dans une boucle, pour optimiser le système il faut faire la préparation de la requête en dehors de la boucle qui elle ne doit contenir que le execute(). Enfin bon difficile de t'en dire plus ne connaissant pas tous les tenants et les aboutissants de ton système.

    En tous cas une chose est certaine, ton système pourra difficilement évoluer si tu ne prends pas quelques jours/semaines pour étudier au minimum les fonctions et ensuite éventuellement les classes pour faire de la POO. La POO n'est pas absolument indispensable mais même en procédural on se sert de fonctions pour avoir un code gérable. D'ailleurs tu as fait la remarque toi-même que cela devenait difficile à gérer. Une recherche avec les termes "fonction php tuto" te donneras de bonnes réponses. Reviens-nous ensuite avec des questions précises, mais là avec ce que tu nous montre, il faudrait connaître tout ton système pour pouvoir te donner un exemple cohérent.

Discussions similaires

  1. comment faire un saut avec PHP
    Par goldray dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2011, 10h36
  2. [MySQL] comment faire une clause avec php?
    Par keokaz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2008, 17h37
  3. Comment faire passé une variable php vers un lecteur flash ?
    Par jeanluc974 dans le forum Intégration
    Réponses: 2
    Dernier message: 24/06/2008, 13h16
  4. comment faire un goto en php
    Par foussil dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2006, 16h43
  5. Réponses: 7
    Dernier message: 24/03/2006, 10h51

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