Problème d'affichage php
Fermé
milo1986
Messages postés
126
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
30 août 2011
-
Modifié par milo1986 le 29/08/2011 à 11:11
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - 30 août 2011 à 10:51
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 - 30 août 2011 à 10:51
A voir également:
- Problème d'affichage php
- Easy php - Télécharger - Divers Web & Internet
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Php natif - Forum PHP
- Problème affichage fenêtre windows 10 - Guide
4 réponses
Bonjour
Tu as mis la définition de function debutchaine à l'intérieur d'une boucle while.
S'il y a plus d'un article, tu parcours ta boucle plus d'une fois et tu re-définis donc ta fonction. Or il est interdit de redéfinir une fonction déjà définie en PHP.
Sors donc la définition de la fonction de la boucle. En général, on ne met pas de définition de fonction au milieu du code (boucle ou pas, d'ailleurs)
Tu as mis la définition de function debutchaine à l'intérieur d'une boucle while.
S'il y a plus d'un article, tu parcours ta boucle plus d'une fois et tu re-définis donc ta fonction. Or il est interdit de redéfinir une fonction déjà définie en PHP.
Sors donc la définition de la fonction de la boucle. En général, on ne met pas de définition de fonction au milieu du code (boucle ou pas, d'ailleurs)
milo1986
Messages postés
126
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
30 août 2011
22
30 août 2011 à 10:20
30 août 2011 à 10:20
Merci effectivement lorsque j'enlève la définition de la boucle ça fonctionne beaucoup mieux.
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
30 août 2011 à 10:51
30 août 2011 à 10:51
Bonjour,
Ton code pique les yeux !
Essais de modifier un peu comme ceci:
- Indente ton code
- Remplace le isset par !empty => le !empty vérifie si la variable n'est pas vide mais aussi si elle existe
- Protège tes variables. Notamment la variable $cat. Ici, une attaque de type 'injection sql' peut être réalisée.
- Sert de ta première condition pour éviter le code redondant:
Exemple: Remplace ça:
Par ça:
- Evite les SELECT * (Conseillé de mettre le nom des colonnes même s'il y en à beaucoup)
- N'hésite pas à utiliser des alias pour les noms de table (plus facile et requête moins longue => tu t'y perds moins)
- Tu ne precises pas à quelle table appartiennent les champs NUMCAT et NUMART (continue ta méthode jusqu'au bout ou utilises des alias)
- Utilises plutôt ID que NUMAUT
- Sort ta fonction debutchaine pour éviter à ta fonction d'être redéfinie, ceci résoudra ton problème d'ailleurs (normalement)
- Pourquoi stockes-tu une variable dans une autre variable ($mots_complets = $data_post['CONTART'];) alors qu'après, tu appels directement cette première variable sans l'avoir stockée dans une autre variable ? (<?php echo $data_post['NOMAUT']; ?> ou <?php echo $data_post['DATART']; ?>)
Voici quelques informations qui peuvent t'aider à mieux coder selon moi.
A+
Gaerebut
Ton code pique les yeux !
Essais de modifier un peu comme ceci:
- Indente ton code
- Remplace le isset par !empty => le !empty vérifie si la variable n'est pas vide mais aussi si elle existe
- Protège tes variables. Notamment la variable $cat. Ici, une attaque de type 'injection sql' peut être réalisée.
- Sert de ta première condition pour éviter le code redondant:
Exemple: Remplace ça:
if(isset($_GET['cat'])){ $cat=$_GET['cat']; $sql_post="SELECT * FROM ARTICLE, AUTEUR WHERE ARTICLE.NUMAUT=AUTEUR.NUMAUT AND NUMCAT='$cat' AND PUBART='1' ORDER BY NUMART DESC"; } else{ $sql_post="SELECT * FROM ARTICLE, AUTEUR WHERE ARTICLE.NUMAUT=AUTEUR.NUMAUT AND PUBART='1' ORDER BY NUMART DESC"; }
Par ça:
$sql_post = 'SELECT * FROM ARTICLE, AUTEUR WHERE ARTICLE.NUMAUT=AUTEUR.NUMAUT AND PUBART="1"'.((!empty($_GET['cat']))?' AND NUMCAT="'.$_GET['cat'].'"':null).'ORDER BY NUMART DESC';
- Evite les SELECT * (Conseillé de mettre le nom des colonnes même s'il y en à beaucoup)
- N'hésite pas à utiliser des alias pour les noms de table (plus facile et requête moins longue => tu t'y perds moins)
- Tu ne precises pas à quelle table appartiennent les champs NUMCAT et NUMART (continue ta méthode jusqu'au bout ou utilises des alias)
- Utilises plutôt ID que NUMAUT
- Sort ta fonction debutchaine pour éviter à ta fonction d'être redéfinie, ceci résoudra ton problème d'ailleurs (normalement)
- Pourquoi stockes-tu une variable dans une autre variable ($mots_complets = $data_post['CONTART'];) alors qu'après, tu appels directement cette première variable sans l'avoir stockée dans une autre variable ? (<?php echo $data_post['NOMAUT']; ?> ou <?php echo $data_post['DATART']; ?>)
Voici quelques informations qui peuvent t'aider à mieux coder selon moi.
A+
Gaerebut
schancel
Messages postés
296
Date d'inscription
dimanche 20 mars 2011
Statut
Membre
Dernière intervention
7 décembre 2018
49
29 août 2011 à 22:50
29 août 2011 à 22:50
ajout une limite a la requete sql LIMIT "si tu veux cinq" 0,5 WHERE id>0