Question php/sql
Résolu
jean.miche
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
-
jean.miche Messages postés 90 Date d'inscription Statut Membre Dernière intervention -
jean.miche Messages postés 90 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis actuellement en création de site web. Le php n'étant pas mon point fort, je souhaiterais vous poser une question.
J'ai actuellement, ma BDD avec mes tables. Je voudrais qu'apparaissent certaines choses sur le site.
Exemple :
Dates de représentation d'une scène théâtrale.
Sur toutes mes pages, j'ai un encart où devrait apparaitre la date et le lieu des 2 prochaines représentations.
Dans ma BDD j'ai une table representations, avec id_repr, date, lieu. Tout simplement.
Comment celà doit-il se traduire sur ma page_web.php ?
Comme ceci :???
<div id="dates">
<ul>
<li><span class="date"><?php echo $ligne["date"]; ?></span></li>
<li><span class="texte"><?php echo $ligne["lieu"]; ?></span></li>
</ul>
</div>
De plus, comment la prochaine date doit elle apparaitre en 1ere et la seconde en dessous ?
Et enfin, est-il possible qu'une fois la représentation passée, elle ne soit plus visible (voire même effacée de ma BDD) ?
Merci d'avance.
Je suis actuellement en création de site web. Le php n'étant pas mon point fort, je souhaiterais vous poser une question.
J'ai actuellement, ma BDD avec mes tables. Je voudrais qu'apparaissent certaines choses sur le site.
Exemple :
Dates de représentation d'une scène théâtrale.
Sur toutes mes pages, j'ai un encart où devrait apparaitre la date et le lieu des 2 prochaines représentations.
Dans ma BDD j'ai une table representations, avec id_repr, date, lieu. Tout simplement.
Comment celà doit-il se traduire sur ma page_web.php ?
Comme ceci :???
<div id="dates">
<ul>
<li><span class="date"><?php echo $ligne["date"]; ?></span></li>
<li><span class="texte"><?php echo $ligne["lieu"]; ?></span></li>
</ul>
</div>
De plus, comment la prochaine date doit elle apparaitre en 1ere et la seconde en dessous ?
Et enfin, est-il possible qu'une fois la représentation passée, elle ne soit plus visible (voire même effacée de ma BDD) ?
Merci d'avance.
A voir également:
- Question php/sql
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
11 réponses
En résumé, un algorithme c'est la description de ce que doit faire un programme pour arriver à faire ce que l'on souhaite.
Si cela n'est pas clair on ne peut arriver à rien.
Donc si vous souhaitez comparer deux dates il faut connaitre la structure des dates à comparer de manière à les rendre comparables.
Quand j'étais petit, à l' école on me disait qu'on pouvait pas comparer des carottes et des choux fleur.
Dans le cas présent, vous demander comment faire, on vous donne une façon de faire. cette dernière ne peut être qu'adaptée par vous même.
format date faites attention : les formats peuvent être différents entre php et mysql.
les champs ajoutés jour mois année peuvent servir, mais compliquer l'algorithme de comparaison.
c'est pourquoi je vous disait de rendre les dates comprables.
- vous avez une date dans votre base de données
- vous avez la date du jour avec la fonction date de php
- transformez cette dernière dans le même format que celle de votre BDD
- lancez la requête pour extraite de votre BDD les informations souhaitées.
Si cela n'est pas clair on ne peut arriver à rien.
Donc si vous souhaitez comparer deux dates il faut connaitre la structure des dates à comparer de manière à les rendre comparables.
Quand j'étais petit, à l' école on me disait qu'on pouvait pas comparer des carottes et des choux fleur.
Dans le cas présent, vous demander comment faire, on vous donne une façon de faire. cette dernière ne peut être qu'adaptée par vous même.
format date faites attention : les formats peuvent être différents entre php et mysql.
les champs ajoutés jour mois année peuvent servir, mais compliquer l'algorithme de comparaison.
c'est pourquoi je vous disait de rendre les dates comprables.
- vous avez une date dans votre base de données
- vous avez la date du jour avec la fonction date de php
- transformez cette dernière dans le même format que celle de votre BDD
- lancez la requête pour extraite de votre BDD les informations souhaitées.
jean.miche
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
1
En effet, c'est plus clair, merci !
vous dites
Dans ma base, la date est de style DATE, au format AAAA-MM-JJ.
alors cela devrait aller
SELECT * FROM representations WHERE date >= CURRENT_DATE() ORDER BY date LIMIT 2
Dans ma base, la date est de style DATE, au format AAAA-MM-JJ.
alors cela devrait aller
SELECT * FROM representations WHERE date >= CURRENT_DATE() ORDER BY date LIMIT 2
Ok j'ai trouvé... et y'a de quoi grincer des dents...
Relisez ma requête :
La faute était due aux quote autour du nom de la table date. Rageant.
Merci à vous pour tout !
Mais puis-je vous poser une autre question ?
La page me retourne des � pour chaque caractère spécial.
Ma page est en utf-8 dans le head : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Et dans ma base, l'interclassement du champ lieu est latin1_swedish_ci.
J'ai trouvé une "astuce" qui permettrait d'afficher les caractères correctement en ajoutant mysql_query("SET NAMES UTF8");
Est-ce possible de la sorte car je n'y arrive pas (oui je suis un boulet...), ou sinon, je l'ai mal placé (dans ma page php sous ma requête)
Merci d'avance.
Relisez ma requête :
SELECT * FROM representations WHERE 'date' >= CURRENT_DATE() ORDER BY date LIMIT 2
La faute était due aux quote autour du nom de la table date. Rageant.
Merci à vous pour tout !
Mais puis-je vous poser une autre question ?
La page me retourne des � pour chaque caractère spécial.
Ma page est en utf-8 dans le head : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Et dans ma base, l'interclassement du champ lieu est latin1_swedish_ci.
J'ai trouvé une "astuce" qui permettrait d'afficher les caractères correctement en ajoutant mysql_query("SET NAMES UTF8");
Est-ce possible de la sorte car je n'y arrive pas (oui je suis un boulet...), ou sinon, je l'ai mal placé (dans ma page php sous ma requête)
Merci d'avance.
Bonjour,
Il y a plusieurs solutions à votre problématique
vous pouvez faire le ménage dans votre base de données.
ou vous pouvez dans votre requête pour récupérer les infos mettre un critère de sélection sur la date en ne demandant que celles égales ou postérieures à la date du jour.
Il y a plusieurs solutions à votre problématique
vous pouvez faire le ménage dans votre base de données.
ou vous pouvez dans votre requête pour récupérer les infos mettre un critère de sélection sur la date en ne demandant que celles égales ou postérieures à la date du jour.
ça ressemblerait à un truc du genre
select * from ma table where date >= aujourdhui order by date desc
en français =
je sélectionne dnas ma table les enregistrement dont la date est postérieure ou égale à aujourdhui en triant sur la date en descendant
select * from ma table where date >= aujourdhui order by date desc
en français =
je sélectionne dnas ma table les enregistrement dont la date est postérieure ou égale à aujourdhui en triant sur la date en descendant
à priori ça donne ça avec une boucle pour avoir une liste :
<?php
$sql="SELECT * FROM representations WHERE 'date' >= aujourdui ORDER BY date DESC";
$data=mysql_query($sql) or die ("");
while($ligne=mysql_fetch_assoc($data)) {
echo "<ul><li>";
echo $ligne["date"] ."</li><li>". $ligne["lieu"]. "</li></ul>";
}
?>
Mais ça ne m'affiche rien.
(c'est bien aujourdui qu'il faut mettre? Désolé pour mes questions de débutants...)
<?php
$sql="SELECT * FROM representations WHERE 'date' >= aujourdui ORDER BY date DESC";
$data=mysql_query($sql) or die ("");
while($ligne=mysql_fetch_assoc($data)) {
echo "<ul><li>";
echo $ligne["date"] ."</li><li>". $ligne["lieu"]. "</li></ul>";
}
?>
Mais ça ne m'affiche rien.
(c'est bien aujourdui qu'il faut mettre? Désolé pour mes questions de débutants...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
NON
aujoud'hui c'est du français pas du php.
il faut utiliser la fonction date avec les bonnes options (c'est à dire celles qui vont bien avec le format de la date de la base de données, pour faire les bonnes comparaisons).
NON
aujoud'hui c'est du français pas du php.
il faut utiliser la fonction date avec les bonnes options (c'est à dire celles qui vont bien avec le format de la date de la base de données, pour faire les bonnes comparaisons).
Dans ma BDD, le champs date est un varchar et non pas un date. afin que l'on puisse écrire la date en entier au format français (ex : 24 août 2009). Donc ce n'est pas comme si je voulais afficher la date du moment, mais celle qui sont dans la BDD...
je ne suis peut-être pas très clair...
Il faut que je mette date('H\Hi') au lieu d'aujourdui ?
je ne suis peut-être pas très clair...
Il faut que je mette date('H\Hi') au lieu d'aujourdui ?
ma requete doit plutot etre :
SELECT * FROM representations WHERE 'date' >= current_timestamp ORDER BY date DESC
ma bdd a changé, il y a désormais 4 champs dans ma table representations (jour, mois, annee, lieu) afin que l'on puisse l'ajouter via un formulaire dans le back office
je suis bon là..? :S
merci d'avance
SELECT * FROM representations WHERE 'date' >= current_timestamp ORDER BY date DESC
ma bdd a changé, il y a désormais 4 champs dans ma table representations (jour, mois, annee, lieu) afin que l'on puisse l'ajouter via un formulaire dans le back office
je suis bon là..? :S
merci d'avance
Un peu de réflexion.
si on veut comparer deux choses, il vaut mieux que cela soit comparable non ?
alors transformez la date du jour au même format que la date qui est dans vos bases, ou inversement.
définissez vos algorithmes de traitement.
si on veut comparer deux choses, il vaut mieux que cela soit comparable non ?
alors transformez la date du jour au même format que la date qui est dans vos bases, ou inversement.
définissez vos algorithmes de traitement.
Un peu de reflexion... ok , je ne demande pas à ce que l'on m'écrive mon code de toute ma page, mais là : algorithmes de traitement c'est du chinois pour moi après une après-midi passée sur le net à essayé d'apprendre.
J'imagine que les champs que j'ai créé ne servent à rien, si ce n'est à m'embrouiller moi-même et qu'il vaut mieux tout mettre au format DATE dans quel cas ça me paraît plus logique mais aussi beaucoup plus compliqué.
J'imagine que les champs que j'ai créé ne servent à rien, si ce n'est à m'embrouiller moi-même et qu'il vaut mieux tout mettre au format DATE dans quel cas ça me paraît plus logique mais aussi beaucoup plus compliqué.
bon maintenant vous écrivez votre requête et si là elle ne focntionne pas, vous la transmettez (avec la structure de la table) et là on regardera alors le code.
Voici la requête :
SELECT * FROM representations WHERE 'date' >= NOW() ORDER BY date LIMIT 2
La table contient un champ id (INT), un champ date (DATE), et un champ lieu (VARCHAR).
Mon code appelle bien ce qu'il faut et surtout, affiche la date au format français :
Voici mon code :
$sql="SELECT * FROM representations WHERE 'date' >= NOW() ORDER BY date LIMIT 2";
$data=mysql_query($sql) or die ("");
while($ligne=mysql_fetch_assoc($data)) { ?>
<ul>
<li class="date"><?php echo date("d-m-Y", strtotime($ligne["date"])); ?></li>
<li class="lieu"> <?php echo $ligne["lieu"]; ?></li>
</ul>
<?php
}
?>
Ca marche nikel, merci beaucoup pour vos messages.
SELECT * FROM representations WHERE 'date' >= NOW() ORDER BY date LIMIT 2
La table contient un champ id (INT), un champ date (DATE), et un champ lieu (VARCHAR).
Mon code appelle bien ce qu'il faut et surtout, affiche la date au format français :
Voici mon code :
$sql="SELECT * FROM representations WHERE 'date' >= NOW() ORDER BY date LIMIT 2";
$data=mysql_query($sql) or die ("");
while($ligne=mysql_fetch_assoc($data)) { ?>
<ul>
<li class="date"><?php echo date("d-m-Y", strtotime($ligne["date"])); ?></li>
<li class="lieu"> <?php echo $ligne["lieu"]; ?></li>
</ul>
<?php
}
?>
Ca marche nikel, merci beaucoup pour vos messages.
Finalement j'ai un nouveau soucis ...
La page m'affiche toujours les representations passées celle d'hier par exemple... je sui sûr que ça vient de ma requête (message précédent) :
à la place de CURRENT_DATE(), j'ai essayé avec DATE(), CURDATE(), ou même NOW(), mais ça ne marche dans aucun des cas. Ca m'affiche toujours la représentation d'hier soir.
La page m'affiche toujours les representations passées celle d'hier par exemple... je sui sûr que ça vient de ma requête (message précédent) :
SELECT * FROM representations WHERE 'date' >= CURRENT_DATE() ORDER BY date LIMIT 2
à la place de CURRENT_DATE(), j'ai essayé avec DATE(), CURDATE(), ou même NOW(), mais ça ne marche dans aucun des cas. Ca m'affiche toujours la représentation d'hier soir.
je ne connais pas le format de date dans votre base
pour comparer il faut une compatibilité avec
CURDATE() Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Retour
CURDATE 2002-09-01
CURDATE()+0 20020901
ou
CURRENT_DATE()
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Retour
CURRENT_DATE 2002-09-01
CURRENT_DATE()+0 20020901
pour comparer il faut une compatibilité avec
CURDATE() Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Retour
CURDATE 2002-09-01
CURDATE()+0 20020901
ou
CURRENT_DATE()
Retourne la date courante au format AAAA-MM-JJ (ou AAAAMMJJ si le résultat est converti en entier)
Retour
CURRENT_DATE 2002-09-01
CURRENT_DATE()+0 20020901
Bonjour,
mon message numéro 18 enlevait les ' autour de date.
pour le reste vous avez la possibilité avec phpmyadmin de faire une transformation du codage de votre base.
mon message numéro 18 enlevait les ' autour de date.
pour le reste vous avez la possibilité avec phpmyadmin de faire une transformation du codage de votre base.