[RESOLU] Trier les membres par critère de colonne

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 : [RESOLU] Trier les membres par critère de colonne

Re: Trier les membres par critère de colonne

par Speed09 » 21 déc. 2015, 22:50

Merci beaucoup!
La page marche parfaitement! :D
Merci particulièrement à Patriboom!

Re: Trier les membres par critère de colonne

par Patriboom » 21 déc. 2015, 19:21

La boucle est toute faite (ci-haut) pour toi, c'est boucle while que tu n'as qu'à copier-coller dans code.

Code : Tout sélectionner

while ($Contenu = mysqli_fetch_array($resultat)) { echo 'Voici la ville de '.$Contenu["prenom"].' '.$Contenu["nom"].' : '.$Contenu["ville"].'<br />'; }

Re: Trier les membres par critère de colonne

par Speed09 » 21 déc. 2015, 18:22

C'est normal, fetch ne retourne qu'une ligne à la fois. Il faut « faire le tour » de tous les résultats pour les récupérer tous. Pour cela tu feras une boucle de récupération. Ça dépend encore de ce que tu espères faire avec les données.

Code : Tout sélectionner

while ($Contenu = mysqli_fetch_array) { echo 'Voici la ville de '.$Contenu["prenom"].' '.$Contenu["nom"].' : '.$Contenu["ville"].'<br />'; }
Ah d'accord!
Donc faudrait que je fasse une boucle de style for?
En fait je voudrais simplement afficher la liste des membres ayant la même ville et la même date.

Re: Trier les membres par critère de colonne

par Patriboom » 21 déc. 2015, 15:10

Bonjour Chantala, en passant.

Tu peux très bien récupérer tes données par le numéro de leur position dans le tableau. C'est l'inconvénient de mysqli_fetch_row par rapport à mysqli_fetch_array. Si tu modifies la structure de ta table en insérant une nouvelle colonne, toute ta programmation PHP sera à réviser de manière changer le numéro de champs affichés. Pas génial. C'est pourquoi je préfère myslqi_fetch_array qui permet plus facilement l'insértion de colonne en plus de laisser voir dans le code ce qui sera affiché.

Quant à ton objection
J'ai testé avec un echo $Contenu[0]; et là la ville de l'utilisateur s'affiche! mais pas celle des autres utilisateurs...
C'est normal, fetch ne retourne qu'une ligne à la fois. Il faut « faire le tour » de tous les résultats pour les récupérer tous. Pour cela tu feras une boucle de récupération. Ça dépend encore de ce que tu espères faire avec les données.

Code : Tout sélectionner

while ($Contenu = mysqli_fetch_array) { echo 'Voici la ville de '.$Contenu["prenom"].' '.$Contenu["nom"].' : '.$Contenu["ville"].'<br />'; }

Re: Trier les membres par critère de colonne

par chantala » 21 déc. 2015, 11:52

Bonjour,
Je suis debutant en php et je viens de decouvrir le forum
Merci à vous ;)

Re: Trier les membres par critère de colonne

par Speed09 » 21 déc. 2015, 11:42

Voici ma base, avec les colonnes apparentes.
Image

Re: Trier les membres par critère de colonne

par Patriboom » 20 déc. 2015, 14:59

Sans la structure de ta table, nous ne pouvons corriger ton code.
Assure-toi de respecter les majuscules et minuscules.

Re: Trier les membres par critère de colonne

par Speed09 » 20 déc. 2015, 12:51

Non, ce n'est pas bizarre.
Toutes les informations tirées d'une ligne de ta table sont emmagasinées dans un tableau, tu les récupéreras ainsi
Ca parait logique!
Mais lorsque je fais un echo $Contenu['ville']; Rien ne s'affiche.
J'ai testé avec un echo $Contenu[0]; et là la ville de l'utilisateur s'affiche! mais pas celle des autres utilisateurs...
Voici mon code:

Code : Tout sélectionner

include_once("connexion.php"); $requete = "SELECT * FROM members WHERE jour = ".$jour." AND mois = ".$mois." AND ville = "."'".$ville."'"." AND annee = ".$annee." ORDER BY jour ASC, mois ASC, ville ASC, annee ASC"; $resultat = mysqli_query($dbCon, $requete); $Combien = mysqli_num_rows($resultat); $Combien = $Combien - 1; if($Combien <= 0){ $Combien = 0; } $Contenu = mysqli_fetch_row($resultat); echo "<p style='font-size:25px;'>Votre ville: ".$ville."</p>"; echo "<p style='font-size:25px;'>Votre nom: ".ucwords($nom)."</p>"; echo "<p style='font-size:25px;'>Votre pr&eacute;nom: ".ucwords($prenom)."</p>"; echo "<p style='font-size:25px;'> La date de votre journ&eacute;e d'appel: ".$jour."/".$mois."/".$annee."</p>"; echo "<p style='font-size:25px;'>Il y a ".$Combien." participants &agrave; la meme journ&eacute;e d'appel que vous! </p>"; echo $Contenu['ville'];

