Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2007, 19h19   #1
Mut
Membre confirmé
 
Avatar de Mut
 
Inscription : mars 2003
Messages : 789
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 789
Points : 237
Points : 237
Envoyer un message via MSN à Mut
Par défaut [SQL]Lecture d'un fetch_array

Bonsoir, j'ai une requete sql executé de cette façon :

Code :
1
2
 
$this->db->fetch_array($this->db->query("SELECT User FROM ".$this->tbl['acces']." WHERE id=$id"));
J'aimerais savoir comment lire les résultats de cette requete. J'ai donc essayer :

Code :
1
2
3
4
5
6
 
        while ($this->db->fetch_array($this->db->result)) {
            echo ($this->db->fetch_array($this->db->record));
            if  ($this->db->record['User']==$User) {
            $Drapeau="true";} 
        }
Mais sans grande surprise ça fonctionne pas...
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 21h00   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
fetch_array te retourne un tableau.

Code :
1
2
$array = $this->db->fetch_array($this->db->query("SELECT User FROM ".$this->tbl['acces']." WHERE id=$id"));
$userName = $array['le_nom_du_champ_user_name'];
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 21h43   #3
Mut
Membre confirmé
 
Avatar de Mut
 
Inscription : mars 2003
Messages : 789
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 789
Points : 237
Points : 237
Envoyer un message via MSN à Mut
ok si je comprends bien j'ai plutot intéret à utiliser fetch_row pour ce que je souhaite faire ?
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2007, 21h47   #4
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Je ne peux pas trop te dire ce que ces fonctions valent l'une par rapport à l'autre... moi j'utilise tjs fetch_object...
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 09h01   #5
Mut
Membre confirmé
 
Avatar de Mut
 
Inscription : mars 2003
Messages : 789
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 789
Points : 237
Points : 237
Envoyer un message via MSN à Mut
Bon le problème doit venir de ma synthaxe car ça fonctionne toujours pas....


Code :
1
2
3
4
5
6
7
8
9
 
 
$Result=$this->db->query("SELECT User FROM ".$this->tbl['acces']." WHERE id=$id");
$row = mysql_fetch_row($Result);
 
if ($row[0]==$User) {
    return true;  }
    else {
        return false;}
Dans la table acces il y a deux "User". Le $row[0] me renvoit le premier enregistrement de la table mais si je fais $row[1], il me dit
Citation:
Notice: Undefined offset: 1
alors que je souhaite simplement récupérer dans ma requete tous les "user" dont le "id" = x. Ensuite je dois parcourir l'ensemble des résultats pour vérifier si une valeur s'y trouve...
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 09h12   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
mysql_fetch_row() te renvoie la premiere ligne du résultat, donc pour parcourir une liste de résultat il faut une boucle:
Code :
1
2
3
4
5
6
7
8
9
10
11
while($row = mysql_fetch_row())
{
if ($row[0]==$User) 
    {
    return true;  
    }
    else 
    {
    return false;
    }
}
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 10h04   #7
Mut
Membre confirmé
 
Avatar de Mut
 
Inscription : mars 2003
Messages : 789
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 789
Points : 237
Points : 237
Envoyer un message via MSN à Mut
En essayant ton code, j'avais un "wrong parameter" j'ai donc fait cette petite modif :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$Result=$this->db->query("SELECT User FROM ".$this->tbl['acces']." WHERE id=$id");
 
while($row = mysql_fetch_row($Result))
{
if ($row[0]==$User) 
    {
    return true;  
    }
    else 
    {
    return false;
    }
}
J'ai testé avec des "echo" les différentes valeurs qu'il pourrait me renvoyer et

me renvoit bien un des deux noms d'utilisateurs dans la base mais

me renvoit Undefined offset: 1
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 10h06   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
J'aurai du l'expliquer. quand tu fais mysql_fetch_row() ca te renvoie une ligne de résultat en forme de tableau. Dans ta requete SQL tu ne récupères qu'UNE seule colonne du coup dans $row tu n'as qu'un seul élément ($row[0]) et rien d'autre.
Pour accéder au second nom (donc le deuxieme résultat de la requete), il sera dans $row[0] au second tour de boucle.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 10h29   #9
Mut
Membre confirmé
 
Avatar de Mut
 
Inscription : mars 2003
Messages : 789
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 789
Points : 237
Points : 237
Envoyer un message via MSN à Mut
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function has_voted($id) { 
 
$User = $_SESSION['User_Name']; 
$id = intval($id); 
 
$Result=$this->db->query("SELECT User FROM ".$this->tbl['acces']." WHERE id=$id");
 
while($row = mysql_fetch_row($Result))
{
if ($row[0]==$User) 
    {
    return true;  
    }
    else 
    {
    $Drapeau="false";
    }
}
 
if ($Drapeau=="false") {
    return false;}
 
}

Génial ! Merci beaucoup de ton aide et de tes explications !
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h48.


 
 
 
 
Partenaires

Hébergement Web