Récuperer valeur d'une table

MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous, mon problème est le suivant :

Je souhaite récupérer des valeurs dans la bdd en fonction d'un pseudo. Jusqu'à la pas de problème, cependant j'aimerai les "séparer" afin de pouvoir faire des comparaisons.

Par exemple ici j'ai deux lignes sql avec le même pseudo, dedans je récupère l'entreprise. Mais, quand je fais $req['entreprise'] je récupère bien les agences mais sous la forme suivante :

Agence1Agence2 , or les agences ne font pas parties de la même ligne. Et j'aimerai mettre, par exemple, Agence1 dans une variable et Agence 2 dans une autre.

Désolée si ce n'est pas très claire,

Merci à tous ceux qui pourront m'apporter une aide.

11 réponses

Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,

Pourrais-tu envoyer ton code ?

Bien à toi,
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Alvin, merci pour ta réponse

voici ma requete et le reste :


$req=$bdd->query('SELECT * from membres where pseudo = "'.$_SESSION['pseudo'].'"');
$req2=$bdd->query('SELECT * from avis where pseudo= "'.$_SESSION['pseudo'].'"');
foreach ($req as $billet2):



while ($billet3 = $req2->fetch())
{

  if ($billet2['nbavis']==2){

echo $billet3['entreprise'];
  }

}



endforeach;



Le nom des variables est un peu bidon mais c'est pour les tests, tout ceci n'est que local.


Il y a donc plusieurs avis d'un même utilisateur sur différentes entreprises.


0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Quand je met sous forme de tableau je vois qu'ils sont tout deux à la même place

Array ( [0] => Agence1) Array ( [0] => Agence2)

Moi qui pensait récupérer comme ça
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
C'est vrai que c'est problématique...

Disons que je ne comprends pas vraiment pourquoi les deux agences se trouvent sur la même ligne....

Essaye peut-être comme ça : rajoute à la fin de chaque nom d'entreprise un caractère spécial que personne n'utilise (ex: ¤ ou bien ⨀). Ensuite, dans ton script tu peux utiliser preg_split (https://www.php.net/manual/fr/function.preg-split.php) pour séparer. Ce qui donnerait ceci :
$lesagences = preg_split("¤", $billet3['entreprise']);


Ainsi ça te retournera un tableau contenant les agences...

C'est un peu tordu mais ça peut marcher.

Bien à toi,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton aide, j'ai tenté mais plus rien ne s'affiche maintenant, je désespère ahah
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
Je ne code pas en php... Malheureusement pour toi :D.
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention   > Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention  
 
Merci quand même pour ton aide
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
Essaye peut-être comme ça sinon...

$req=$bdd->query('SELECT * from membres where pseudo = "'.$_SESSION['pseudo'].'"');
$req2=$bdd->query('SELECT * from avis where pseudo= "'.$_SESSION['pseudo'].'"');

foreach ($req as $billet2) {

while ($billet3 = mysql_fetch_assoc($req2)) {

  if ($billet2['nbavis']==2){

echo $billet3['entreprise'];
  
}}}
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
Ah attends, j'ai compris...

C'est normal que ça fasse
Agence1Agence2
!

C'est parce les deux entreprises correspondent aux même critères (2 avis, même pseudo). Quand ça passe dans ta boucle c'est affiché sur ta page.

Tu veux les mettre dans une variable, tu peux déclarer
$lesentreprises
juste avant ton
foreach
puis tu mets dans ton
while
à la place du
echo
:
array_push($lesentreprises, $billet3['entreprise']);


Ensuite, tu n'as plus qu'à faire des comparaisons après dans ton code sur la variables
$lesentreprises
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Encore merci ! Je viens de tester et dès que je rentre dans le while plus rien ne s'affiche
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
C'est normal puisqu'il n'y a plus de
echo
...
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour
Les données sont sur la même ligne car il n'y a pas de retour à la ligne apres le echo...

Mais ton code n'est pas très clair...
Pourrais tu nous montrer un dump de tes tables et nous expliquer ce que tu veux afficher
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Jordane,

En gros l'user à 3 agences d'enregistrées sur son compte & il peut laisser un seul avis sur chacune.

J'avais donc opté pour ce code :
if ($billet2['entreprise1'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise2'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise3'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}


Mais le code réagit de façon positive au if et au else

exemple :

while ($billet3 = $req2->fetch())
{

   if ($billet2['nbavis']==2){

if ($billet2['entreprise1'] == $billet3['entreprise']){

  echo " tu as déjà laissé un avis";
  echo "<br>";
}
else 
{
  echo " tu peux laissé un avis";
}

  }
}


ce qui affiche :
0
Alvin1614 Messages postés 107 Date d'inscription   Statut Membre Dernière intervention   4
 
Et surtout quelles comparaisons veux-tu faire ?
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à tous pour votre temps & votre patience.

En gros l'user à 3 entreprises qu'il a "visité" mais qu'il ne peu commenter qu'une fois.

De base je voulais faire :

if ($billet2['entreprise1'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise2'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise3'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}



Mais, comme je récupère les valeurs sans séparation les conditions ne fonctionnent pas.

Mon code réagit comme si les deux conditions étaient respectées : la condition que c'est égale mais également la condition que c'est différent.
0
MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
En gros l'user à 3 agences d'enregistrées sur son compte & il peut laisser un seul avis sur chacune.

J'avais donc opté pour ce code :
if ($billet2['entreprise1'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise2'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}
if ($billet2['entreprise3'] == $billet3['entreprise']{

// l'user ne peu pas mettre d'avis car il en a déjà mis un 
}
else {

// l'user peut laisser un avis car il n'en a jamais mis 

}


Mais le code réagit de façon positive au if et au else

exemple :

while ($billet3 = $req2->fetch())
{

   if ($billet2['nbavis']==2){

if ($billet2['entreprise1'] == $billet3['entreprise']){

  echo " tu as déjà laissé un avis";
  echo "<br>";
}
else 
{
  echo " tu peux laissé un avis";
}

  }
}


ce qui affiche :
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > MalonTails Messages postés 86 Date d'inscription   Statut Membre Dernière intervention  
 
Je t'ai demandé un dump de tes tables...

Car pour l'instant,
Je ne suis pas sûr que :
1- tu ais fait les "bonnes" requêtes sql
2- qu'il y ait besoin de passer par des while


Et au passage, tu utilises quoi pour te connecter à ta bdd ? Mydqli ou pdo ?
Pour rappel :https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
0