Page 1 sur 2

Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 10:39
par nico44530
Bonjour,

J'aimerais convertir une requête en PDO en mysql PHP normal :
Mais n'y connaissant rien au PDO, je m'adresse au forum :)
<?php
						$dns = 'mysql:host=**********;dbname=***********';
						$utilisateur = '***************';$motDePasse = '***************';
						$connection = new PDO( $dns, $utilisateur, $motDePasse );
						$query = $connection->prepare('SELECT wa_communaute.pseudo, (id_membre + id_ami - :id) AS ami_id, date FROM wa_amis LEFT JOIN wa_communaute ON id = (id_membre + id_ami - :id) WHERE (id_membre = :id OR id_ami = :id) AND confirm = :conf ORDER BY date');
						$query->bindValue(':id',$id,PDO::PARAM_INT);       
						$query->bindValue(':conf','1',PDO::PARAM_STR);
						$query->execute();
						if ($query->rowCount() == 0) {
							echo '<p class="size11">Aucun amis pour l\'instant</p>';
						}
						while ($data = $query->fetch()) { ?>
						
							<li class="friend">
								<div class="friend-avatar">
									<a href="/<?php echo htmlentities(trim($data['pseudo'])); ?>"><img src="../img/upload/<?php echo htmlentities(trim($data['ami_id'])); ?>-mini.png" width="40" height="40" alt="" /></a>
								</div>
							</li>
						<?php } $query->CloseCursor(); ?>
Merci beaucoup :)

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 10:44
par two3d
je parle en connaissance de cause, le plus simple n'est pas de convertir mais de commencer une base neutre en php normal

c'est quoi que tu souhaite faire exactement ?

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 10:46
par nico44530
J'ai 2 tables dans ma BDD :

- wa_communaute :
- 'id' int(11) Auto increment
- 'pseudo'
etc...

- wa_amis :
- 'id_membre' int(11) (l'id du membre qui ajoute l'ami)
- 'id_ami' int(11) (l'id de l'ami en question)
- 'confirm' enum('0', '1') (0 = Non réciproque ; 1 = réciproque)
- 'date' int(11)

Voila pour les tables, mon problème c'est que je n'arrive pas à créer la requête pour afficher la liste d'amis d'un membre connecté.
Donc j'ai inséré un enregistrement manuel avec phpmyadmin :

id_membre : '1' (l'id du membre qui ajoute l'ami)
id_ami : '2' (l'id de l'ami ajouté)
confirm : 1 (j'ai confirmé l'amitié)
date : 11/03/2013 09:14:12

A partir de ça, comment on fait pour créer une requête (non en PDO) qui affichera l'ami du membre connecté ?

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:07
par two3d
si tu veux afficher tous les ami du membre, tu fait une requête comme suit:
<?php
$Req= mysql_query("SELECT * FROM wa_amis WHERE id_ami = ".$id_du_membre_connecte);
 ?>
<h1>Vos amis:</h1>
<?php
while($Infos = mysql_fetch_assoc($Req)) {
echo $Infos['id_ami']." ".($Infos['confirm'] == 0 ? "non accepté" : "accepté");
echo "<hr />";
}
si tu souhaite savoir si un id est ami d'un id, su fait:
<?php
if(mysql_num_rows(mysql_query("SELECT * FROM wa_ami WHERE id_ami = $variableid1 AND id_membre = $variableid2") == 1) {
 echo "trouvé";
} else {
echo "non trouvé";
}
si tu comprend pas quelque chose, demande moi, désolé de ne pas détailler mes requêtes

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:19
par nico44530
Merci pour ton message,

J'ai fais ce que tu m'a écrit, et rien ne s'affiche :( Voila le code :
<?php
						$sql = connect_sql();
						$req = mysql_query("SELECT * FROM wa_amis WHERE id_ami='".$id."'");
							while($infos = mysql_fetch_assoc($req)) { ?>
							<li class="friend">
								<div class="friend-avatar">
									<?php echo $infos['id_ami']." ".($infos['confirm'] == 0 ? "non accepté" : "accepté"); ?>
									<?php echo "<hr />"; ?>
									<img src="../img/upload/<?php echo htmlentities(trim($infos['id_ami'])); ?>-mini.png" width="40" height="40" alt="" />
								</div>
							</li>
						<?php } mysql_close(); ?>
Dans la requête, y'a pas une possibilité avec LEFT JOIN ?
Je me suis peut-être trompé en le réadaptant ?

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:36
par two3d
pour les champ de type int, float, décimal (les numéros en générale), tu na pas besoin de mettre de guillement entre la variable quand tu fait une requete: id_ami='".$id."' devient alors id_ami=".$id."

c'est sans doute normal qu'il affiche car il faut d'abord vérifier si il à des amis avec mysql_num_rows:
<?php
$sql = connect_sql();
$req = mysql_query("SELECT * FROM wa_amis WHERE id_ami='".$id."'");
if(mysql_num_rows($req) == 0) {
	echo "vous n'avez pas encore d'ami";
} else {
	while($infos = mysql_fetch_assoc($req)) { ?>
	<li class="friend">
		<div class="friend-avatar">
			<?php echo $infos['id_ami']." ".($infos['confirm'] == 0 ? "non accepté" : "accepté"); ?>
			<?php echo "<hr />"; ?>
			<img src="../img/upload/<?php echo htmlentities(trim($infos['id_ami'])); ?>-mini.png" width="40" height="40" alt="" />
		</div>
	</li>
	<?php } 
}
mysql_close(); ?>
laisse tomber LEFT JOIN, j'en vois pas l'utilité :wink:

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:42
par nico44530
J'ai copié-collé.
Donc normalement il devrait y avoir un ami puisque dans phpmyadmin, j'ai mis "1" à confirm :(
Et ca dit que je n'ai pas encore d'amis

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:48
par two3d
tu na pas d'erreur ?

comment tu fait quand tu insère un ami ? quels son les valeurs que tu insères ?

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 11:52
par nico44530
Dans la colonne

id_membre : je mets "1"
id_ami : je mets "2"
confirm : je mets "1"

Et j’exécute, ensuite ça s'affiche dans le tableau, mais rien sur le site.
J'ai juste le message qui dit que j'ai pas d'amis pour le moment

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 12:05
par two3d
fait:

WHERE id_membre = ".$id." OR id_ami = ".$id." // $id défini l'id du membre connecté

ce qui veut dire:

si moi j'ajoute un ami, on aura l"INSERT suivant: id_membre = mon_id AND id_ami = lid_choisi
si l'ami m'ajoute en tant qu'ami, on aura un INSERT suivant: id_membre = son_id AND id_admin = mon_id

donc on recharge si id_membre ou id_amin correspond à mon id :wink:

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 12:13
par nico44530
Le résultat affiché c'est toujours l'avatar du membre ayant l'id : "2"
Vu que le champs : id_ami est 2

Donc si je me connecte au membre avec l'id 2, je m'aurais dans mes propres amis ^^

C'est pas encore ça :(

Sinon j'ai plus simple, pourquoi ne pas simplement convertir la requête ci-dessous en mysql et php normal ?
Elle fonctionne très bien, mais il n'y a qu'en PDO qu'elle fonctionne, je ne sais pas comment la convertir :
<?php
						$dns = 'mysql:host=sql2.cluster1.easy-hebergement.net;dbname=webastronomiea';
						$utilisateur = 'webastronomiea';$motDePasse = 'nico181290';
						$connection = new PDO( $dns, $utilisateur, $motDePasse );
						$query = $connection->prepare('SELECT wa_communaute.pseudo, (id_membre + id_ami - :id) AS ami_id, date FROM wa_amis LEFT JOIN wa_communaute ON id = (id_membre + id_ami - :id) WHERE (id_membre = :id OR id_ami = :id) AND confirm = :conf ORDER BY date');
						$query->bindValue(':id',$id,PDO::PARAM_INT);       
						$query->bindValue(':conf','1',PDO::PARAM_STR);
						$query->execute();
						if ($query->rowCount() == 0) {
							echo '<p class="size11">Aucun amis pour l\'instant</p>';
						}
						while ($data = $query->fetch()) { ?>
						
							<li class="friend">
								<div class="friend-avatar">
									<a href="/<?php echo htmlentities(trim($data['pseudo'])); ?>"><img src="../img/upload/<?php echo htmlentities(trim($data['ami_id'])); ?>-mini.png" width="40" height="40" alt="" /></a>
								</div>
							</li>
						<?php } $query->CloseCursor(); ?>

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 12:23
par two3d
tu travail en local ? tu utilise un éditeur de texte genre np++ ?

si t'es pas en local, je peut avoir l'adresse pour voir stp ?

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 12:25
par nico44530
Oui : http://www.web-astronomie.fr :

Identifiant : admin
mot de passe : nico181290

Identifiant : guigui56
mot de passe : nico181290
Pour tester au 2 membres :wink:

J'utilise notepad ++

Tu verra que sur le compte Guillaume, l'id est un 2 au lieu d'un 1

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 13:06
par two3d
je patauge là sur ton site, je trouve pas de menu pour ajouter amis et je ne vois pas mon id membre, si tu peut m'aider stp

Re: Convertir requête PDO en mysql PHP normal

Posté : 11 mars 2013, 13:07
par nico44530
J'ai ajouté manuellement via phpmyadmin.
J'ai pas encore fais le formulaire d'ajout d'amis :?

Le compte Nicolas : id du membre : 1
Le compte Guillaume : id du membre : 2