Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

novice: pb pour un forum

6 réponses
Avatar
DwillZorK
Salut à tous!
je suis totalement débutant en php, mais j'essaie depuis quelque temps a
faire un forum. naturellement un forum de plus bas niveau, avec simplement
gestion des réponses, emails des expéditeurs, sujet, heure, date des
messages etc, bon je passe les détails. seulement je bloque sur un pb sur la
page d'affichage des en-têtes des messages.
j'ai fait une requete sql sur ma db mysql , et je classe les résultats dans
un tableau associatid avec la fontion mysql_fetch_assoc(). mais les éléments
du tableau ne s'affichent pas, mais c'est le non du l'élément d'association
du tableau qui s'affiche a la place. par exemple, j'ai un tableau $forum ,
associatif. je veux afficher une id qu'il y a dedans: $forum["id"] m'affiche
id, alors que le résultat de ma requete sql devrait etre id= 1,2,3 etc...
mon script pour afficher les en-tetes du forum est:
<?php
$connection = mysql_connect("localhost", "root", " ");
$select_base = mysql_selectdb("db");
$request = mysql_query("SELECT 'id', 'reponse_id', 'date_verif', 'date',
'pseudo', 'email', 'sujet', 'message' FROM `forum_tbl` Order by date_verif
Desc LIMIT 0,30");
while ( $forum = mysql_fetch_assoc ($request))
{
print '<a
href="lecture.php?id='.$forum["id"].'">'.$forum["sujet"].'</a> -Auteur :';
print '<a href="mailto:'.$forum["email"].'">'.$forum["pseudo"].'</a> posté
le : '.$forum["date"].'<br>';
print '<hr>';
}
mysql_close();
?>
je n'y comprends plus rien.
quelqu'un pourrait m'aider?

merci d'avance
dwillzork

6 réponses

Avatar
Jean-Marc Molina
Bonjour,

Bonne chance pour ton forum, tu pars sur de bonnes bases en voulant faire un
"forum de bas niveau".

$request = mysql_query("SELECT 'id', 'reponse_id', 'date_verif', 'date',
'pseudo', 'email', 'sujet', 'message' FROM `forum_tbl` Order by date_verif

Desc LIMIT 0,30");

Tu peux simplement faire un SELECT * FROM forum_tbl...
Pas besoin de spécifier chaque champ. Il est aussi inutile d'utiliser ' ou
`. Je te conseille aussi d'utiliser un syntaxe homogène, ORDER BY en
majuscules par exemple. Règle par exemple : toutes les commandes SQL en
majuscules.

print '<a


C'est du HTML, tu n'as pas à utiliser print ou echo. Préfère les balises
?><?php pour passer du HTML au PHP et vis, ou encore <?= ?> qui sont des
raccourcis pour <?php print/echo ?>.

L'erreur doit venir de tous ces " et ' que tu utilises partout, en
n'utilisant plus print/echo tu devrais résoudre ton problème.
Je me demande comment tu arrives à comprendre ce que tu écris :). Tu n'es
pas le seul rassure-toi.

$forum["id"]


Ça doit bien afficher la valeur de l'id et non pas la chaîne "id". Petite
remarque, il vaut mieux utiliser ' plutôt que ". ['id'] c'est l'index dans
le tableau, "id" est une chaîne et sera traité en tant que telle par PHP,
d'où une perte de performance.

mysql_connect("localhost", "root", " ");


En local, un simple connect suffit, pas besoin de spécifier les paramètres.

mysql_close();


Tu peux encore te simplifier la vie en omettant de fermer la connection à la
BDD, PHP s'occupe de tout.

Maintenant que j'y pense, print est une fonction PHP, tu dois donc utiliser
des () pour les paramètres ! C'est la fonction echo qui n'est pas une
fonction ! Perso je ne les utilise que très rarement, uniquement pour
déboguer, j'utilise TOUJOURS ?><?php et <?= ?> :
// Retour à HTML
?><a href="lecture.php?id=<?= $forum['id'] ?>"><?= stripslashes
($forum['sujet']) ?></a> - Auteur :
<a href="mailto:<?= $forum['email'] ?>"><?= $forum['pseudo'] ?></a> posté
le : <?= $forum['date'] ?><br>
<hr>
<?php
// Retour à PHP

N'oublie pas aussi de "stripslasher" tes chaînes, sujet par exemple. Pas de
problème pour l'id, email et autres pseudo(s) puisqu'ils ne sont pas censés
contenir de ' et ".

Bonne journée,
JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

Avatar
- Sebastien -
DwillZorK écrivait :

$request = mysql_query("SELECT 'id', 'reponse_id', 'date_verif', 'date',
'pseudo', 'email', 'sujet', 'message' FROM `forum_tbl` Order by
date_verif


C'est quoi les quotes autour des noms de champs ?

--
Sébastien.
Webmaster www.coste-du-rhone.com
Grands vins des Cotes du Rhone
(blabla dangereux santé et tout ça)

Avatar
CrazyCat
DwillZorK wrote:
$request = mysql_query("SELECT 'id', 'reponse_id', 'date_verif',
'date', 'pseudo', 'email', 'sujet', 'message' FROM `forum_tbl` Order
by date_verif Desc LIMIT 0,30");


Supprime les quotes entourant les noms des champs:
$request = mysql_query("SELECT id, reponse_id, date_verif, date, pseudo,
email, sujet, message FROM forum_tbl Order by date_verif Desc LIMIT 0,30");
Lorsque tu fais cette requète avec phpmyadmin, ce ne sont pas des quotes
mais des "back-quotes" (Alt-Gr + 7) qui les entourent.
--
CrazyCat from C-P-F.org

Avatar
Matthieu Dapvril
Utilise plutôt la fonction mysql_fetch_array()
Avatar
Jean-Marc Molina
Utilise plutôt la fonction mysql_fetch_array()


Surtout pas, elle est plutôt à proscrire, dans ce cas, puisqu'elle fait 2
choses à la fois, index et clé.
Il vaut mieux utiliser mysql_fetch_assoc quand il s'agit d'utiliser une clé
pour récupérer les données.

$personne = mysql_fetch_array ($personnes) :
- $personne ['nom']
- $personne [1]

$personne = mysql_fetch_assoc ($personnes) :
- $personne ['nom']

Plus performant et logique. Peu de personnes le savent hélas et moi-même
j'ai abusé de cette fonction "array" avec délectation :),
JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

Avatar
DwillZorK
ok merci a tous, en suivant vos conseils ca marche
c'était en effet les ' dans la requete SQL qui foutaient tout en l'air
merci ;)
@+
"Matthieu Dapvril" a écrit dans le message de
news: bmujna$j6k$
Utilise plutôt la fonction mysql_fetch_array()