Probléme avec mes fonction mysql

jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010 - 20 avril 2010 à 19:26
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 21 avril 2010 à 20:09
Salut j'ai essayer de faire une script qui affiche page par page des article que moi l'admin je poste sur ma partie index de mon site voici mes erreur:
1:Notice: Undefined variable: record in c:\mes_sites_web\cbc\article\index_article.php on line 139
2/Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\mes_sites_web\cbc\article\index_article.php on line 161

3:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\mes_sites_web\cbc\article\index_article.php on line 169
mon script est le suivant:
<?

$display=10;
if(isset($_GET['p']) && is_numeric($_GET['p']))
{
$page=$_GET['p'];
}
else{
include('config.php');
$q="SELECT count(id_article) from article";
$r=@mysql_query($q);
$row=@mysql_fetch_array($q);
$records=$row[0];

if($record>$display)
{
$page=ceil($record/$display);
}else{
$page=1;
}
}
if(isset($_GET['s']) && is_numeric($_GET['s']))
{
$start=$_GET['s'];
}
else{
$start=0;
}
$q=" SELECT titre,nom,texte,email,DATE_FORMAT(poster,%M %d,%Y) AS poster,id_article FROM article ORDER BY poster ASC LIMIT $start,$display";
$r=@mysql_query($q);
echo'LISTE DES RESOUCES PAR ORDRE, ----

----

COMPTE RENDU,
POSTE LE, ';
$dta=mysql_num_rows($r);
if($dta>0)
{
echo'----
,
'.$dta['texte'].',
'.$dta['poster'].', ';}

$bg='#eeeeee';
while($row=mysql_fetch_array($r))
{
$bg=($bg=='#eeeeee'?'#E8E4BD':'#eeeeee') ;
echo'----

[index_article.php?s='.($start-$display).'$p='.$page.' Precécédent]';
}
for($i=1;$i<=$page;$i++)
{
if($i!=$current_page)
{
echo'[index_article.php?s='.(($display*($i-1))).'$p='.$page.' '.$i.']';
}
else
{
echo $i.'';
}
}
if($current_page != $page)
{
echo'[index_article.php?s='.($start+$display).'$p='.$page.' Suivant]';
}
echo'

';
}
?>

16 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 avril 2010 à 19:32
Salut,

Pense à indenter ton code et à utiliser la balise qui permet la coloration syntaxique. Pense également à indiquer clairement quelles sont les lignes concernées par les erreurs (139, 161, 169)
Ton code n'en sera que plus lisible et tu auras plus de réponses.

Je n'ai que très brièvement parcouru, mais $records != $record

Cordialement,

Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
20 avril 2010 à 19:55
Merci. IL N'apparait null part dc tu comprends
><?

$display=10;
if(isset($_GET['p']) && is_numeric($_GET['p']))
{
$page=$_GET['p'];
}
else{
include('config.php');
$q="SELECT count(id_article) from article";
$r=@mysql_query($q);
$row=@mysql_fetch_array($q);
$records=$row[0];

if($record>$display)
{
$page=ceil($record/$display);
}else{
$page=1;
}
}
if(isset($_GET['s']) && is_numeric($_GET['s']))
{
$start=$_GET['s'];
}
else{
$start=0;
}
$q=" SELECT titre,nom,texte,email,DATE_FORMAT(poster,%M %d,%Y) AS poster,id_article  FROM article ORDER BY poster ASC LIMIT $start,$display";
$r=@mysql_query($q);
echo'LISTE DES RESOUCES PAR ORDRE, ----

----

COMPTE RENDU,
POSTE LE,  ';
$dta=mysql_num_rows($r);
if($dta>0)
{
echo'----
,
'.$dta['texte'].',
'.$dta['poster'].', ';}

$bg='#eeeeee';
while($row=mysql_fetch_array($r))
{
$bg=($bg=='#eeeeee'?'#E8E4BD':'#eeeeee') ;
echo'----

[index_article.php?s='.($start-$display).'$p='.$page.' Precécédent]';
}
for($i=1;$i<=$page;$i++)
{
if($i!=$current_page)
{
echo'[index_article.php?s='.(($display*($i-1))).'$p='.$page.' '.$i.']';
}
else
{
echo $i.'';
}
}
if($current_page != $page)
{
echo'[index_article.php?s='.($start+$display).'$p='.$page.' Suivant]';
}
echo'

';
}
?>
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 avril 2010 à 20:07
Oulà, ce n'est pas parfait mais c'est nettement mieux !!

IL N'apparait null part dc tu comprends

Désolé, non, je ne comprends pas, et à première vue nous avons du mal à nous comprendre :

Quand je te dis :
Je n'ai que très brièvement parcouru, mais $records != $record

Je veux attirer ton attention sur l'oubli du S de $recordS


$records=$row[0]; // <== là il y a un S