Re: Trier les membres par critère de colonne

par sirakawa » 20 déc. 2015, 11:19

Bonjour,
Pour ma part, pour me simplifier les choses, je fais comme ceci:
$ville_cherchee = $_POST['ville'];
/*test éventuels*/
$table = "Labdd.Table_interrogee"; //ou alors, il faut faire auparavant un $mysqli->select_db 
$requete = "SELECT * from $table where ville = ville'....";
$resultat = $mysqli->query($requete);
ce qui m'épargne les problèmes avec les simples quotes et les concaténations.
ce qui permet de vérifier, si besoin, la validité des valeurs avant de les enfiler dans la requete...

Re: Trier les membres par critère de colonne

par Patriboom » 19 déc. 2015, 20:06

Non, ce n'est pas bizarre.
Toutes les informations tirées d'une ligne de ta table sont emmagasinées dans un tableau, tu les récupéreras ainsi:

Code : Tout sélectionner

$Contenu = mysqli_fetch_row($resultat); echo $Contenu["Nom"]; echo $Combien; echo $Contenu["Prenom"]; echo $Contenu["Naissance"]; echo $Contenu["Annee"]; echo $Contenu["Mois"]; // etc.

Re: Trier les membres par critère de colonne

par Speed09 » 19 déc. 2015, 12:05

C'est bon j'ai réussi à débogguer, erreur de ma part, j'avais inversé les mois et les jours à la connexion de l'utilisateur.
Donc je peux afficher le nombre d'utilisateurs qui ont les même dates, mais dès que je veux afficher leurs pseudos PHP retourne:
"Array


"
Bizarre non?

Re: Trier les membres par critère de colonne

par Patriboom » 18 déc. 2015, 23:52

As-tu fait un echo de ta requête ?

Code : Tout sélectionner

echo $requete;
Si non, fais-le.

Dans tous les cas, retourne-nous la requête affichée.

Il faut que ça ressemble à la requête qui ta retourné un résultat adéquat.

Re: Trier les membres par critère de colonne

par Speed09 » 18 déc. 2015, 23:40

Oui, je l'ai soumis exactement comme tu me l'a marqué! Je sais que c'est du PHP x)
Donc comme je disais: si je test en manuel, avec ce code:

Code : Tout sélectionner

SELECT * FROM members WHERE jour = 'mardi%' AND mois = 'avril%' ORDER BY jour ASC, mois ASC
Mais dans mon fichier php, ça ne fonctionne pas avec ce code:

Code : Tout sélectionner

$requete = "SELECT * FROM members WHERE jour = ".$_SESSION['jour']." AND mois = ".$_SESSION['mois']." ORDER BY jour ASC, mois ASC";

Re: Trier les membres par critère de colonne

par Patriboom » 18 déc. 2015, 23:09

C'est sûr, si t'as soumis tel que je lis

Code : Tout sélectionner

"MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0002 secondes.) SELECT * FROM members WHERE jour = '".$_SESSION["jour"]."%' AND mois = '".$_SESSION["mois"]."%' ORDER BY jour ASC, mois ASC"
car c'est ton code PHP qui est là.

Ce que tu dois soumettre à PhpMyAdmin ressemblera à

Code : Tout sélectionner

SELECT * FROM members WHERE jour = 'mardi%' AND mois = 'avril%' ORDER BY jour ASC, mois ASC

Re: Trier les membres par critère de colonne

par Speed09 » 18 déc. 2015, 22:42

Si je test avec une commande du style:

Code : Tout sélectionner

SELECT * FROM members WHERE jour = 20 AND mois = 12 ORDER BY jour ASC, mois ASC
PhpMyAdmin me montre bien les bons utilisateurs. Mais mon code ne marche toujours pas :/

Code : Tout sélectionner

$dbCon = mysqli_connect("localhost", "root", "mon pass", "ma base"); $requete = "SELECT * FROM members WHERE jour = ".$_SESSION['jour']." AND mois = ".$_SESSION['mois']." ORDER BY jour ASC, mois ASC"; $resultat = mysqli_query($dbCon, $requete); $Combien = mysqli_num_rows($resultat); $Contenu = mysqli_fetch_row($resultat); echo $Contenu; echo $Combien;