[Messagerie] function recup_conversation en pdo
RésoluZakarya93 Messages postés 1026 Statut Membre -
Sachant que le code de cette function mysl_ est :
<?php
//la function qui va recuperer les conversations
function recup_conversation()
{
$results = array();
$sql = mysql_query("
SELECT conversations.id_conversation,
conversations.sujet_conversation,
utilisateurs.pseudo,
utilisateurs.avatar,
conversations_messages.date_message
FROM conversations
LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation
INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation
INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp
WHERE pseudo_dest = '{$_SESSION['pseudo']}'
GROUP BY conversations.id_conversation
ORDER BY conversations_messages.date_message DESC
");
while($row = mysql_fetch_assoc($sql))
{
$results[] = $row;
}
return $results;
}
?>
Qu'est ce que donne ce code en pdo svp ?
J'approche de la fin !
Merci d'avance :)
7 réponses
La discussion porte sur la conversion d'une fonction PHP qui récupère des conversations de MySQL vers PDO et sur l'utilisation d'un identifiant utilisateur comme paramètre dans la requête.
Parmi les éléments essentiels, une proposition de remplacement propose d'utiliser une requête préparée avec un marqueur de paramètre et de lier l'identifiant via PDO, plutôt que la variable de session.
Des points critiques apparaissent, notamment des erreurs de syntaxe dans les placeholders et l'oubli d'un SELECT initial, ainsi que l'adéquation entre quotes et paramètres dans la clause WHERE.
En complément, plusieurs répondants encouragent à tester le code avec les résultats affichés et à vérifier la présence de la session afin d'isoler les causes sans conclure à une réparation immédiate.
-
Commence par faire un premier jet, on n'est pas là pour mâcher le travail. Essaye un peu au moins... D'autant que tu dispose d'un grand nombre d'exemples de conversion !
-
C'est un truc de ce genre ?
<?php //la function qui va recuperer les conversations function recup_conversation() { global $bdd; // déclaration globale de BDD $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $strWhere = $pseudo ? " WHERE pseudo !='$pseudo' " : '' ; $sql = "conversations.id_conversation, conversations.sujet_conversation, utilisateurs.pseudo, utilisateurs.avatar, conversations_messages.date_message FROM conversations LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp WHERE pseudo_dest = '{$_SESSION['pseudo']}' GROUP BY conversations.id_conversation ORDER BY conversations_messages.date_message DESC"; $req = $bdd->prepare($sql); $req->execute(); $resultat = $req->fetchall(); return $resultat; } ?> -
-
bien sur
<?php //la function qui va recuperer les conversations function recup_conversation() { global $bdd; // déclaration globale de BDD $pseudo_session = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $sql = "SELECT conversations.id_conversation, conversations.sujet_conversation, utilisateurs.pseudo, utilisateurs.avatar, conversations_messages.date_message FROM conversations LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp WHERE pseudo_dest = ':session_pseudo ' GROUP BY conversations.id_conversation ORDER BY conversations_messages.date_message DESC"; $params = array(':session_pseudo' =>$pseudo_session); $req = $bdd->prepare($sql); $req->execute($params); $resultat = $req->fetchall(); return $resultat; } ?> -
-
pourquoi ? pour la requête j'ai fais :
SELECT conversations.id_conversation, conversations.sujet_conversation, utilisateurs.pseudo, utilisateurs.avatar, conversations_messages.date_message FROM conversations LEFT JOIN conversations_messages ON conversations.id_conversation = conversations_messages.id_conversation INNER JOIN conversations_membres ON conversations.id_conversation = conversations_membres.id_conversation INNER JOIN utilisateurs ON utilisateurs.pseudo = conversations_messages.pseudo_exp WHERE pseudo_dest = ':session_pseudo ' GROUP BY conversations.id_conversation ORDER BY conversations_messages.date_message DESC -
-
-
-
Sans le code utilisé (celui que tu utilises pour l'affichage), impossible de voir ce qui cloche...
-
ah pardon
<?php include('functions/membre.func.php'); include('body/header.php'); include('body/menu.php'); ?> <h3>Les conversations</h3> <?php $conversations = recup_conversation(); if($conversations == true) { foreach($conversations as $conversation) { ?> <div class='conversation'> <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br /> <omg src='avatar/<?php echo $conversation['avatar']; ?> height='70' width='70'> <p><a href=""> <?php echo $conversation['sujet_conversation'] ?></a></p> </div> <?php } }else{ ?> <div class'error'>Vous n'avez pas de message</div> <?php } ?> -
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
WHERE pseudo_dest = ':session_pseudo '
Il ne faut pas d'apostrophes autour de :session_pseudo :WHERE pseudo_dest = :session_pseudo
-
Pour l'avatar, encore une histoire d'apostrophes.
<omg src='
et où est l'apostrophe qui ferme le src ? -
parfait merci à tous :) petite question pourquoi dans ma bdd je ne peux supprimer les messages? :/