Aide pour parcourir un résultat d'une requete SQL

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 : Aide pour parcourir un résultat d'une requete SQL

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 18:24

tout et simple, mais suffit de pratique c'est tout, moi aussi y'a encore quelques mois j'étais complètement perdu, a l'idée de faire un foreach...

Alors Count par contre il ne fait pas le confondre avec SUM() cette fonction renvoi la somme des colonnes sélectionnées.

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 18:21

oui mais surtout j'avais pas du tout à penser à faire un count c'est vraiment simple comme ca

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 18:05

tu as mal compris la structure de départ je pense que tu t'es embrouillé les pinceaux avec tonb array de base (la requête avec mysql_fetch_array($result))

et la façon dont tu parcours cet array.

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 18:03

J'ai enfin réussi, je me cassait trop la tête pour rien ! Merci pour ton aide !

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 17:36

$valeur c'est ton array de base $cle est un alias que tu utilise...

Tu n'en n'a en fait pas vraiment besoin mais ça t'évite d'écrire un truc du gere $array[0][nom]
car tu utilise un alias.

Du coup tu as ton $array et tu peux utiliser l'alias que tu veux par exemple moir j'ai un $array qui correspond à des voitures
je peux faire
 foreach($array as $voiture)
en suite dans la boucle j'aurais par exemple
foreach($array as $voiture)
{
 echo $voiture['marque'] ;
}

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 17:31

Enfait c'est le foreach qui me pose probleme j'arrive pas à voir à quoi correspond $valeur et $cle ?

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 17:16

non j'ai bien dis à partir de ton array...

Donc cela signifie que tu as déjà récupéré les infos de ton array.

Ensuite avec ce tableau tu l'exploite selon la structure que je t'ai mis en exemple.

une fois que tu as récupéré ton $array tu as plus qu'à le parcourir ...

Avec le foreach que je t'ai donné.

ainsi il va tester pour chaque Id si elle existe.

Donc si tu as des résultats tu affiche les commentaires, sinon si comme tu le vois
$data==0 
tu affiche le formulaire (cela signifie qu'on a pas d'enregistrements)

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 17:12

J'arrive pas à comprendre,
déjà j'enlève le while et for que j'avais ?
donc là j'ai plus que la requete dans mon foreach, puis je fais le if / else ?

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 16:59

non tu t'en fous tu n'a plus besoin de cela... c'est une usine à gaz ton truc...

Pour faire simple:


tu as ton array de base.

que tu récupère...

A parti de ce tableau

tu fais un
<?php
foreach ($value as $cle) {
    $sql = "SELECT COUNT(*) FROM `table_name` WHERE id = '" . mysql_real_escape_string($cle['id']) . "'";
    $result = mysql_query($sql);
    $data = mysql_fetch_assoc($result);
    if ($data == 0) {
// Tu affiches ton formulaire
    } else {
// Tu affiche les commentaires des gens qui ont déjà posté.
    }
}
?>    

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 16:52

Ok je vois ce que tu veux dire,
je fais donc ma requete, ensuite je fais un mysql_query pour l'executer, puis je fais un mysql_fetch_array ?

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 16:43

dans ce cas tu fais un
$sql="SELECT COUNT(*) FROM `table_name` WHERE id = '".mysql_real_escape_string($_GET['id'])."'"
en SQL et si le résultat est à zéro alors tu affiche le formulaire, sinon tu display les messages déjà postés.

La fonction COUT va compter le nombre d'enregistrements (recordset) de la base de donnée selon les critères que tu lui mets dans la clause WHERE.

Si c'est égal à 0 tu mets le formulaire else tu met les commentaires.

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 16:26

Non, je récupère l'ID des personne qui ont déjà posté quelque chose.
Si l'ID de la personne est dans la base c'est qu'elle a déjà posté quelque chose.
Dans ce cas j'affiche ce qu'elle a posté.
Si l'ID n'est pas dans la base, c'est qu'elle n'a jamais rien posté et dans ce cas j'affiche le formulaire vide.

Moi j'ai fait ca pour l'instant mais ca marche pas quand la personne a jamais rien posté, ça n'affiche pas le formulaire.
while ($valeur = mysql_fetch_array($maRequete)) {
for ($i=0 ...) { // pour parcourir $valeur
if ($valeur[$i] != $_SESSION['id']) {
break; // comme ca si la personne n'a jamais posté, on fait rien pour l'instant
} elseif ($valeur[$i] == $_SESSION['id']) {
// ici j'affiche le formulaire pré rempli vu qu'on a trouvé son ID dans la base
} elseif ($valeur[$i] != $_SESSION['id']) {
// afficher le formulaire non rempli
}
}
}
Avec ce code lorsque la personne n'a jamais rempli le formulaire, le formulaire vide devrait s'afficher mais rien ne s'affiche. Par contre si elle a déjà rempli, le formulaire s'affiche bien pré rempli.

Re: Aide pour parcourir un résultat d'une requete SQL

par piotrowski-s » 13 déc. 2012, 16:17

ok si je comprends bien tu veux récupérer des données d'un membre dans deux tables c'est bien cela ?

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 16:12

Je précise que y'a une table qui contient l'ID de la personne, son nom etc, et une autre table avec son ID et les valeurs qu'il a rentré, j'ai bien 2 tables différentes.

Re: Aide pour parcourir un résultat d'une requete SQL

par nico_loin » 13 déc. 2012, 16:10

La requete récupère les ID des membres qui ont déjà posté quelque chose. Si c'est son tout premier poste et donc que dans la base son ID n'apparait pas, les champs doivent apparaitre vides, et s'il a déjà posté quelque chose, les champs sont pré remplis avec ce qu'il a saisi.
Donc enfait je compare le résultat de ma requete avec l'ID du login de la personne connectée, et s'il existe dans la base, ses données sont pré remplis, mais son ID n'est pas dans la base, les champs doivent apparaitre vides.