if($record>$display) { // <== là il n'y a pas de S à $record, ce qui fait que la variable n'est pas définie
   $page=ceil($record/$display); // <== là aussi !
// [...]


Cordialement,

Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
20 avril 2010 à 21:20
je l'ai corriger $records est devenue $record
<?

$display=10;
if(isset($_GET['p']) && is_numeric($_GET['p']))
{
$page=$_GET['p'];
}
else{
include('config.php');
$q="SELECT count(id_article) from article";
$r=@mysql_query($q);
$row=@mysql_fetch_array($q);
$record=$row[0];

if($record>$display)
{
$page=ceil($record/$display);
}else{
$page=1;
}
}
if(isset($_GET['s']) && is_numeric($_GET['s']))
{
$start=$_GET['s'];
}
else{
$start=0;
}
$q=" SELECT titre,nom,texte,email,DATE_FORMAT(poster,%M %d,%Y) AS poster,id_article  FROM article ORDER BY poster ASC LIMIT $start,$display";
$r=@mysql_query($q);
echo'LISTE DES RESOUCES PAR ORDRE, ----

----

COMPTE RENDU,
POSTE LE,  ';
$dta=mysql_num_rows($r);
if($dta>0)
{
echo'----
,
'.$dta['texte'].',
'.$dta['poster'].', ';}

$bg='#eeeeee';
while($row=mysql_fetch_array($r))
{
$bg=($bg=='#eeeeee'?'#E8E4BD':'#eeeeee') ;
echo'----

[index_article.php?s='.($start-$display).'$p='.$page.' Precécédent]';
}
for($i=1;$i<=$page;$i++)
{
if($i!=$current_page)
{
echo'[index_article.php?s='.(($display*($i-1))).'$p='.$page.' '.$i.']';
}
else
{
echo $i.'';
}
}
if($current_page != $page)
{
echo'[index_article.php?s='.($start+$display).'$p='.$page.' Suivant]';
}
echo'

';
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 avril 2010 à 21:47
OK, et alors, qu'est ce que ça dit maintenant ? Ca fonctionne ?


Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
20 avril 2010 à 22:01
bon, les fonctions:mysql_fetch_array et mysql_num_rows and mysql_free_result ne sont pas les fonctions valides pour extraction des données dans ma table article.Je ne comprends pourquoi il me met ces erreurs.Merci
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 avril 2010 à 23:04
Je pense qu'il serait préférable que tu donnes les messages d'erreurs complets, sans chercher à les traduire, et d'indiquer clairement quelles sont les lignes concernées, comme je te le demandais lors de mon premier post :

Pense également à indiquer clairement quelles sont les lignes concernées par les erreurs


J'ai un peu la flemme ce soir et, même si ton code est simple, je n'ai pas le courage de chercher alors qu'il est si simple que tu précises les choses.

A noter tout de même :
<?
=>
le tag d'ouverture d'un script PHP est <?php

$q="SELECT count(id_article) from article";
$r=@mysql_query($q);
$row=@mysql_fetch_array($q);
// => $row=@mysql_fetch_array($r);
$record=$row[0];

Tes @ ne sont pas recommandés :
Dans un contexte de développement et de debug supprime les :
if (false $r mysql_query($q)) {
die('erreur sur la requête '.$q.' :
.'mysql_error());
}

Cela t'aidera à trouver et corriger rapidement les erreurs, comme celle de ta seconde requête.

Dans un contexte de prod il est impératif d'interdire l'affichage des erreurs (par mesure de sécurité et de confort de l'utilisateur).
Une solution est d'ajouter en début de script :
ini_set('display_error', 0);


mysql_close() et mysql_free_result()
=> ne servent à rien dans 99% des cas car la connexion est fermée automatiquement à la fin du script (et le "free result" avec).
Ce n'est cependant pas pénalisant de le mettre.

etc ...


Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 01:33
les erreurs sont à la ligne 12,37 et 51.Merci pour compréhension
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 avril 2010 à 08:23
Désolé de me répéter :
Je pense qu'il serait préférable que tu donnes les messages d'erreurs complets,


les erreurs sont à la ligne 12,37 et 51

Ne penses tu pas qu'il serait plus simple pour ceux qui te lisent, de donner le code correspondant à ces lignes, voire de redonner le code modifié ?
Parce qu'en faisant un copier / coller de ton code :
12 => $row=@mysql_fetch_array($q);
37 => <td>POSTE LE</td></tr> ';
51 => $bg=($bg=='#eeeeee'?'#E8E4BD':'#eeeeee') ;

Ca m'étonnerait que ça soit ça hein.

Qu'en est il après avoir appliqué les quelques modifications que je te suggérais ?


Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 09:15
Bon après la reforme que tu m'a apporter ,plus d'erreur d'utilision de fonction .J'ai plus tot cette erreur:
Erreur de la requête :SELECT count(id_article) from article,
Erreur de syntaxe près de 'Resource id #4' à la ligne 1.Alors que je n'ai enregistré aucune information dans ma table article .
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 15:18
Salut, apres tes suggestion, il me donne une une erreur de syntaxe
Erreur de la requête SELECT count(id_article) from article:
Erreur de syntaxe près de 'Resource id #4' à la ligne 1.Je precise qu'il n'ya rein dans ma table article
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 avril 2010 à 18:02
A mon avis tu as dû faire une erreur de recopie.
Désolé mais je ne peux pas deviner le code modifié.



Kohntark -
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 19:01
Non ce n'est pas le cas et tu as parfaitement raison:
apres ta suggestionn il me donne:Erreur de la requêteSELECT count(id_article) from article:
Erreur de syntaxe près de 'Resource id #4' à la ligne 1
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 19:04
le code modifié :
<?
ini_set('display_error',0);
$display=10;
if(isset($_GET['p']) && is_numeric($_GET['p']))
{
$page=$_GET['p'];
}
else{
include('config.php');
$q="SELECT count(id_article) from article";
$r=@mysql_query($q);
$row=mysql_fetch_array($r);
$record=$row[0];
if(false==$r=mysql_query($r))
{
die('Erreur de la requête'.$q.':
'.mysql_error());
}


if($record>$display)
{
$page=ceil($record/$display);
}else{
$page=1;
}
}
if(isset($_GET['s']) && is_numeric($_GET['s']))
{
$start=$_GET['s'];
}
else{
$start=0;
}
$sql=" SELECT titre,nom,texte,email,DATE_FORMAT(poster,%M %d,%Y) AS poster,id_article  FROM article ORDER BY poster ASC LIMIT $start,$display";
$req=mysql_query($sql);
echo'LISTE DES RESOUCES PAR ORDRE, ----

----

COMPTE RENDU,
POSTE LE,  ';
$dta=mysql_num_rows($r);
if($dta>0)
{
echo'----
,
'.$dta['texte'].',
'.$dta['poster'].', ';}

$bg='#eeeeee';
while($row=mysql_fetch_array($r))
{
$bg=($bg=='#eeeeee'?'#E8E4BD':'#eeeeee') ;
echo'----

[index_article.php?s='.($start-$display).'$p='.$page.' Precécédent]';
}
for($i=1;$i<=$page;$i++)
{
if($i!=$current_page)
{
echo'[index_article.php?s='.(($display*($i-1))).'$p='.$page.' '.$i.']';
}
else
{
echo $i.'';
}
}
if($current_page != $page)
{
echo'[index_article.php?s='.($start+$display).'$p='.$page.' Suivant]';
}
echo'

';

if( false==$sql=mysql_query($sql)){
die('Erreur de requête:'.$req.'
'.mysql_error());
}
}
?>
.je ne sait si elle va t'aidée
0
jinin Messages postés 18 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 21 avril 2010
21 avril 2010 à 19:25
salut,Moi même j'ai fait une erreur par rapport a ta sugestion
if(false==$sql=mysql_query($sql))
{
die('erreur de requete'.$sql.
'.mysql_error();)}
.j'ai fait:
if(false== $sql= mysql_query($sql))
{
die('Erreur de la requête'.$req.':
'.mysql_error());}
.après avoir aperçu cette erreur :elle m'indique pas une erreur de syntaxe m'est une erreur comme je t'ai souligné au début.merci
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
21 avril 2010 à 20:09
Oui, c'est bien ce que je disais, c'est une erreur de recopie

elle m'indique pas une erreur de syntaxe m'est une erreur comme je t'ai souligné au début.merci

Ecoute Jinin, je veux bien t'aider, mais j'ai comme l'impression que ce thread va durer des lustres pour ne pas aboutir à grand chose.
Je t'ai demandé à plusieurs reprises de poster le message d'erreur complet en précisant clairement la ligne => là tu me dis "une erreur comme je t'ai souligné au début"

<?
=>
le tag d'ouverture d'un script PHP est <?php

... tu n'en tiens pas compte

Tu mets un ini_set('display_error', 0); alors que je t'encourage à afficher les erreurs

Tes @ ne sont pas recommandés :
Dans un contexte de développement et de debug supprime les

... il y en a encore

mysql_close() et mysql_free_result()
=> ne servent à rien dans 99% des cas car la connexion est fermée automatiquement à la fin du script (et le "free result" avec).
Ce n'est cependant pas pénalisant de le mettre.

Certes j'ai dit qu'il n'était pas pénalisant de les mettre, mais ça renforce un peu l'idée que j'ai ...

Bref, ça serait une bonne chose de tenir compte des remarques qui te sont faites.
Si tu ne comprends pas certains points fais le savoir.

if( false==$sql=mysql_query($sql)) {
        die('Erreur de requête:'.$req.'
'.mysql_error());
    }

A quoi ces lignes servent elles ???


Kohntark -
0
Rejoignez-nous