Requête SQL sur clic d'image HTML ? (via js?)

Fermé
Powerplex Messages postés 2 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 28 juin 2012 - 28 juin 2012 à 09:49
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 28 juin 2012 à 14:15
Bonjour,

Je suis confronté à un léger problème que j'aimerai résoudre pour mieux comprendre la façon dont les langages communiquent.

EXPLICATION :

- Mon programme PHP affiche une série de touites(un twitter maison) publiés par un utilisateur connecté à une session.
-Lorsque que mon utilisateur est connécté, un bouton (balise d'image html) apparaît sur chaque touite et devrait lui permettre de le supprimer de la base de données.
- J'ai donc pensé à utiliser Onclick dans la balise pour éxécuter la supression, mais je ne peut pas y insérer de PHP et encore moins de requête (je passe par PDO).

MON CODE :

$pseudo = $_SESSION['user'];
$listetouite=$pdo->query("SELECT * FROM touites WHERE touitesNomCompte = '$pseudo' ORDER BY dateCreationTouite ASC"); 
$listetouite->setFetchMode(PDO::FETCH_OBJ); 
			
echo $pseudo.',voici vos touites persos.';
			
<div id="touitesrecents">
	
<?php			
	echo '<h2>--- VOS TOUITES RECENTS ---</h2>';

	while( $ligne = $listetouite->fetch() ) //affichage des touites récents ligne par ligne.
	{
			
		?><div class="touite"><?php 

		echo '- Le '.$ligne->dateCreationTouite.',<b>vous avez dit: </b>"<i>'.$ligne->texteTouites.'</i>"
						
		<img class="logodelete" src="images/delete.png" alt="" onclick=""/>
					
		?></div><?php	
						 
	}			
?>

</div> <!--fin d'affichage des touites récents-->

			
$listetouite->closeCursor(); 


DONC DONC DONC...

Je bloque complètement ! Je pensais utiliser du javascript pour appelez une page php à la manière d'un include, php qui exécuterais une requête paramétrée en fonction de deux variables récupérées sur le clic de l'image : le $pseudo et le "texteTouites". Ces deux éléments me suffiraient pour faire mon DELETE dans la base.

A l'aide >< Je bloque :p
A voir également:

3 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
28 juin 2012 à 12:13
Salut,

Je pense qu'il faut passer par Ajax.
Sur la balise image qui récupère le pseudo + tweete, il faut ajouter sur le onclick une fonction Ajax. Cette fonction permettra d'envoyer les données collectées en GET ou en POST à un simple fichier PHP qui supprimera les données.
0
Powerplex Messages postés 2 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 28 juin 2012
28 juin 2012 à 13:39
Merci beaucoup :p

Je suis grand débutant par contre j'utilise jQuery déjà mais je n'ai jamais utilisé les fonctions ajax ><

Je vais enquêter !
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
28 juin 2012 à 14:15
Dans les grosses ligne (je débute en ajax :)) ça devrait donner un truc du style :
<script>
function sup(pseudo,message)
{ 
	var xhr; 
	try {  
	xhr = new ActiveXObject('Msxml2.XMLHTTP');   
	}
	catch (e) 
	{
		try {   
		xhr = new ActiveXObject('Microsoft.XMLHTTP'); 
		}
		catch (e2) 
		{
			try {  xhr = new XMLHttpRequest();  
			}
			catch (e3) 
			{  
			xhr = false;   
			}
		}
	}

	xhr.onreadystatechange  = function() 
	{ 
		if(xhr.status == 404){
			alert('Erreur ' +xhr.status);	
		}
	};  

	xhr.open( "GET", "mon-fichier.php?pseudo="+pseudo+"&message="+message ,  true); 

	xhr.send(null); 
} 
</script>

<a onclick="sup('toto','message 1')"><img src="logo.png"/></a>
<a onclick="sup('titi','message 2')"><img src="logo.png"/></a>


Au "onclick" la fonction "sup()" est déclenché. Le pseudo + message sont envoyés par la méthode "GET" au fichier "mon-fichier.php". Le fichier "mon-fichier.php" récupère les infos et traite les données comme un simple fichier PHP.

Après "xhr.onreadystatechange = function() {", vous pouvez lancer d'autres fonctions en ajoutant simplement :
		if(xhr.readyState == 4 && xhr.status == 200){
			//ici d'autres fonctions
		}

Par contre avec cette méthode, il faudra certainement faire un refresh du côté utilisateur pour que le message supprimé apparaisse bien comme étant supprimé.
0