Demande affichage particulier PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Demande affichage particulier PHP

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 14:35

Ca roule !
J'y retourne, merci encore :)

Re: Demande affichage particulier PHP

par soycd » 16 oct. 2011, 14:31

Une simple affectation suffit.

La valeur de ta variable ne doit changer que si elle diffère de l'id de la catégorie qui est parcouru dans ta boucle while.

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 14:12

Je viens un peu de tester, mais je me retrouve avec un autre soucis:

Comment je peux faire une fois le premier résultat affiché, pour faire changer ma variable où est stockée l'ID sans mettre un ++.
Je lui affecte quoi du coup ?

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 13:19

Merci à toi, je me remet au boulot !

Re: Demande affichage particulier PHP

par soycd » 16 oct. 2011, 13:11

Oui, c'est ça, il faut utiliser une condition dans ta boucle.

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 12:08

Merci beaucoup,

Du coup je ne sais pas vraiment comment m'y prendre, il faudrait utiliser un if ?

C'est la première fois que je fais ça, je suis un peu paumé :oops:

Re: Demande affichage particulier PHP

par soycd » 16 oct. 2011, 12:05

Merci pour la réponse, tu parles d'incrémentation c'est bien ça ? ($i,$i++...)
Nope, une incrémentation impliquerait que toutes tes catégories ont des ids qui se suivent, il est impossible de se fier à ça.
"Il te faut spécifier dans un 1er temps lors de ta requête un ordre par catégories."

Je n'ai pas compris le sens de cette phrase.
Juste mettre un :
SELECT .... ORDER BY colonne_nom_de_ta_table_categorie;

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 11:45

Merci pour la réponse, tu parles d'incrémentation c'est bien ça ? ($i,$i++...)

"Il te faut spécifier dans un 1er temps lors de ta requête un ordre par catégories."

Je n'ai pas compris le sens de cette phrase.

Je vais tester ça, merci beaucoup à toi :)

Re: Demande affichage particulier PHP

par soycd » 16 oct. 2011, 11:28

Il te faut spécifier dans un 1er temps lors de ta requête un ordre par catégories.

Ensuite avant ta boucle, tu déclares une variable devant reçevoir l'id de la categorie parcouru lors de ta boucle, par exemple $catId

Donc dans ta boucle, avant d'afficher la catégorie, tu dois tester si l'id de la catégorie en cours est différent de ta variable $catId, s'il est différent, tu affiches la catégorie, et tu affectes la nouvelle valeur de l'id de la catégorie à ta variable.

Voilà, à toi de transcrire cela en code php :wink:

Évite aussi le select *, il est préférable de spécifier les colonnes de la table à sélectionner.

Re: Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 09:33

Ben si, j'ai des produits dans toutes les catégories justement pour le test :(
Avec un left join, j'ai quelque chose de ce genre là:

Categorie2
Porduit1
Categorie2
Produit2
Categorie3
Produit1
Categorie1
Produit2
Categorie1
Produit3

Il m'oublie en plus le produit 1 de la catégorie 1, passe directement à la 2, on sait pas pourquoi :(

Re: Demande affichage particulier PHP

par xTG » 16 oct. 2011, 08:57

Ton traitement est très simple, et je ne vois pas d'erreur.
Si tu ne vois pas les autres catégories c'est que tu n'as pas de produit dedans à priori. :)

Si tu souhaites les faire apparaitre même s'il n'y pas de produit il faut utiliser un LEFT JOIN.

Demande affichage particulier PHP

par TRUNCKS » 16 oct. 2011, 08:24

Bonjour à vous,

J'aurais aimé savoir s'il était possible de structurer un minimum nos résultats lors d'une affichage en PHP.

Par exemple, toujours sur ma base des catégories et des produits ( ces derniers sont reliés aux catégories ), est il possible d'arriver à un affichage du genre:

Catégorie1 Catégorie2
Produit1 Produit1
Produit2 Produit2
Produit3 Produit3

Ect... En gros, afficher des "blocs" séparés avec chaque catégorie et les produits correspondant à la catégorie en dessous.

J'ai commencé à faire ça:
<?php require("admin/connexion/localhost.php");
 
$conn = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
 
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
 
mysql_select_db($database_localhost, $conn); 


 //requête SQL:
$sql = "SELECT *
        FROM produits
        INNER JOIN categories ON produits.id_categorie = categories.ID_categorie";
 
//exécution de la requête:
$requete = mysql_query($sql) or die( mysql_error());

 //affichage des données:
$result = mysql_fetch_array($requete);

while($result = mysql_fetch_array($requete))

{
	
?>

<div id="categories" style="margin:30px"><?php echo nl2br($result['nom_categorie']); ?></div>

<div id="produits" style="margin:30px"><?php echo nl2br($result['nom_produit']); ?></div>

<?php
}
?>
Cela fonctionne pas vraiment vous vous en doutez, mais je n'ai pas le soucis auquel je m'attendais, il ne m'affiche que la dernière catégorie de ma table avec les produits concernés.
Par exemple j'ai uniquement:

Catégorie4
Produit1
Produit2...

Il m'occulte les trois premières.
Merci à vous si vous pouvez m'aider :)