Partage
  • Partager sur Facebook
  • Partager sur Twitter

Site de prono entre amis

Affichage de matchs

Sujet résolu
    29 août 2018 à 9:23:37

    Est-ce que par hasard tu as un test avec !empty() quelque part ? Parce que !empty(0) va retourner false. Si tu souhaites utiliser 0 comme valeur, c'est un des cas où il faut utiliser isset($truc) && $truc > 0.

    -
    Edité par Ymox 29 août 2018 à 9:24:15

    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2018 à 9:58:50

      Ne serait-ce pas cela qui pourrait gêner ??

      if (empty($pronostics['homeprono'])||empty($pronostics['visiteprono']))



      • Partager sur Facebook
      • Partager sur Twitter
        29 août 2018 à 10:04:21

        Exactement, je n'avais pas pensé qu'aucun but pouvait être marqué par l'une ou l'autre équipe. Tu peux adapter avec la condition que j'ai proposé.

        • Partager sur Facebook
        • Partager sur Twitter
          29 août 2018 à 10:07:57

          Super, c'était bien ça.

          Sujet résolu.

          Encore un très grand merci pour ton aide et tes conseils Ymox

          EDIT

          J'ai de nouveau un problème, si le membre ne saisi pas ses pronostics, il est reconnu un 0_0 et donc potentiellement un bon pronostic. Comment définir le 0 comme non nul?

          J'ai tenté le $truc>0.

          if(isset($_POST['envoipronos']) && $_POST['envoipronos'] > 0)
          {
          $validomicile = $bdd->prepare("UPDATE membres_matchs SET 
            homeprono=:homeprono, 
            visiteprono=:visiteprono
            WHERE id_matchs=:idmatch AND id_membres=:sessionid");
          
          foreach ($_POST['membres_matchs'] as $idMatch => $pronostics)
          {
                 $validomicile->execute(array(
                  'homeprono'=>$pronostics['homeprono'],
                  'visiteprono'=>$pronostics['visiteprono'],
                  'idmatch'=>$idMatch,
                  'sessionid'=>$_SESSION['id']
                ));
          }
          }

          Mais rien

          EDIT n2:

          C'est ok j'ai réussi tout fonctionne :)

          -
          Edité par pierto 30 août 2018 à 8:18:29

          • Partager sur Facebook
          • Partager sur Twitter
            1 septembre 2018 à 23:17:39

            Help 

            J'ai un nouveau problème avec mon code. J'ai remarqué que l'affichage des pronostic non réalisé sont les mêmes peu importe la session en cours... cependant les pronostics modifiés sont bien enregistrés, seul l'affichage est faux. Avez vous une idée pour remédier à ce problème?

            Mon code :

            <div class="rencontres">
            <form action="" method="POST">
            <?php
            $DateNow = new DateTime("now",new DateTimezone("Europe/Paris"));
            $reqmatch = $bdd->prepare('SELECT matchs.id, groupe, journey, date_match, away, home, home_score, away_score, cote_home, cote_nul, cote_away, h.equipe_name AS home_name, h.logo AS home_logo, v.equipe_name AS visitor_name, v.logo AS visitor_logo, 
              x.homeprono AS homescore, y.visiteprono AS visitescore
              FROM matchs 
              INNER JOIN equipes h ON home = h.id
              INNER JOIN equipes v ON away = v.id
              INNER JOIN membres_matchs x ON matchs.id = x.id_matchs
              INNER JOIN membres_matchs y ON matchs.id = y.id_matchs
              WHERE date_match>now()
              ORDER BY date_match ASC, rencontre ASC');
            $reqmatch->execute();
            $matchaffiche='';
            while ($renc = $reqmatch->fetch())
            {
            $daterencontre=$renc['date_match'];
            setlocale(LC_TIME, "fr_FR");
            $dt= strftime("%a %d %b %Y %k:%M", strtotime($daterencontre));
            if ($matchaffiche != $renc['id']) {
            
            ?>
              <div class="datecol">
              <?php echo $dt;
            ?>
            </div>
            <div class="groupe"> Groupe 
              <?php echo $renc['groupe'];
            ?><br/>
            </div><br/>
            <div class="colonne">
            
            <div class="textcolonne">
            <div class="equipeh">
            <span class="logmini">
            <?php echo $renc['home_logo'].'&nbsp;';?>
            </span>
              <?php echo $renc['home_name'].'&nbsp;';?>
            </div>
            <div>
            <input type="number" name="membres_matchs[<?php echo $renc['id']; ?>][homeprono]" min="0" value="<?php echo $renc['homescore']; ?>"> - <input type="number" name="membres_matchs[<?php echo $renc['id']; ?>][visiteprono]" min="0" value="<?php echo $renc['visitescore']; ?>">&nbsp;
            </div>
            <div class="equipe">
            <?php echo $renc['visitor_name'].'&nbsp;';?>
            <span class="logmini">
            <?php echo $renc['visitor_logo'];?>
            </span>
            </div>
            </div>
            <div class="textcolonne1">
              <div>
                <input type="number" name="cotedom" value="<?php echo $renc['cote_home']; ?>"" disabled>
                <input type="number" name="cotedom" value="<?php echo $renc['cote_nul']; ?>"" disabled>
                <input type="number" name="cotedom" value="<?php echo $renc['cote_away']; ?>"" disabled>
              </div>
            </div>
            </div><br/>
            
            <?php
            }
            $matchaffiche=$renc['id'];
            
            if(isset($_POST['envoipronos']))
            {
            $validomicile = $bdd->prepare("UPDATE membres_matchs SET 
              homeprono=:homeprono, 
              visiteprono=:visiteprono
              WHERE id_matchs=:idmatch AND id_membres=:sessionid");
            
            foreach ($_POST['membres_matchs'] as $idMatch => $pronostics)
            {
              if ($DateNow>$daterencontre) {
                   $validomicile->execute(array(
                    'homeprono'=>$pronostics['homeprono'],
                    'visiteprono'=>$pronostics['visiteprono'],
                    'idmatch'=>$idMatch,
                    'sessionid'=>$_SESSION['id']
                  ));
            }
            }
            }
            
            }
            ?>
            <div class="validation">
            <input class="validez" type="submit" name="envoipronos" value="Valide tes pronos">
            </div>
            </form>
            </div>

            Ce qui s'affiche :

            Ce qui est enregistré en BDD:

            • Partager sur Facebook
            • Partager sur Twitter
              2 septembre 2018 à 10:31:50

              Tu ne devrais pas tout simplement ajouter une clause pour ne sortir que les pronostics du membre ?

              • Partager sur Facebook
              • Partager sur Twitter
                2 septembre 2018 à 14:39:00

                Salut 

                J'ai tenté d'ajouter une nouvelle jointure mais en vain. Aurais tu une idée afin de réaliser cette opération?

                EDIT c'est ok, j'ai abandonné l'idée de la jointure, j'ai fini par ajouter une requête (je sais c'est mal mais c'était une solution) que j'ai inséré avant la fonction while. Voici le code:

                <div class="rencontres">
                <form action="" method="POST">
                <?php
                $DateNow = new DateTime("now",new DateTimezone("Europe/Paris"));
                $reqmatch = $bdd->prepare('SELECT matchs.id, groupe, journey, date_match, away, home, home_score, away_score, cote_home, cote_nul, cote_away, h.equipe_name AS home_name, h.logo AS home_logo, v.equipe_name AS visitor_name, v.logo AS visitor_logo, 
                  x.homeprono AS homescore, y.visiteprono AS visitescore
                  FROM matchs 
                  INNER JOIN equipes h ON home = h.id
                  INNER JOIN equipes v ON away = v.id
                  INNER JOIN membres_matchs x ON matchs.id = x.id_matchs
                  INNER JOIN membres_matchs y ON matchs.id = y.id_matchs
                  WHERE date_match>now()
                  ORDER BY date_match ASC, rencontre ASC');
                $reqmatch->execute();
                $matchaffiche='';
                
                $reqscores=$bdd->prepare('SELECT * FROM membres_matchs, matchs WHERE id_membres = ? AND id_matchs=?');
                
                while ($renc = $reqmatch->fetch())
                {
                $idscore=$_SESSION['id'];
                $matchsaisie=$renc['id'];
                $reqscores->execute(array($idscore, $matchsaisie));
                $scoredonnees= $reqscores->fetch(); 
                
                $daterencontre=$renc['date_match'];
                setlocale(LC_TIME, "fr_FR");
                $dt= strftime("%a %d %b %Y %k:%M", strtotime($daterencontre));
                if ($matchaffiche != $renc['id']) {
                
                ?>
                  <div class="datecol">
                  <?php echo $dt;
                ?>
                </div>
                <div class="groupe"> Groupe 
                  <?php echo $renc['groupe'];
                ?><br/>
                </div><br/>
                <div class="colonne">
                
                <div class="textcolonne">
                <div class="equipeh">
                <span class="logmini">
                <?php echo $renc['home_logo'].'&nbsp;';?>
                </span>
                  <?php echo $renc['home_name'].'&nbsp;';?>
                </div>
                <div>
                <input type="number" name="membres_matchs[<?php echo $renc['id']; ?>][homeprono]" min="0" value="<?php echo $scoredonnees['homeprono']; ?>"> - <input type="number" name="membres_matchs[<?php echo $renc['id']; ?>][visiteprono]" min="0" value="<?php echo $scoredonnees['visiteprono']; ?>">&nbsp;
                </div>
                <div class="equipe">
                <?php echo $renc['visitor_name'].'&nbsp;';?>
                <span class="logmini">
                <?php echo $renc['visitor_logo'];?>
                </span>
                </div>
                </div>
                <div class="textcolonne1">
                  <div>
                    <input type="number" name="cotedom" value="<?php echo $renc['cote_home']; ?>"" disabled>
                    <input type="number" name="cotedom" value="<?php echo $renc['cote_nul']; ?>"" disabled>
                    <input type="number" name="cotedom" value="<?php echo $renc['cote_away']; ?>"" disabled>
                  </div>
                </div>
                </div><br/>
                
                <?php
                }
                $matchaffiche=$renc['id'];
                
                if(isset($_POST['envoipronos']))
                {
                $validomicile = $bdd->prepare("UPDATE membres_matchs SET 
                  homeprono=:homeprono, 
                  visiteprono=:visiteprono
                  WHERE id_matchs=:idmatch AND id_membres=:sessionid");
                
                foreach ($_POST['membres_matchs'] as $idMatch => $pronostics)
                {
                  if ($DateNow>$daterencontre) {
                       $validomicile->execute(array(
                        'homeprono'=>$pronostics['homeprono'],
                        'visiteprono'=>$pronostics['visiteprono'],
                        'idmatch'=>$idMatch,
                        'sessionid'=>$_SESSION['id']
                      ));
                }
                }
                }
                
                }
                ?>
                <div class="validation">
                <input class="validez" type="submit" name="envoipronos" value="Valide tes pronos">
                </div>
                </form>
                </div>



                -
                Edité par pierto 2 septembre 2018 à 22:28:56

                • Partager sur Facebook
                • Partager sur Twitter
                  2 septembre 2018 à 23:27:20

                  Pourtant il ne devait suffire que d'ajouter une partie dans la clause WHERE

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 septembre 2018 à 16:38:28

                    il fallait ajouter la table membres dans la requete avant d’inserer une condition Where, malheuremebt j’ai eu trop de mal à ajouter un inner join supplémentaire. 

                    Mais bien que cela soit moche cela fonctionne. 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 septembre 2018 à 17:31:09

                      L'ID du membre, tu l'as déjà dans membres_matchs, donc non, je ne pense pas que tu avais besoin de joindre encore une fois — sauf si tu voulais avoir une condition sur autre chose que l'ID du membre. Mais ta seconde requête se base uniquement sur les colonnes de la table membres_matchs

                      -
                      Edité par Ymox 3 septembre 2018 à 17:32:04

                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 septembre 2018 à 12:02:49

                        J’ai beau essayé je n’y arrive pas et pourtant je sais que ta méthode est la meilleure

                        EDIT

                        J'ai enfin réussi... il fallait mettre une double condition dans where:

                          WHERE date_match>now() AND x.id_membres=? AND y.id_membres=?
                        

                        Merci :)

                        -
                        Edité par pierto 6 septembre 2018 à 23:44:30

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Site de prono entre amis

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown