Je suis le cours "Openclassroom" sur le PHP et MySQL,
Alors, j'ai fais le TP sur le mini-chat, super... j'ai ajouté des petits gadget (le speudo en session, affichage de l'heure)... Mais, il y a un truc sur le quel je but depuis 3 jours et je ne comprend pas comment faire.
Je voudrais juste "inversé" l'ordre d'apparition des 10 dernier commentaire du chat... Mais, je n'y arrive pas.
Je suppose qu'il y a une astuce à faire avec les array, mais là encore, à chaque fois je but sur la solution, au pire mon serveur php, qui me tutoies, m'insulte en troll du nord, au mieux, ça ne fonctionne pas.
<?php session_start();?>
<?php
if ($_SESSION['speudo']!=NULL)
{
}
else {
$_SESSION['speudo']=$_POST['speudo'];
}
$com=NULL;
?>
<?php
try
{
// On se connecte à MySQL - $bdd est arbitraire
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', '*tutu**', '*Tankamon*');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
?>
<?php //récupération des données des conversations de mini_chat (Les 10 dernières messages)
$content_mini_chat = $bdd->query(('SELECT ID_message, com, Auteur, horraire FROM `mini_chat` ORDER BY horraire DESC LIMIT 10'));
?>
<!DOCTYPE html>
<html>
<head>
<meta chartset="utf-8"/>
<title>Entrer dans le mini chat de R-5 ?</title>
<article><h1>Vous voulez en parler avec d'autre <?php echo $_SESSION['speudo']; ?> ?</h1></article>
</head>
<body>
<p>Les dernières commentaire du chat ?<br /></p>
<?php
while ($reponse = $content_mini_chat->fetch())//début de la requète
{
?>
<?php
echo $reponse['horraire'].' '.$reponse['Auteur'].' '.$reponse['com'].'<br />';
?>
<?php
}
$content_mini_chat->closeCursor(); // Termine le traitement de la requête
?>
<p>
<form method="post" action="traitement_chat.php">
<label>votre commentaire ? </label><input type="text" name="com" required />
<br />
<input name="speudo" type="hidden" value="<?php echo $_SESSION['speudo'];?>" />
<input type="submit" value="Ecrire" />
</form>
</p>
</body>
</html>
Je n'ai toujours pas compris à quoi servent les array dans php, dans le cours, (et même dans les exemples ou les bouquins) ils écrivent des trucs en dure dedans... Je vois pas le rapport entre l'idée de stokker des information en DB et faire une tétra chier d'outil qui tri des infos en dure.
Tu as un éclairage sur ce point ?
Parce que à ce stade, ça reste un grand mystère pour moi.
En gros, ça m'affiche les données récente en haut... alors que je les veux en bas !
L'idée c'est : 11h11 - Jean ? 11h12 - Oui ? 11h13 - Tu craque ? 11h14 - Oui, je craque... pourquoi ? 11h15 - Parce que bon, là, je pense que tu vas trop loin... 11h16 - Tu penses que arroser la plante verte avec de l'acide chlorhydrique, c'était de trop ?
Et avec ma requête il m'affiche les donnée dans ce sens : 11h16 - Tu penses que arroser la plante verte avec de l'acide chlorhydrique, c'était de trop ?
11h15 - Parce que bon, là, je pense que tu vas trop loin...
11h14 - Oui, je craque... pourquoi ?
11h13 - Tu craque ? 11h12 - Oui ?
11h11 - Jean ?
Ma requête SQL : SELECT ID_message, com, Auteur, horraire FROM `mini_chat` ORDER BY ID_message DESC, com ASC LIMIT 10
Parcontre, si je ne met pas de limite est DESC il me sort tous dans le bon sens et si je met une limite, il me sort les 10 premier com et c'est tous (et c'est logique). Récupérer les 10 dernière message c'est juste une gageur...
Concernant tas remarque sur les array ... en gros, ça n'a aucune utilité, si je peux tous stoker dans une jolie base de donnée. En faite, je ne fais pas le lien entre l'outil array et son intérêt vis-à-vis des db.
Est ce que l'on peut stoker des informations des db via des requêtes, directement dans les array pour mieux les manipuler où c'est pas possible ?
Ce qui prendrai sens, vu la quantité d'outil autour de la fonction array...
Si un sorcier du PHP peu m'éclairer sur ce point ?
Concernant tas remarque sur les array ... en gros, ça n'a aucune utilité, si je peux tous stoker dans une jolie base de donnée. En faite, je ne fais pas le lien entre l'outil array et son intérêt vis-à-vis des db.
Est ce que l'on peut stoker des informations des db via des requêtes, directement dans les array pour mieux les manipuler où c'est pas possible ?
Ce qui prendrai sens, vu la quantité d'outil autour de la fonction array...
Si un sorcier du PHP peu m'éclairer sur ce point ?
SELECT ID_message, com, Auteur, horraire FROM `mini_chat` ORDER BY ID_message ASC LIMIT 10
Cette requête devrait suffire a faire ce que tu veux.
Cordialement,
Quillian
Parce que (c'est les 10 premier message dans ma DB avec la requête que tu m'as donnée et je me torture là dessus depuis 3 jours) :
2020-12-02 10:41:12 Beatrice Je suis heureux de tester ! 2020-12-02 10:42:50 Beatrice On test ? 2020-12-02 10:44:16 Beatrice Je vais alimenter 2020-12-02 10:44:26 Beatrice Il faut pas s'énerver. 2020-12-02 10:45:00 Beatrice Je crois que tous va bien. 2020-12-02 10:45:05 Beatrice En effet... 2020-12-02 10:45:16 Beatrice Mais, est ce que ce sera la même blague ? 2020-12-02 10:45:25 Beatrice Je ne sais pas ! 2020-12-02 10:45:36 Beatrice On va vite le savoir... 2020-12-02 10:45:41 Beatrice Test 10
Et que mes dernière message sont ceci (classé dans l'autre ordre) :
2020-12-02 14:47:54 Benjamin Oui 2020-12-02 14:47:26 Benjamin Oui 2020-12-02 14:32:17 EDDY Je suis dans le bon sens. 2020-12-02 14:31:55 EDDY Oui 2020-12-02 14:31:18 EDDY Test 2 2020-12-02 14:31:12 EDDY Test 1 2020-12-02 14:30:47 EDDY test 1 2020-12-02 14:29:45 EDDY tutu 2020-12-02 14:18:39 EDDY ffgh 2020-12-02 14:18:29 EDDY Sweet patatoï !
Ma requête SQL : SELECT ID_message, com, Auteur, horraire FROM `mini_chat` ORDER BY ID_message DESC, com ASC LIMIT 10
efface le "com ASC" avant LIMIT et évite de mettre de virgule n'importe comment, car elle n'a pas sa place après DESC
Chris13300 a écrit:
Je n'ai toujours pas compris à quoi servent les array dans php, dans le cours, (et même dans les exemples ou les bouquins) ils écrivent des trucs en dure dedans... Je vois pas le rapport entre l'idée de stokker des information en DB et faire une tétra chier d'outil qui tri des infos en dure.
image que tu développe un site E-commerce, et tu souhaite faire la pagination en Ajax plutôt que de recharger la page bêtement à chaque requête,
alors au niveau de ton script PHP tu récupère bien tes article:
<?php
$req = $bdd->query("SELECT * FROM articles ORDER BY id LIMIT ". $depart .", ". $articleParPage);
while($donnees = $req->fetch() ){
/* Récuperation par article par article avant la conversion en JSON*/
}
alors dis nous comment feras-tu pour envoyé ce tableau à ton client ? sachant que le donnée doivent être en JSON pour une bonne communication entre ton script PHP et JavaScript ?
R) Beaucoup de gens et moi de même allons créer deux tableaux dont l'une sera associatif pour insérer chaque élément représentant un article et l'autre pour sauvegarder chaque tableau associatif représentant un article, puis juste à la fin je ferai un coup de:
<?php
....
return json_encode($maTable);
et le tour est jouer
Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .
t est un alias, tu l'appelles comme tu veux. choucroute, cassoulet ou que sais-je encore si ça te chante.
Il n'est probablement pas nécessaire ici de spécifier à quoi (quelle table) * et horraire font référence (ie les t. ne doivent pas être nécessaire, pas d’ambiguïté possible, je n'ai pas testé et dans le doute j'ai explicité)
le t c'est un alias et en fait mettre table t c'est comme écrire table as t (tu peux mettre n'importe quoi comme alias)
SELECT mareq.*
FROM (
SELECT ID_message, com, Auteur, horraire
FROM mini_chat
ORDER BY horraire DESC
LIMIT 10
) AS mareq
ORDER BY mareq.horraire /* ASC */
le AS n'est pas obligatoire et on pourrait juste mettre ") mareq" au lieu de ") AS mareq"
Merci de toute ces explications, vous êtes définitivement des sorciers du PHP et moi un humble apprenti.
Il faut que je me forme en SQL.
- Edité par Chris13300 2 décembre 2020 à 18:58:24
PHP, il y a un truc que je ne comprend pas...
× 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.
Il n'y a pas de question idiote, seulement une réponse idiote
Il n'y a pas de question idiote, seulement une réponse idiote
Il n'y a pas de question idiote, seulement une réponse idiote
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL