8741 sujets

Développement web côté serveur, CMS

Pages :
Arnaud 19ans, je viens de m'inscrire sur ce forum, en esperant que vous pourrez m'aider!! ^^

Donc, la situation: je débute en php, et je suis en train de faire un module de news pour un site WEB.
- du côté, page d'administration vers base MySQL, pas de problème, ca marche niquel ( pour l'instanst je n'ai mis que l'ajout de news on verra le reste apres ^^).
Donc j'ai ma news dans ma base de donnée sous forme

id champs contenu
1 article blablablablabla

Mon problème arrive lorsque je veux mettre le "blabla" dans ma page html:
Voici mon .php qui doit lire le "blabla" dans la base SQL et l'afficher sur ma page web


a écrit :

<?
// Connexion à la base de donnée
$db=mysql_connect ('sql.free.fr','xxxxxx','xxxxxx') or die('Erreur de selection '.mysql_error());
mysql_select_db('cshared',$db) or die('Erreur de selection '.mysql_error());

// lecture des données
$lecture = 'SELECT article FROM news_tbl';
$resultat=mysql_query($lecture) || die ('Erreur de la connexion' .mysql_error());


while ($ligne=mysql_fetch_array($resultat))
{
echo '<td class="ligne" align="center"></td>
<tr><td class="comm" align="center">'.$ligne["article"].'</td></tr>
<td class="ligne" align="center"></td>';
}
?>



Voici la page html:

a écrit :

<body>

<table border="0" align="left" cellpadding="0" cellspacing="0" BGCOLOR="#ffffff">

<tr>
<td width="1" align="center" valign="top" class="colonne">&nbsp;</td>
<td width="600" align="center" valign="top">
<table border="0" width="560">
<? include ("article_2.php")?>
</table>
</td>
<td width="1" align="center" valign="top" class="colonne">&nbsp;</td>
</tr>
</table>

</body>
</html>


Et donc en appliquant ces codes j'arrive à cela:

a écrit :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 10


Bien évidemment j ai éssayé pendant plus d'une heure de trifouillé la ligne 10 dans tous les sens mais rien à faire.

Merci d'avance, en esperant que vous pourrez m'éclairer
(PS: est ce que ce code suffira pour qu' a chaque news ajouté dans ma partie admin, un nouveau conteneur avec le blabla dedans se créé dans ma page html)

J'espere que vos retours seront pas "hooo le novice etc" lol

Arnaud
Modifié par WOO (22 May 2006 - 18:36)
Salut,

pourquoi faire un mySAL_fetch_array ?


<?
// Connexion à la base de donnée
$cx=mysql_connect ('sql.free.fr','xxxxxx','xxxxxx') or die('Erreur de selection '.mysql_error());
$db=mysql_select_db('cshared') or die('Erreur de selection '.mysql_error());

// lecture des données
$sql = 'SELECT * FROM news_tbl';
$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());
$nbart=mysql_num_rows($res); 

$i=0;
while($i<=$nbart)
{
$data=mysql_fetch_object($res); 

echo '<td class="ligne" align="center"></td>
<tr><td class="comm" align="center">'.$data->article.'</td></tr>
<td class="ligne" align="center"></td>';
}
$i++


Par contre, va va t'afficher tout les articles, si tu veux limiter le nombre d'article affiché, il faut que tu regarde vers $nbart.

Ton While ne peut pas fonctionner tant qu'il ne peut vérifier aucun égalité. Ici, on increment i de 1 a chaque boucle, et tant que i est inferieur aunombre d'article dans la base, la boucle continue.
Ce doit fonctionner aussi avec le mysql_fetch_array.

Mais bon, je ne vois pas pourquoi tu t'embettes, si tu debute en PHP, fait autre chose qu'un sytème de news. Surtout qu'il y en a des pas mal tout fait. Smiley cligne

Et pour les mots de passe et identifiant, plutot que de les mettres directement dans le code, tu peux faire ceci :


<?
include ("config.inc.php");

// Connexion à la base de donnée
$cx=mysql_connect ('sql.free.fr',USER, PASS) or die('Erreur de selection '.mysql_error());
$db=mysql_select_db(BASE) or die('Erreur de selection '.mysql_error());

// lecture des données
$sql = 'SELECT * FROM news_tbl';
$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());
$nbart=mysql_num_rows($res); 

$i=0;
while($i<=$nbart)
{
$data=mysql_fetch_object($res); 

echo '<td class="ligne" align="center"></td>
<tr><td class="comm" align="center">'.$data->article.'</td></tr>
<td class="ligne" align="center"></td>';
}
$i++


Le fichier config.inc.php ressemble a ca :


<?php
define(USER,"ton identifiant");
define(PASS,"ton mot de passe");
define(BASE,"cshared");
?>


Tu inclus ce fichier dans chaque page et tu replaces donc dans le code PHP , les valeurs definies par USER, PASS et BASE (en majuscule).
Modifié par TheReverendEVIL (22 May 2006 - 09:43)
Merci pour la rapidité et la précision de ta réponse, notamment pour le config.inc.php, j y avais pas encore pensé.

En ce qui concerne l'affichage de ma news, ca marche toujours pas Smiley ohwell //

j'ai mis le code que tu m'a fourni apres avoir été faire quelques recherches sur mysql_fetch_objet()

donc j'ai mi ce code:

a écrit :


<?

include ("config.inc.php");



// Connexion à la base de donnée

$cx=mysql_connect ('sql.free.fr',USER, PASS) or die('Erreur de selection '.mysql_error());

$db=mysql_select_db(BASE) or die('Erreur de selection '.mysql_error());



// lecture des données

$sql = 'SELECT * FROM news_tbl';

$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());

$nbart=mysql_num_rows($res);



$i=0;

while($i<=$nbart)

{

$data=mysql_fetch_object($res);



echo '<td class="ligne" align="center"></td>

<tr><td class="comm" align="center">'.$data->article.'</td></tr>

<td class="ligne" align="center"></td>';

}

$i++;

?>


et j'arrive à ce message qui s'affiche x fois sur tte la page.

a écrit :

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 30



donc en gros le while marche car la boucle incrémente bien vue que le message d'erreur est repeté sur tte la page mais la fonction a pas l'air de marcher.


Si tu qqun a du temps pour m'aider msn : electrohappy@hotmail.fr de jour comme de nuit Smiley smile

ah oui et une autre interrogation: on a le droit de faire ca ?
$data->article
?!


PS: j'utiliserai des scripts bien fait quand j'aurai bien compris le langage php Smiley langue
Modifié par WOO (22 May 2006 - 13:51)
Smiley eek Haaaaaa

ton $i doit s'incrémenter DANS la boucle !!!

perso je préfère pers avoir la requête dans la condition du while ça évite de faire des requêtes récurente ...
Modifié par Gectou4 (22 May 2006 - 13:59)
Bonjour,

Je pense que ta requete SQL est pas bonne, vérifie le nom de la table et des attributs.
Modifié par Midgorn (22 May 2006 - 14:07)
Gectou4 a écrit :
Smiley eek Haaaaaa

ton $i doit s'incrémenter DANS la boucle !!!

perso je préfère pers avoir la requête dans la condition du while ça évite de faire des requêtes récurente ...


Oups, j'ai en effet mis l'incrementation hors de la boucle...la fatigue dû au week-end surement, je suis confus. Smiley confused

Donc effectivement :



<?

include ("config.inc.php");



// Connexion à la base de donnée

$cx=mysql_connect ('sql.free.fr',USER, PASS) or die('Erreur de selection '.mysql_error());

$db=mysql_select_db(BASE) or die('Erreur de selection '.mysql_error());



// lecture des données

$sql = 'SELECT * FROM news_tbl';

$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());

$nbart=mysql_num_rows($res);



$i=0;

while($i<=$nbart)

{

$data=mysql_fetch_object($res);



echo '<td class="ligne" align="center"></td>

<tr><td class="comm" align="center">'.$data->article.'</td></tr>

<td class="ligne" align="center"></td>';

$i++;

}


?>
donc j'ai mis le code

a écrit :

<?

include ("config.inc.php");

// Connexion à la base de donnée

$cx=mysql_connect ('sql.free.fr',USER, PASS) or die('Erreur de selection '.mysql_error());

$db=mysql_select_db(BASE) or die('Erreur de selection '.mysql_error());


// lecture des données

$sql = 'SELECT * FROM news_tbl';

$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());

$nbart=mysql_num_rows($res);

$i=0;

while($i<=$nbart)

{
$data=mysql_fetch_object($res);

echo '<td class="ligne" align="center"></td>

<tr><td class="comm" align="center">'.$data->article.'</td></tr>

<td class="ligne" align="center"></td>';

$i++;



}





?>


ca ca me donne comme erreur
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 38

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 58

et au niveau de ma table dans mySQL
donc ma base cshared
ma table news_tbl
et pour le contenu de la table j'ai fais
CREATE TABLE news_tab (id INT auto_increment not null, article VARCHAR(1500) not null, PRIMARY KEY(id))

donc vraiment la je vois pas le bug!!! Smiley ohwell
Smiley fache
Oups, j'ai buggé. Smiley lol

Donc, je voualis dire, pourtant le code est bon, mais, t'as base de donnée et remplie, ou les champs sont vide (donc, tu as fait un INSERT INTO ou pas ? )
Modifié par TheReverendEVIL (22 May 2006 - 14:34)
normalement ca devrait marché.. je capte pas
le probleme a l'air de venir de mysql_fetch_objet et de mysql_num_rows..

ca peut pas être un droit d'execution de fonction dans mysql ou je sais pas trop quoi ?!
aller essayons...
je prend une syntax sql tiers sait on jamais

 $sql = 'SELECT * FROM news_tbl';

 $res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());

 $nbart=mysql_num_rows($res);

 $i=0;

 while( $data=mysql_fetch_assoc($res))
 {

 echo '<td class="ligne" align="center"></td>

 <tr><td class="comm" align="center">'.$data->article.'</td></tr>

 <td class="ligne" align="center"></td>';

}


si ça ne marche pas copie colle ton code complet et pas le code retoucher 6 fois ici bas :d (sans les user et pass bien entendu)
a écrit :

requête SQL:
SELECT *
FROM `news_tbl`
LIMIT 0 , 30
[Modifier] [Expliquer SQL] [Créer source PHP] [Actualiser]


ligne(s) à partir de l'enregistrement n°
en mode et répéter les en-têtes à chaque groupe de

Textes complets id article
Modifier Effacer 7 ESSAI
Pour la sélection : Tout cocher / Tout décocher Pour la sélection : Modifier Effacer Exporter


ligne(s) à partir de l'enregistrement n°
en mode et répéter les en-têtes à chaque groupe de

Insérer un nouvel enregistrementInsérer un nouvel enregistrement Version imprimableVersion imprimable Version imprimable (avec textes complets)Version imprimable (avec textes complets) ExporterExporter


je suis sur un portable j'ai pas d'imprim écran mais en gros voila le contenu de ma page dans phpmyadmin pour ma table news_tbl et franchement je pense pas qu'il y ait de problemes.
Donc, il y a un bien un INSERT de fait "ESSAI" donc.. la je nage lol

En tout cas merci à tous pour le temps que vous consacrez à mon truc !!
WOO a écrit :
normalement ca devrait marché.. je capte pas
le probleme a l'air de venir de mysql_fetch_objet et de mysql_num_rows..

ca peut pas être un droit d'execution de fonction dans mysql ou je sais pas trop quoi ?!


Non, le problème ne vient pas de là, le code que je t'ai filé, je l'ai déjà utilisé dans un site que j'ai fait (quand je ne connaissais pas les templates Smiley lol ) :


<?
include ("config.inc.php");
$connex=mysql_connect("localhost","USER","PASS"); 
$base=mysql_select_db("BASE");
$req="select * from aticles inner join fournisseurs on aticles.id_four=fournisseurs.id_four"; 
$res=mysql_query($req); 
$nbart=mysql_num_rows($res); 
$i=1; 

