Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Programmez en orienté objet en PHP

    7 décembre 2020 à 17:12:46

    Bonjour,

    je commence le cours PhP POO, et je ne comprend pas bien cette methodes : 

    public function gagnerExperience()
      {
        // On ajoute 1 à notre attribut $_experience.
        $this->_experience = $this->_experience + 1;
      }

    Pour moi, ceci devrait incrémenter la valeur de $_experience de 1 a chaque fois qu'on appel la méthodes, or, la valeur reste a 1

    Pourquoi ?

    [EDIT]

    J'ai compris mon erreur, je n'appelais pas la méthodes plusieurs fois, j'actualiser la page en pensant incrémenter la valeur, or, il faut bien "écrire" la méthodes plusieurs fois...

    je laisse mon post quand même 

    -
    Edité par DarwinMorkai 7 décembre 2020 à 19:04:16

    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2020 à 13:44:58 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


        18 décembre 2020 à 15:31:05

        Bonjour,

        comme beaucoup, j'ai suivis les cours précédents avant d'arriver sur la POO en PHP et bloquage, dès la fin du TP_1...

        Tout se déroule à merveille jusqu'au retour de constantes de la méthode frapper() (dans mon script c'est fightTo() ).

        En gros lorsque je clique sur le lien du personnage à frapper, toutes les étapes se déroulent correctement dans Character.php,  fightTo() retourne bien la constante self::THE_DIE si j'ai le même 'id'. Ce qui me crée bien un message m'indiquant que le perso se frappe lui-même.

        Ensuite, si 'id' est différent, le $perso_2 ($persoAFrapper) prend bien +5 de damages (vérifié avec var_dump())

        Juste avant return self::TARGET_HIT, j'ai testé un echo pour vérifier si le script suivait la bonne route. C'est OK.

        Problème, dans game.php ligne 64, mon " $return = $perso -> fightTo($perso_2); " est NULL. 

        Etant donné que $perso et $perso_2 sont deux objets différents je trouve ça plutôt logique. J'ai un retour de la constante $perso quand il se frappe lui-même, mais comment récupérer le retour de la constante du $perso_2 quand il est touché? Donc je pense que j'ai raté quelque chose dans le cours mais impossible de savoir quoi.

        Game.php:

            elseif(isset($_GET['fight'])){
                if(!isset($perso)){
                    $message = 'Merci de créer un personnage ou de vous connecter.';
                }
                elseif(!$manager -> existCharacter((int) $_GET['fight'])){
                    $message= 'L\'ennemie ciblé n\'existe pas.';
                }
                else{
        
                    $perso_2 = $manager -> getCharacter((int) $_GET['fight']);
                    $return = $perso -> fightTo($perso_2);
        
                    switch($return){
                        case Character::IT_IS_ME :
                            $message = 'Ca va pas bien de t\'auto-frapper?!';
                            break;
        
                        case Character::TARGET_HIT :
                            $message = 'Vous avez touché ' .$perso_2 -> name_perso(). '.';
                            $manager -> updateCharacter($perso);
                            $manager -> updateCharacter($perso_2);
                            break;
        
                        case Character::THE_DIE :
                            $message = $perso_2 -> name_perso(). ' est mort... Paix à son âme.';
                            $manager -> updateCharacter($perso);
                            $manager -> deleteCharacter($perso_2);
                            break;
        
                        default:
                        $message = 'Aucun état déclaré';
                    }
                }
            }
        



        Character.php:

            public function fightTo(Character $perso_2){
                if($perso_2 -> id() == $this ->_id){
                    return self::IT_IS_ME;
                }
                
                $perso_2 -> toBeHit();
            }
        
            public function toBeHit(){
                $this -> _damages += 5;
                if($this -> _damages >= 100){
                    return self::THE_DIE;
                }
        
                return self::TARGET_HIT;
            }
        



        Si vous avez besoin d'un autre bout de code, n'hésitez pas.

        Merci aux bonnes volontés, car là je pèche.

        A très vite!

        -
        Edité par Nolivwood 18 décembre 2020 à 15:43:40

        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2020 à 22:25:53 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


            22 décembre 2020 à 13:10:36

            Hello, est-ce quelqu'un aurait une petite intervention à faire à propos de ma demande un peu plus haut?

            J'avais modifié l'insertion de mon code. Merci.

            • Partager sur Facebook
            • Partager sur Twitter
              23 décembre 2020 à 13:54:33

              C'est bon, j'ai créé un sujet pour ma question et on m'a répondu. J'ai zappé le return devant $perso_2 -> toBeIt().

              Merc Julios288408.

              -
              Edité par Nolivwood 23 décembre 2020 à 13:56:17

              • Partager sur Facebook
              • Partager sur Twitter
                6 janvier 2021 à 9:46:24

                Bonjour la famille, j'espere que vous vous portez tous bien...si j'ecris aujourd'hui c'est parce que je suis entrain de finaliser un projet et je suis blocque sur l'execution d'une derniere fonctionnalité. En effet je voudrais ecrire un code php qui cree un table X, puis qui copie chaque enregistrement d'une table Y et enfin qui modifie chaque enregistrement de la table Y.
                <?php
                require_once('Dbconn.php');
                /**
                 * 
                 */
                class Session extends Dbconn
                {
                	public $_mois;
                	public $_annee;
                	public $_dateCreation;
                	public $_dateCloture;
                	public $_statut;
                
                	public function StartSession($mois,$annee){
                		
                	#   On Cree une sauvegarde 
                		$req = $this->_db->query('SELECT * FROM client');
                		//$find = $req->fetch();
                		$find = $req->fetch(/*PDO::FETCH_ASSOC*/);
                		while ($find) {
                			$req = "INSERT INTO session_'".$mois."'_'".$annee."'(id, nom, prenom, occurrence, sexe, telephone, debit, credit, date_ajout, date_paiement, forfait, statut) VALUES (:id, :nom,:prenom,:occurrence,:sexe,:telephone,:debit,:credit,:date_ajout,:date_paiement,:forfait,:statut";
                			$sth = $this->_db->prepare($req, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
                			$sth->execute(array(':id' => $find['id'],
                								':nom' => $find['nom'],
                								':prenom' =>$find['prenom'],
                								':occurrence'=>$find['occurrence'],
                								':sexe'=>$find['sexe'],
                								':telephone'=>$find['telephone'],
                								':debit'=>$find['debit'],
                								':credit'=>$find['credit'],
                								':date_ajout'=>$find['date_ajout'],
                								':date_paiement'=>$find['date_paiement'],
                								':forfait'=>$find['forfait'],
                								':statut'=>$find['statut']
                
                			 ));
                		}
                
                	}
                }
                
                
                ?>
                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2021 à 10:24:26

                  Fatal error
                    • : Uncaught PDOException: SQLSTATE[HY000]: General error: 9001 Max connect timeout reached while reaching hostgroup 1051 after 10001ms in /storage/ssd5/877/15824877/public_html/modeles/requette.classe.php:175 Stack trace: #0 /storage/ssd5/877/15824877/public_html/modeles/requette.classe.php(175): PDOStatement->execute() #1 /storage/ssd5/877/15824877/public_html/public/partie/tete.php(105): Requettes->RequeUsers() #2 /storage/ssd5/877/15824877/public_html/public/Message.php(204): require('/storage/ssd5/8...') #3 /storage/ssd5/877/15824877/public_html/controleurs/controleur.class.php(22): require('/storage/ssd5/8...') #4 /storage/ssd5/877/15824877/public_html/index.php(16): Controleur->Root() #5 {main} thrown in 
                  /storage/ssd5/877/15824877/public_html/modeles/requette.classe.php
                    •  on line 
                  175  aidez moi svp jaimerai creer tchat et l'erreur
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 février 2021 à 15:58:03 - Message modéré pour le motif suivant : Message complètement hors sujet


                      12 mai 2021 à 19:42:26

                      Salut à tous, je suis sur le chapitre UML et je n'ai pas les cinq fichiers pour l'extention de DIa. Je n'ai que trois fichiers:

                      *-stylesheet.xls

                      -installer.txt

                      -uml2php5

                      Puis-je avoir le reste?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 mai 2021 à 13:47:34

                        bonjour, j'ai un souci pour me connecter à mysql avec pdo sous linux, quelqu'un peut-il m'aider

                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 juin 2021 à 13:14:51

                          Que comporte ton fichier de connexion? Tu peux nous faire voir? Je pense que tu devrai verifier l'adresse du serveur, le nom de ta BD et t'assurer avoir rentré ton user et mp a ta BD
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 juin 2021 à 15:20:47 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                              11 août 2021 à 11:29:02 - Message modéré pour le motif suivant : Message complètement hors sujet


                                18 août 2021 à 13:56:20

                                Bonjour a tous. Je suis le cours PHP et MySQL depuis un temps. Tout allais bien jusqu'a ce que je rencontre un petit soucis dans l'amelioration du code.
                                L'amelioration demande a placer un isset() dans le code pour verifier si deux variables existent. Mon probleme est que je ne sais pas ou placer le isset() dans le code

                                le formulaire 

                                <!DOCTYPE html>
                                <html>
                                	<head>
                                		<meta charset="utf-8" />
                                		<title>Mini-chat</title>
                                	</head>
                                	<body>
                                
                                		<form method="POST" action="minichat_post.php">
                                
                                			<p>
                                				<label for="pseudo">Pseudo : </label><input type="text" name="pseudo" id="pseudo" /><br />
                                				<label for="message">Message : </label><input type="text" name="message" id="message" />
                                			</p>
                                
                                			<p><input type="submit" value="Envoyer" name="envoi" /></p>
                                
                                		</form>
                                	</body>
                                </html>
                                
                                
                                <?php 
                                
                                $bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8',  'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                $requete = $bdd->query('SELECT * FROM messages ORDER BY ID DESC LIMIT 0, 10');
                                while ($reponse = $requete->fetch())
                                {
                                	echo '<p><strong>'.htmlspecialchars($reponse['pseudo']).' :</strong> '.htmlspecialchars($reponse['message']).'</p>';  
                                }
                                
                                
                                $requete->closeCursor();

                                le traitement en php 

                                <?php 
                                
                                //insertion des elements dans la bdd
                                
                                $bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                
                                $requete = $bdd->prepare('INSERT INTO messages(pseudo, message) VALUES(:pseudo, :message)');
                                $requete->execute(array(
                                'pseudo' => $_POST['pseudo'],
                                'message' => $_POST['message']
                                ));
                                
                                if (isset($_POST['pseudo']) AND isset($_POST['message']))
                                {
                                
                                }
                                
                                //redirection vers formulaire
                                
                                header('Location: TP_miniChat.php');



                                aider moi a placer le isset() dans le code dans la mesure ou si les deux variables existent elles s'enregistrent dans la bdd sinon on affiche un message d'erreur

                                -
                                Edité par EmmanuelDésiréOuattara 18 août 2021 à 14:06:21

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 août 2021 à 9:43:49

                                  <?php
                                   
                                  //insertion des elements dans la bdd
                                  if (isset($_POST['pseudo']) AND isset($_POST['message'])){
                                   
                                     $bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                   
                                     $requete = $bdd->prepare('INSERT INTO messages(pseudo, message) VALUES(:pseudo, :message)');
                                     $requete->execute(array(
                                       'pseudo' => $_POST['pseudo'],
                                       'message' => $_POST['message']
                                     ));
                                  
                                   
                                     //redirection vers formulaire
                                   
                                     header('Location: TP_miniChat.php');
                                  } else {
                                    // logique si l une des var est null
                                  }

                                  vois la doc
                                  https://www.php.net/manual/en/function.isset.php
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    25 août 2021 à 10:13:25

                                    Bonjour,

                                    je cherche l'ancien cours de programmation orienté objet en PHP sur openclassroom (avec le jeu de combat et les personnages).

                                    Il était très pédagogique et progressif.

                                    Celui que je trouve maintenant est trop rapidement complexe et on ne trouve plus rien sur la gestion en Base de donnée :o

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 septembre 2021 à 8:11:32

                                      Bonjour à tous,
                                      Je cherche la version intermédiaire de ce cours, c'est à dire la version où l'on pouvait créer le mini framework OCFram.
                                      J'ai la première version où on crée le premeir jet de ce framework, mais il me semble avoir trouvé quelques erreurs ...
                                      Et, cerise sur le gâteau, si vous pouviez l'avoir en pdf, ce serait le must, il n'est plus disponible en ligne ...
                                      Merci à tous

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 septembre 2021 à 13:59:31

                                        Bonjour a tous

                                        Je suis le cours sur les expressions régulières et quand j'utilise la fonction preg_match il y'a une erreur qui s'affiche que je ne comprend pas

                                        <?php 
                                        
                                        	if (preg_match('#amoureux#', 'Je suis un amoureux de l\'informatique'));
                                        	{
                                        		echo 'VRAI';
                                        	}
                                        	else
                                        	{
                                        		echo 'FAUX';
                                        	}
                                        ?>

                                        le code 

                                        Je ne comprend pas ou ce situe l'erreur dans le code 

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          25 septembre 2021 à 8:03:55

                                          Bonjour, 

                                          Il n y a pas de ; dans une if condition (retire le ; a la fin de la ligne 3)

                                          <?php
                                           
                                              if (preg_match('#amoureux#', 'Je suis un amoureux de l\'informatique'))
                                              {
                                                  echo 'VRAI';
                                              }
                                              else
                                              {
                                                  echo 'FAUX';
                                              }
                                          ?>



                                          -
                                          Edité par djedjethai 25 septembre 2021 à 8:05:01

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            2 octobre 2021 à 12:44:28

                                            Bonjour, je suis le cour de OC sur la second partie des expressions et j'ai un soucis sur le tous dernier exemple du cour

                                            le code 

                                            <?php 
                                            	
                                            	if (isset($_POST['texte']))
                                            	{
                                            		$texte = stripslashes($_POST['texte']);// eviter les slash ajoute
                                            		$texte = htmlspecialchars($texte); //eviter les balises html
                                            		$texte = nl2br($texte); //retour a la ligne
                                            
                                            		// on ecris nos regex
                                            
                                            		$texte = preg_replace('#\[b\](.+)\[/b\]#isU', '<strong>$1</strong>', $texte); //les caracteres entre [b]et[/b] seront en gras
                                            
                                            		$texte = preg_replace('#\[i\](.+)\[/i\]#isU', '<em>$1</em>', $texte); //les caracteres entre [i]et[/i] seront en italic
                                            
                                            		$texte = preg_replace('#\[color=(red|blue|green)\](.+)\[/color\]#isU', '<span style="color:$1">$2</span>', $texte); //les couleurs
                                            
                                            		$texte = preg_replace('#http://[a-z0-9-._/]+#i', '<a href="$0">$0</a>', $texte); //les urls seront cliquable
                                            
                                            		echo $texte.'<br />';
                                            
                                            	}
                                            ?>
                                            
                                            
                                            <!DOCTYPE html>
                                            <html>
                                            	<head>
                                            		<meta charset="utf-8">
                                            		<title>Test pregreplace</title>
                                            	</head>
                                            	<body>
                                            
                                            		<p>
                                            			Bienvenu sur le parer de mon site.<br />
                                            			Nous avons fabrique ce parer ensemble, maitenant nous allons le tester en entier.
                                            		</p>
                                            
                                            		<p>Nous utiliserons du BBCode dans notre parser pour nos futurs sites</p>
                                            
                                            		<blockquote>
                                            			<p>
                                            				Je ne suis presque plus un [b]debutant[/b]. j'ai commence a [i]appprendre[/i] sur http://www.openclassrooms.com<br />
                                            				Je vous [b][color=red]recommande[/color][/b] d'aller sur ce site, vous aussi deviendrai un grand [i][color=green]developpeur web[/color][/i].
                                            			</p>
                                            		</blockquote>
                                            
                                            		<form method="post">
                                            			
                                            			<label for="texte">Votre message</label><br />
                                            			<textarea id="texte" name="texte" cols="50" rows="10"></textarea>
                                            
                                            			<p><input type="submit" value="Verifier la puissance des regex"></p>
                                            		</form>
                                            	</body>
                                            </html>
                                            

                                            ce code c'est pratiquement le meme code du cours mais il ne s'execute pas. j'ai meme fait un copier coller a 100% du code du cours, lui aussi ne s'execute pas. Je ne sais pas si'il y a une autre erreur

                                            Désole il fallait juste écrire le texte dans bloc prévu a cette effet 

                                            -
                                            Edité par EmmanuelDésiréOuattara 2 octobre 2021 à 13:10:02

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              2 octobre 2021 à 19:19:28

                                              Bonsoir, je suis le cours "Concevez votre site avec PHP et MySQL. J'ai recopié la correction du "TP minichat" dans mon editeur de texte, j'ai fais tout pareil pour la base de données avec les memes noms mais lorsque j'appuye sur "submit" pour envoyer les données (pseudo et message) dans la table, il n'y a rien qui apparait. Pouvez vous m'aider ?

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                2 octobre 2021 à 19:33:58

                                                Bonjour EmmanuelDésiréOuattara,

                                                j'ai eu un soucis avec ton code en le copiant, mais en virant les commentaires, les espaces inutiles, et en copiant/collant chaque ligne indépendamment, le code fonctionne bien.

                                                -
                                                Edité par Nolivwood 2 octobre 2021 à 19:34:13

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  10 octobre 2021 à 14:00:48 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                                    29 octobre 2021 à 1:02:11

                                                    Salut tous le monde

                                                    j'ai suivi le cours de php un moment, je travaille sur un projet et je me suis retourné sur le cours pour revoir quelque notions concernant les sessions et cookies et là je me rend compte que le cour a été mis à jours. Du coup je me suis dit qu'il devait y avoir de nouvelle fonctionnalités donc j'ai repris à 0 la lecture du cours mais y' a un truc qui m'echappe concernant l'insertion de html au sein de php, j'ai remarqué qu'il y avait une nouvelle façon d'inserer le html au sein de php donc j'aimerais si l'ancienne methode est toujours d'actualité, car elle me semble plus simple 

                                                    petit aperçu de l'ancienne méthode, ci dessous

                                                    else
                                                    
                                                    {
                                                    
                                                    ?>
                                                    
                                                    <button> Appui ici pour recommencer <?php header('Location: s_inscrire.php'); ?> </button>
                                                    
                                                    <?php 
                                                    
                                                    }
                                                    
                                                    ?>







                                                    -
                                                    Edité par EmmanuelDésiréOuattara 29 octobre 2021 à 1:03:02

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 novembre 2021 à 17:26:13

                                                      Ma question est : c'est phrase que j'ai entoure n'est-il pas une erreur ? Bon l'image n'apparait pas. Je pense qu'il y a une erreur dans le resume du chapitre 3. 
                                                      Aussi l'exercice du chapitre 4 concernant la classe encounter n'est pas bien commenté. Je ne m'y retrouve pas du tout et j'ai l'impression que l'enonce de l'exercice ne cadre pas avec la correction proposé

                                                      -
                                                      Edité par SteeveAccrombessi 11 novembre 2021 à 17:34:29

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      MOOC Programmez en orienté objet en PHP

                                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                      • Editeur
                                                      • Markdown