Bonjour,
Voila je rencontre un petit problème avec mon code.
$recupere = $bdd->prepare('SELECT pseudo FROM poster_histoire');
$recupere->execute();
while ($donnees = $recupere->fetch()) {
J'aimerais que même si un pseudo apparait plusieurs fois dans la table sql , il ne soit afficher qu'une seule fois dans mon site web.
si par exemple j'ai une table:
PSEUDO | TITRE
bob | rg
charlie | fgythyhy
bob | trfr
robert | no_sé
Il ya plusieurs fois bob dedans
donc forcément mon code affiche plusieurs fois bob
comment éviter qu'il apparaisse plusieurs fois ?
"Warning: Illegal string offset 'pseudo' in... que je ne sais pas comment resoudre "
Oui je n'ai pas testé le code... le but était de te proposer une manière de faire.
C'est bien si tu a pu résoudre le problème, n'oubli pas de passer le poste à RESOLU.
Bonjour,
Il est possible de "dédoublonner" en SQL, avec un DISCTINCT, des GROUP BY, des sous-requêtes... etc.
Le plus simple étant de le faire en PHP avec un code du style :
$recupere = $bdd->prepare('SELECT pseudo FROM poster_histoire');
$recupere->execute();
$processed = array();
foreach($recupere->fetch() as $poster_histoire) {
if(!in_array($poster_histoire['pseudo'], $processed)) {
// FAIRE CE QUE TU VEUX AVEC Le poster_histoire
$processed[] = $poster_histoire['pseudo'];
}
}
Merci pour ta réponse.
Donc si je comprends bien la solution etait juste d'enregistrer dans un tableau les pseudos de la base si ils n'y sont pas deja puis de les afficher .
Mais j' ai un message d'erreur : Warning: Illegal string offset 'pseudo' in... que je ne sais pas comment resoudre
Bonjour.
Il te suffit d'utiliser l'instruction DISTINCT
dans ta requête SQL, ce qui te permettra de récupérer les résultat sans avoir de doublon dans ceux-ci, voir ici.
Mais si tu dois faire ça, c'est que tes tables sont mal structurées.