while($i<=$nbart)
{
$data=mysql_fetch_object($res); 

if($i%2==1) {
echo"<tr bgcolor='#e8e8e8'>"; 
}
else {
echo"<tr bgcolor='#797979'>";
}
 
echo"<td  align=center width=25% heigth=20%>"; 
echo $data->design_art; 
echo"</td>"; 

echo"<td  align=center width=25% heigth=20%>"; 
echo $data->descript_art; 
echo"</td>"; 

echo"<td  align=center width=25% heigth=20%>"; 
echo $data->prix_art; 
echo "</td>"; 

echo"<td  align=center width=25% heigth=20%>"; 
echo $data->nom_four; 
echo "</td>"; 


echo"<td  align=center width=25% heigth=20%>"; 
if (empty($data->photo)){
echo"<img src=image/aucun.jpg width='100' heigth='100'>"; 
echo "</td>"; 
echo"</tr>"; 
$i=$i+1; 
}
else {
echo"<img src=image/$data->photo width='100' heigth='100'>"; 
echo "</td>"; 
echo"</tr>"; 
$i=$i+1; 
}
}

mysql_close($connex); 
?>


Bon, je ne connaissais pas encore les vérif a ce moment là. ^^
Mais ce code fonctionne, donc y a pas de raison.
Gectou4 j'ai essayé avec ton code donc en gros ca

a écrit :


<?
// Connexion à la base de donnée
$db=mysql_connect ('sql.free.fr','blabla','blabla') or die('Erreur de selection '.mysql_error());
mysql_select_db('cshared',$db) or die('Erreur de selection '.mysql_error());

// lecture des données
$sql = 'SELECT * FROM news_tbl';

$res=mysql_query($sql) || die ('Erreur de la connexion' .mysql_error());

$nbart=mysql_num_rows($res);

$i=0;

while( $data=mysql_fetch_assoc($res))

{

echo '<td class="ligne" align="center"></td>

<tr><td class="comm" align="center">'.$data->article.'</td></tr>

<td class="ligne" align="center"></td>';

}

?>



et ca me donne:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 15

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/109/sdb/8/5/cshared/article_2.php on line 23

soit toujours le pb des 2 fonctions mysql...
Je dit sans doute une bétise mais edite ta table SQL et ajoute un backslash (foutu mac il est où le backslash... oui je suis actuellement en cours à l'iut.. chut :d)

donc un backslash devant les ' et réassay le code

tu peut virer $nbart de mon code si tu ne l'uilise pas

en tous cas ce n'est pas les fonction sql donc sa vient des variable transmise ///

$res et cie mais je ne vois pas en quoi
Modifié par Gectou4 (22 May 2006 - 14:53)
C'est sure que le code que vous me donnez est good !! dans tous les cas.. il est pas compliqué mais les WARNING m'aiment bien Smiley smile
Gectou4 a écrit :
Je dit sans doute une bétise mais edite ta table SQL et ajoute un backslash (foutu mac il est où le backslash... oui je suis actuellement en cours à l'iut.. chut :d)

donc un backslash devant les ' et réassay le code


Ouai, foutu (clavier) Mac. ^^
Tu fais un DUT SRC ?


WOO, t'as bd doit être vide. Tu as l'onglet "affiche" normalement, est ce qu tu peux cliquer dessus ? Si non, c'est qu'il n'y a pas de contenue dans les champs, et donc, ca te mets les erreurs, normal.
TheReverendEVIL a écrit :

Ouai, foutu (clavier) Mac. ^^
Tu fais un DUT SRC ?


yep mais à mulhouse c'est pas tip top ^^ (ça reste mieux que hagenaux toutefois :d) (aieu pas tapé xD)

J'y repense une fois sur un server SQL été tellement pouris qu'il fallait mettre les magic quote des table `news_tbl` (qui sont sur mac mdr) dans la requête php même.

Essay ça mais si c'est du à ça change d'hébergeur rapidement et si tu es en local update ton outil :d
Modifié par Gectou4 (22 May 2006 - 14:56)
oui oui je peux cliker sur afficher et il y a un contenu, en gros j'ai écri "ESSAI". Smiley smile

je vais aller sur un autre pc pour faire un screen de l'écran.
et pour le backslash j'ai pas trop capté où tu veux que je le mette lol
si tu n'as pas de donné oublie les backslash de toutes façon ça vient de la variable que tu transmet au vue de l'erreur as du contenue de la table;
Pages :