[PHP/MYSQL] Débutant demande conseils.
smile-boy
-
smile-boy -
smile-boy -
Bonjour,
J'aimerais créer un tableau qui contienne:
-1ere colonne: les mois
-2/3/4/5eme colonnes les semaines
Tout cela est stocker dans ma base de donnée, avec comme champs: id, mois, dates.
Mais je ne sais pas comment faire ma boucle en php pour qu'a chaque ligne on est en 1ere colone le mois et par la suite les semaines.
Dsl je ne m'exprime pas très clairement.
Merci.
J'aimerais créer un tableau qui contienne:
-1ere colonne: les mois
-2/3/4/5eme colonnes les semaines
Tout cela est stocker dans ma base de donnée, avec comme champs: id, mois, dates.
Mais je ne sais pas comment faire ma boucle en php pour qu'a chaque ligne on est en 1ere colone le mois et par la suite les semaines.
Dsl je ne m'exprime pas très clairement.
Merci.
A voir également:
- [PHP/MYSQL] Débutant demande conseils.
- Easy php - Télécharger - Divers Web & Internet
- Logiciel montage vidéo débutant - Guide
- Logiciel de programmation pour débutant - Guide
- Mysql community download - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
20 réponses
Salut
Tu sais faire une boucle pour afficher (sans tableau) des données de ta base ?
Si c'est le cas le reste est simple :
tu fais une boucle while (tant que je n'ai pas lu le dernier enregistrement)
{
tu insères une ligne de ton tableau (2 cellules horiz.) contenant la variable lue provenant de ta table
}
et tu refermes la base !
Si tu connais les div c'est jouable sans table.
Tu sais faire une boucle pour afficher (sans tableau) des données de ta base ?
Si c'est le cas le reste est simple :
tu fais une boucle while (tant que je n'ai pas lu le dernier enregistrement)
{
tu insères une ligne de ton tableau (2 cellules horiz.) contenant la variable lue provenant de ta table
}
et tu refermes la base !
Si tu connais les div c'est jouable sans table.
Non ce n'est pas très clair.
Tu veux:
mois- sem1- sem2- sem3 - sem 4 ?
Mais un mois ne commence pas forcément par une semaine entière
Ensuite dans ta base tu as quoi comme valeur dans ton champ date ?
Tu veux:
mois- sem1- sem2- sem3 - sem 4 ?
Mais un mois ne commence pas forcément par une semaine entière
Ensuite dans ta base tu as quoi comme valeur dans ton champ date ?
Le champ dates correspond aux semaines sous la forme 10>17.
Pour ce qui est de la boucle c'est la qu'est mon problème je m'explique:
voila la boucle
Maintenant je créer un ligne <tr>, j'affiche une colonne qui contiendra le mois <td>, ensuite un autre cellule pour la 1ere semaine <td>.
Mais maintenant si je veu afficher les autre semaine du même mois je fais comment ?
-si je remet des <td> avec $donnees['dates'] ca va me remettre les même dates ( c'est normal)
-si je ferme la boucle ça va me recréer une ligne avec le mois
Pouvez vous m'éclairer un peu svp !
Cordialement.
Pour ce qui est de la boucle c'est la qu'est mon problème je m'explique:
voila la boucle
while ($donnees = mysql_fetch_array($reponse) )
{
Maintenant je créer un ligne <tr>, j'affiche une colonne qui contiendra le mois <td>, ensuite un autre cellule pour la 1ere semaine <td>.
Mais maintenant si je veu afficher les autre semaine du même mois je fais comment ?
-si je remet des <td> avec $donnees['dates'] ca va me remettre les même dates ( c'est normal)
-si je ferme la boucle ça va me recréer une ligne avec le mois
Pouvez vous m'éclairer un peu svp !
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon je pense avoir trouvé un solution mais j'ai une erreur avec ma requette SQL la voici:
Ou est l'erreur ?
$reponse2 = mysql_query("select * from tp where mois="$donnees1['mois']");
Ou est l'erreur ?
Tu as des " dans une chaine qui commence et finit par " donc pb
fais:
et avec des majuscules c'est plus facile à lire donc à debugger
fais:
$critere=$donnees1['mois'];
$reponse2 = mysql_query("SELECT * FROM tp WHERE mois='$critere'");
et avec des majuscules c'est plus facile à lire donc à debugger
Merci !!!
Encore une petite question ( je suis chian je sais lol )
voici mon bou de code:
Maintenant les dates s'affiche bien après chaque mois , mais a chaque fois il a plusieurs ligne de mois.
Je vois vrément pas comment je pourrais faire pour qu'il n'y en ai qu'une par mois.
A moins peut être une condition mais je ne c'est pas ça serais très correcte.
Encore une petite question ( je suis chian je sais lol )
voici mon bou de code:
$reponse1 = mysql_query("SELECT * FROM tp");
while ($donnees1 = mysql_fetch_array($reponse1) )
{
?>
<tr><td><p>
<small>
<b><?php echo $donnees1['mois']; ?></b></small>
</p>
</td>
<?php
$critere=$donnees1['mois'];
$reponse2 = mysql_query("SELECT dates FROM tp WHERE mois='$critere'");
while ($donnees2 = mysql_fetch_array($reponse2))
{
?>
<td><p><small><b>
<?php echo $donnees2['dates']; ?></b></small>
</p>
</td><?php
}
}
?>
Maintenant les dates s'affiche bien après chaque mois , mais a chaque fois il a plusieurs ligne de mois.
Je vois vrément pas comment je pourrais faire pour qu'il n'y en ai qu'une par mois.
A moins peut être une condition mais je ne c'est pas ça serais très correcte.
Merci !!
Encore une petite question ( Je suis chian je sais! lol )
Bon voila mon bout de code :
Maintenant les dates s'affiche bien à la suite des mois, mais il y a plusieurs ligne de mois.
Comment faire pour n'en avoir qu'une par mois ?
Peut être avec un condition, mais je ne sais pas si ça serait très correct ?
Encore une petite question ( Je suis chian je sais! lol )
Bon voila mon bout de code :
$reponse1 = mysql_query("SELECT * FROM tp");
while ($donnees1 = mysql_fetch_array($reponse1) )
{
?>
<tr><td><p>
<small>
<b><?php echo $donnees1['mois']; ?></b></small>
</p>
</td>
<?php
$critere=$donnees1['mois'];
$reponse2 = mysql_query("SELECT dates FROM tp WHERE mois='$critere'");
while ($donnees2 = mysql_fetch_array($reponse2))
{
?>
<td><p><small><b>
<?php echo $donnees2['dates']; ?></b></small>
</p>
</td><?php
}
}
?>
Maintenant les dates s'affiche bien à la suite des mois, mais il y a plusieurs ligne de mois.
Comment faire pour n'en avoir qu'une par mois ?
Peut être avec un condition, mais je ne sais pas si ça serait très correct ?
Bonsoir,
Il faut que tu opères en deux temps:
1- extraction BDD stockage dans un array multidimensions
2- affichage a partir de cet array
Essayes ça (je n'ai pas testé !):
Il faut que tu opères en deux temps:
1- extraction BDD stockage dans un array multidimensions
2- affichage a partir de cet array
Essayes ça (je n'ai pas testé !):
$reponse1 = mysql_query("SELECT * FROM tp");
// on va genrer un tableau a deux dimensions, premiere dimension du tableau index=noms des mois, ensuite chaque elemnt contient un sous array avec les dates
$array_aff=array();
while ($donnees1 = mysql_fetch_array($reponse1) ){
$index_array=$donnees1['mois'];
$critere=$donnees1['mois'];
$reponse2 = mysql_query("SELECT dates FROM tp WHERE mois='$critere'");
while ($donnees2 = mysql_fetch_array($reponse2)){
$array_aff[$index_array][]= $donnees2['dates'];
}
}
// un petit print_r juste pour te monter ce qu'il contient, tu l'enlèves après
echo"<pre>";
print_r($array_aff);
echo"</pre>";
//
//ensuite on affiche en parcourant l'array multidimension
if(sizeof($array_aff)>0){
foreach($array_aff as $cle=>$s_array){//parcours du premier niveau de l'array
echo "<tr><td><p><small><b>".$cle."</b></small></p></td>";// a mon avis les <p> </p> sont inutiles
foreach($s_array as $value){//parcours des sous niveaux
echo "<td><p><small><b>".$value."</b></small></p></td>";
}
echo "</tr>";
}
}
Mais ton code devrait marcher aussi, il manque juste un </tr> a la fin de la première boucle while et enlèves aussi les <p></p>:
<?
$reponse1 = mysql_query("SELECT * FROM tp");
while ($donnees1 = mysql_fetch_array($reponse1) )
{
?>
<tr><td><p>
<small>
<b><?php echo $donnees1['mois']; ?></b></small>
</p>
</td>
<?php
$critere=$donnees1['mois'];
$reponse2 = mysql_query("SELECT dates FROM tp WHERE mois='$critere'");
while ($donnees2 = mysql_fetch_array($reponse2))
{
?>
<td><p><small><b>
<?php echo $donnees2['dates']; ?></b></small>
</p>
</td><?php
}
?>
</tr>
<?php
}
?>
Après une nuit de repos pour ma petite tête:
pour éviter d'avoir plusieurs lignes avec le même mois:
et ensuite tu fais comme le topic ci dessus.
pour éviter d'avoir plusieurs lignes avec le même mois:
$reponse1 = mysql_query("SELECT DISTINCT mois FROM tp");
et ensuite tu fais comme le topic ci dessus.
Ça marche niquel!
c'est vrai que je n'avais pas pensé à vérifier si il existait ce critère de sélection.
En tout cas, je te remercie Alain42 de t'être cassé la tête pour moi, c'est vraiment sympa !
Encore merci et puis peut être à une prochaine fois!
Bye
c'est vrai que je n'avais pas pensé à vérifier si il existait ce critère de sélection.
En tout cas, je te remercie Alain42 de t'être cassé la tête pour moi, c'est vraiment sympa !
Encore merci et puis peut être à une prochaine fois!
Bye
Bonsoir,
J' ai encore besoin d'un peu d'aide pour un script:
j'ai plusieurs formulaires sous forme de tableau contenant chacun une date,
quand je valide, j'aimerais que ça modifie la bdd (sachant que c'est la même que précédemment c-a-d "id,mois,dates")
Mais comment faire pour que ça modifie ligne après ligne dans la bdd ?
De plus j'ai un second problème, le formulaire et la modification doivent se faire dans la même page, l'envoi du formulaire se fait par $_POST mais quand je fais un test pour voir si cette variable existe ca ne marche pas.
Voila le code:
Merci
J' ai encore besoin d'un peu d'aide pour un script:
j'ai plusieurs formulaires sous forme de tableau contenant chacun une date,
quand je valide, j'aimerais que ça modifie la bdd (sachant que c'est la même que précédemment c-a-d "id,mois,dates")
Mais comment faire pour que ça modifie ligne après ligne dans la bdd ?
De plus j'ai un second problème, le formulaire et la modification doivent se faire dans la même page, l'envoi du formulaire se fait par $_POST mais quand je fais un test pour voir si cette variable existe ca ne marche pas.
Voila le code:
$reponse1 = mysql_query("SELECT * FROM tp WHERE mois='$critere'");
?>
<table><form method="post" action="tp3.php">
<?php
$i = 0;
while($donnees1 = mysql_fetch_array($reponse1))
{
$i = $i + 1;
?>
<tr><td>
<input type="text" value="<?php echo $donnees1['dates']; ?>" name="dates<?php echo $i;?>" />
</td></tr>
<?php
}
?> <input value="Envoyer" type="submit" /></form>
<?php
}
elseif(isset ($_post['dates1']))
{
echo "test";
}
else
{echo "Erreur";}
?>
Merci
Bonsoir:
$_post['dates1'])
Attention la casse des variables en php est importante et $_POST doit être en majuscules.
et pour debugger il vaudrait mieux faire:
@lain
pour incrémenter $i tu peux aussi faire $i+=1; ou tout simplement $i++;
$_post['dates1'])
Attention la casse des variables en php est importante et $_POST doit être en majuscules.
et pour debugger il vaudrait mieux faire:
elseif(isset ($_POST['dates1']))
{
echo "Recu: ".$_POST['dates1'];
}
else
{echo "Erreur";}
@lain
pour incrémenter $i tu peux aussi faire $i+=1; ou tout simplement $i++;
A oui merci c'est une erreur bête,
Et sinon une idée pour dire a mysql quel ligne doit t-il modifier ??
Et sinon une idée pour dire a mysql quel ligne doit t-il modifier ??
Oui tu utilises
UPDATE .......................... WHERE champ_n='critere'
et critere c'est une des valeurs postées par exemple l'id ou mois, en tout cas une valeur unique dans ta table.
UPDATE .......................... WHERE champ_n='critere'
et critere c'est une des valeurs postées par exemple l'id ou mois, en tout cas une valeur unique dans ta table.
Après ca :
Comment je peut faire pour en extraire le premier id de la sélection ?
$reponse1 = mysql_query("SELECT * FROM tp WHERE mois='$mois2'");
Comment je peut faire pour en extraire le premier id de la sélection ?
Par exemple:
$reponse1 = mysql_query("SELECT * FROM tp WHERE mois='$mois2' LIMIT 0,1");
$ligne1=mysql_fetch_array($reponse1);
$premier_id=$ligne1['id'];