Votre question

Souci de MySQL

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
13 Février 2008 20:52:01

Bonjour/Bonsoir :) 

Je travaille actuellement sur un site-jeu en cours de préparation.
Je travaille sur un script de news, les pages sont correctes, les données rentrent dans la Base de Données (Titre, contenu et timestamp) ... Seul hic, les informations de la base de données, ben elles s'affichent pas sur ma page d'accueil.

Alors, voici mon code sur la page d'accueil :
Citation :
<?php
mysql_connect("sql.hostarea.org", "");
mysql_select_db("e-nigmes");
// On récupère les 5 dernières news
$sql = 'SELECT * FROM news ORDER BY id DESC LIMIT 0, 5';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
{
?>
<div class="news">
<h3>
<?php echo $donnees['titre']; ?>
<em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>

<p>
<?php
$contenu = nl2br(stripslashes($donnees['contenu']));
echo $contenu;
?>
</p>
</div>
<?php
} // Fin de la boucle des news
?>


Je ne vois pas le problème, pourtant, j'ai regardé des tutoriaux et mon code tout l'après-midi :) 

Votre aide est la bienvenue :) 

Autres pages sur : souci mysql

13 Février 2008 20:59:40

Salut,

1 seul conseil:

évites de mettre sur un forum ton login et ton pass de connexion sur ta Bdd !!!
ça fait désordre.


Ensuite, ta requête te retourne une liste de ligne:
http://www.infos-du-net.com/forum/267447-21-affichage-d...

Il te faut parcourir les résultats .

Ton array donnees, il vient d'où ?


de rien!
:) 
13 Février 2008 21:06:33

Ouh la vache, quel con je suis ^^

Je laisse mes identifiants ^^

A vrai dire, je n'ai jamais compris les array :( 

Ce array il vient d'une autre page :

Citation :
mysql_connect("sql.hostarea.org", "haha", "mouhaha");
mysql_select_db("e-nigmes");

if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
// On vérifie si c'est une modification de news ou pas
if ($_POST['id_news'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
}
else
{
// On protège la variable "id_news" pour éviter une faille SQL
$_POST['id_news'] = addslashes($_POST['id_news']);
// C'est une modification, on met juste à jour le titre et le contenu
mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
}
}


if (isset($_GET['supprimer_news']))
{
// Alors on supprime la news correspondante
// On protège la variable "id_news" pour éviter une faille SQL
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC') or die(mysql_error());
while ($donnees = mysql_fetch_array($retour));
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
}
mysql_close();
?>
</table>
Contenus similaires
13 Février 2008 21:18:41

Quand tu clic sur le lien, qui t'envoie sur la page dont tu parlais plus haut, rien ne te dis que les variables suivent!

Une fonction pratique pour du debug:
print_r
Fais un print_r($donnees) et, meme si ca pête ta page, tu verra le contenu de ta variable.



Je repete donc :) 

  1. // On récupère les 5 dernières news
  2. $sql = 'SELECT * FROM news ORDER BY id DESC LIMIT 0, 5';
  3. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  4. $data = mysql_fetch_array($req);
  5. {
  6. ?>
  7. <div class="news">
  8. <h3>
  9. <?php echo $donnees['titre']; ?>
  10. <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
  11. </h3>


==> Ta requete , tu la parcours sur $data, pourquoi alors reprendre donnees ?????

<div class="news">
<?
whille($data=mysql_fetch_assoc($req)
{
echo $data['titre'];
echo "<em>le ";
echo date('d/m/Y à H\hi', $data['timestamp']);
echo "</em>";
}
?>

Ps:

un array, c'est tout "simplement" , un tableau...
2 types majeurs d'array:

Nommé
$toto=array('AAA'=>"toto",'BBB'=>"tata");
où tu peux accéder aux cases du tableau par leur indice (0,1 ..n) ou par leur nom
$toto['AAA'] est valide.

Non nommé
$toto=array("toto","tata");
Uniquement par leur indice.

Pour être plus con, tu peux aussi définir un array en indiquant l'indice de départ :) 


=> http://fr3.php.net/manual/fr/ref.array.php

Juste pour info, ça peut souvent être pratique quand tu utilise des arrays pour remplir des entetes de colonnes (pour générer des tableaux sur du pdf par exemple):
Tu peux récuperer , dans un autre array, la liste des clés d'accès d'un array ...... (ouf !)


$toto=array("a"=>"toto","b"=>"tutu");
$tata=array_keys($toto);


===> $tata contient donc "a","b" :) 



13 Février 2008 21:29:05

C'est plutôt while au lieu de whille ?
13 Février 2008 21:34:41

d'après toi ?

(et penses aussi à fermer la parenthèse!)
13 Février 2008 21:39:00

^^ Ça fonctionne, mais je n'ai que la première news, et je souhaiterais afficher les 5 dernières news :) 

PS : Ah, okay, j'ai pigé l'array :)  Merci :) 
13 Février 2008 21:40:50

Ca devrait marcher ton LIMIT ...


Ensuite pour la/les 1eres, la/les dernieres: ton order by (ASC ou DESC)
13 Février 2008 21:45:21

Ca affiche une autre news, mais qu'une seule :D 

Pfiou ! J'savais pas qu'il y avait autant de codes de programmation ^^ Eh beh, si il faut que je les apprennent tous ...

J'avoue, le MySQL, ça me fait un peu peur ^^
13 Février 2008 21:53:53

fais un print_r($data)

Fais un echo($req) et lances la à la main dans phpMyAdmin .
13 Février 2008 22:07:25

echo ($req) donne : Resource id #3

print_r($data) donnc : Array ( [0] => Jean [titre] => Jean [1] => Jean est le plus beau [contenu] => Jean est le plus beau [2] => 1202913998 [timestamp] => 1202913998 )
14 Février 2008 07:31:40

Enlève ton LIMIT 0,5 ,remplace par LIMIT 5 .

=> LIMIT xxx,xxxx (offset/nombre) => dans ton cas, l'offset ne sert pas vraiment non ?

puis:
ta requete lancée dans phpMyAdmin ?
16 Février 2008 11:06:33

erf, j'ai du réinstaller windows, et j'ai pas remis WAMP ...
LIMIT 5, ça afficherait seulement 5 ?
Tandis que LIMIT 0, 5 ça affiche une ensemble de 0 à 5 ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS