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.
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']
));
}
}
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'].' ';?>
</span>
<?php echo $renc['home_name'].' ';?>
</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']; ?>">
</div>
<div class="equipe">
<?php echo $renc['visitor_name'].' ';?>
<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>
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'].' ';?>
</span>
<?php echo $renc['home_name'].' ';?>
</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']; ?>">
</div>
<div class="equipe">
<?php echo $renc['visitor_name'].' ';?>
<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>
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.
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…
× 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.