Je t'ai dit de faire un tableau comme ça $tableau[$salle][$date] = valeur
Je t'ai dit de faire un tableau comme ça $tableau[$salle][$date] = valeur
bonjour,
je pense avoir un dernier soucis avec une variable que je ne sais pas comment la déclarer
cela se produit sur la 2eme et 4me ligneNotice: Undefined variable: date in C
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $Salle = ( !empty($_POST['Salle'])) ? $_POST['Salle'] : ''; $sth=$pdo->query( "SELECT * FROM planning WHERE ID ='".$Salle."' AND JOUR_DEBUT= '".$date."'" ) ; $donnees = $sth->fetch(); $tableau[$Salle][$date]=$donnees;
Ta première ligne n'a pas de sens : s'il n'y a pas de Salle fournie, il n'y a pas de requête.
Concernant la requête elle doit recuperer toutes les salles désirées pour toute la période de dates.
j'ai essayé de faire cela ,mais j'ai une valeur qui s'ajoute sur la derniere salle,qui le correspond pas a l'enregistrement,pour le moment j'ai essayé de gerer que la salle .
la date je vois après.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $Salle=array(1=>'Salle 1','Salle 2','Salle 3','Salle 4','Salle 5','Cours','Vestiaire'); for($i=1; $i<7; $i++ ){ $sth=$pdo->query( "SELECT * FROM planning WHERE ID ='".$Salle[$i]."'" ) ; } $donnees = $sth->fetch(); $tableau[$Salle[$i]]['2015-07-20']="test";
Il faut faire simple :
Au passage il serait bien d'avoir une table de reference pour les salles plutôt que d'avoir "salle 1" comme id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sth=$pdo->query("SELECT * FROM planning WHERE ID IN ('Salle 1','Salle 2','Salle 3','Salle 4','Salle 5','Cours','Vestiaire')");
D'ailleurs je ne comprends pas bien comment 'Salle 1' par exemple peut etre un ID de la table Planning.
en fait quand j'ai fait ma table avec l'ID en type INT il fallait que je sois absolument en auto increment sinon cela me generer une erreur.
pour cela que j'ai mis mes salles en ID .
d'autre part en faisant ce que tu me suggères je me retrouve a nouveau avec le message d'erreur par rapport a la variable
Notice: Undefined variable: Salle in C
Je suppose que "ID" actuellement n'est pas une clef primaire car les salles ne sont pas uniques, donc dans ta table Planning il n'y a pas de clef ?
si pourtant j'ai bien ma clé primaire
bon, j'ai refait mon tableau j'ai mon ID qui est en clé primaire ainsi qu'en auto incrément sachant que j'ai rajouté une colonne (SALLE) ou mes 7 lignes correspondent aux salles.
j'ai n'ai plus de message ILLEGAL OFFSET TYPE mais
Notice: Undefined variable: Salle in CNotice: Undefined variable: date in C
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $sth=$pdo->query("SELECT PRODUITS FROM planning WHERE SALLE IN ('Salle 1','Salle 2','Salle 3','Salle 4','Salle 5','Cours','Vestiaire')"); $donnees = $sth->fetch(); $tableau[$Salle][$date]=$donnees;
$salle et $date ne sont pas définies dans ton code.
j'ai défini la variable $Salle mais pour $date je ne sais pas trop car je doit prendre en compte le jour debut ainsi que le jour fin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $Salle=isset($_POST['SALLE'])? $_POST['SALLE'] :''; $date=isset($_POST['JOUR_DEBUT '])? $_POST['JOUR_DEBUT '] :''; $sth=$pdo->query("SELECT PRODUITS FROM planning WHERE SALLE IN ('Salle 1','Salle 2','Salle 3','Salle 4','Salle 5','Cours','Vestiaire') AND JOUR_DEBUT=??????AND JOUR_FIN=??????"); $donnees = $sth->fetch(); $tableau[$Salle][$date]=$donnees;
toujours la même erreur que je t'ai déjà signalé : a quoi servent les deux premières lignes ?
je comprends bien mais c'est la seule façon que j'ai pu trouver pour définir mes variables $Salle et $date,alors effectivement j'ai rien qui s'affiche pour le moment
Je pense que tu aurais pu au moins écrire correctement la requête toi même ; tu n'as même pas mis les colonnes utiles dans le SELECT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $sth=$pdo->prepare("SELECT SALLE, PRODUITS, DATE_DEBUT, DATE_FIN FROM planning WHERE SALLE IN ('Salle 1','Salle 2','Salle 3','Salle 4','Salle 5','Cours','Vestiaire') AND JOUR_DEBUT <= :datefin AND JOUR_FIN >= :datedebut"); $sth->execute(array(':datefin'=>$_POST['JOUR_FIN'], ':datedebut'=>$_POST['JOUR_DEBUT'])); while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { $objDatedebut = date_create($row['JOUR_DEBUT']); $objDatefin = date_create($row['JOUR_FIN']); for( $date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { $tableau[$row['SALLE']][$date->format('Y-m-d')][] = $row['PRODUITS']; } }
je te remercie pour le code,en fait je n'ai pas trouvé utile de detailler dans le select les entrée car il n'y a que l'ID qui ne rentré pas en compte, tout les autres champs oui.
d'autre part il y a une erreur de synthaxe dans la requete
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':datefin AND JOUR_FIN >= :datedebut' at line 1'
je n'ai rien compris.car il n'y a que l'ID qui ne rentré pas en compte, tout les autres champs oui.
Tu as laissé query() au lieu de prepare() je pense concernant l'erreur.
je m'en suis rendu compte après, mais par contre je me retrouve avec ces message d'erreur concernant
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sth->execute(array(':datefin'=>$_POST['JOUR_FIN'], ':datedebut'=>$_POST['JOUR_DEBUT ']));sacahant que j'ai modifiéNotice: Undefined index: JOUR_FIN
Notice: Undefined index: JOUR_DEBUT
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sth=$pdo->prepare("SELECT SALLE, PRODUITS, JOUR_DEBUT, JOUR_FIN FROM planning......
JOUR_DEBUT (attention il y a un espace qui se ballade après) et JOUR_FIN doivent venir de ton formulaire non ? Tu as bien validé le formulaire pour arriver sur ce code ?
oui tout vient de ma table et du formulaire,et j'avais corrigé l'espace.
dans le formulaire de saisie le jour je l'ai renommé en JOUR_DEBUT, et jourf en JOUR_FIN
j'ai rajouté
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_POST['JOUR_DEBUT']) && isset($_POST['JOUR_FIN']) ){
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager