[RESOLU] Convertir requête PDO en mysql PHP normal

Eléphant du PHP | 386 Messages

11 mars 2013, 10:39

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 :)

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 10:44

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 ?

Eléphant du PHP | 386 Messages

11 mars 2013, 10:46

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é ?

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 11:07

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

Eléphant du PHP | 386 Messages

11 mars 2013, 11:19

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 ?

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 11:36

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:

Eléphant du PHP | 386 Messages

11 mars 2013, 11:42

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

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 11:48

tu na pas d'erreur ?

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

Eléphant du PHP | 386 Messages

11 mars 2013, 11:52

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

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 12:05

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:

Eléphant du PHP | 386 Messages

11 mars 2013, 12:13

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(); ?>

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 12:23

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 ?

Eléphant du PHP | 386 Messages

11 mars 2013, 12:25

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

Avatar du membre
Mammouth du PHP | 1564 Messages

11 mars 2013, 13:06

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

Eléphant du PHP | 386 Messages

11 mars 2013, 13:07

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