[PHP/JaveScript]

Bonjour,

Je voudrait savoir si quelqu'un pourrait m'aider.

Voila j'ait un tableaux connecter a une base de données qui ressemble a ceci:

echo "<table BORDER='2' CELLPADDING='10' CELLSPACING='1'>";
echo "<caption><h2><center>Source:</center></h2></br></caption>";

echo "<tr>";
echo "<TH> ID </TH>";
echo "<TH> Poste </TH>";
echo "<TH> URL </TH>";
echo "<TH> Extension </TH>";
echo "</tr>";

while ($donnees = mysql_fetch_array($recup_donnee))
{
echo $donnees['ID'];

echo "<tr>";
echo "<td>" . $donnees['ID'] . "</td>";
echo "<td>" . $donnees['Poste'] . "</td>";
echo "<td>" . $donnees['URL'] . "</td>";
echo "<td>" . $donnees['Extension'] . "</td>";
echo "<td>" Bouton Supprimer "</td>";
> echo "</tr>";
}

echo "</table>";

Je voudrait a l'endroit en gras ou il y a bouton supprimer mettre un petit code javascript qui me permettrait de supprimer cette ligne de mon tableau et donc de la base de donnée pour regénéré le tableau sans recharger cette page (puisque d'après ce que j'ait comprit le javascript actualise sans recharger la page dites moi si je me trompe) mais comme je n'y connait rien en javascript je voudrait savoir si quelqu'un pourrait m'aider pour le code a mettre car je ne sais même pas par ou commencer.

Merci d'avance ;)
Configuration: Windows XP Internet Explorer 7.0

18 réponses

  1. Ouai il était dans le même dossier sa se trouve c'est le suppression_ligne.php ou y manquait un p j'regarde dem1 mat1 en arrivant au boulot et j'te dirait ^^
    1. le nom du fichier a partir duquel tu appelle ne joue pas mais par contre est-il dans le même dossier ?
      1. Non je suis en local j'ait recreer la base de donnée le seul truc qui a changer (enfin faudrat que je vérifie le non de suppression_ligne.php mais j'avait fait copier coller donc sa dvrait être bon) c'est le nom du fichier sur lequel depuis lequel j'appel suppression_ligne.php sa change quelque chose???
        1. qd tu changes d'ordi tu accedes qd même sur le même serveur distant ou tu es sur un serveur local à ton micro ?
          1. C'est bon sa marche niquel chè pas pourquoi j'suis pas sur le même ordi et la sa ma mit le message d'erreur:

            "Pb avec la suppression par php";

            Et en faite le problème et qu'il avait un tout petit oublie dans:

            $suppr=mysql_query("DELETE FROM source WHERE ID=$id_a_suprimer ");

            Qui devient:

            $suppr=mysql_query("DELETE FROM source WHERE ID=\"$id_a_suprimer \" ");

            C'est vraiment parfait merci beaucoups je sais trop pas comment te remercier t'es le meilleur ;)
            1. attention le script doit se nommer:
              suppression_ligne.php


              avec deux p
              1. la requette AJAX apeelle le script php et le message est à:

                //fonction traitement de la réponse à la requette AJAX
                function traitementReponse(http_request,id_table,id_ligne) {

                if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                // cas avec reponse de PHP en mode texte:
                //chargement des elements reçus dans la liste
                var reponse=http_request.responseText;
                //TEST mettre la ligne ci dessous en commentaire qd ça marche
                alert("Reponse du script php: "+reponse);
                //si reponse positive c a d si la ligne a bien été supprimée par php on la supprime dans le tableau
                if(reponse="OK"){
                deleteLigne(id_table,id_ligne); //appel fonction delete ligne du tableau dans la page
                }

                }
                else {
                alert('Un problème est survenu avec la requête.');
                }
                }
                }


                donc au traitement de la réponse, après le else du test if (http_request.status == 200) donc ça veut dire que l'on ne reçoit pas le =200

                verifies ton script, son nom, son, emplacement etc...
                1. Le problème doit pas venir de la sa m'affiche toujours le même message d'erreur:

                  "Un problème est survenu avec la requète" :(
                  1. Surement Pb avec le script:
                    essayes avec le script suppression.php comme ça:

                    <?php
                    if(isset($_POST['id_a_supprimer'])){
                    
                    	 $id_a_suprimer=$_POST['id_a_supprimer']; //la on recupere le numero de l'ID a supprimer cette valeur est transmise par AJAX, ne change rien
                    	 
                    	 //connexion a la base:
                    	mysql_connect("localhost","root","") or die("Impossible de se connecter");
                    	mysql_select_db("sauvegarde_zf") or die("Impossible de se connecter");
                    	//requette
                    	 $suppr=mysql_query("DELETE FROM source WHERE ID=$id_a_suprimer ");
                    	 //et la réponse a AJAX
                    	 if($suppr){
                    		//la suppression s'est bien passee alors on repond OK
                    		echo "OK";
                    	 }else{
                    		echo "Pb avec la suppression par php";
                    	 }
                    
                     }
                    ?>
                    1. Et pour le problème d'erreur de requète ta une idée???

                      pasque moi si j'doit me mettre a l'ajax pour trouver j'y suis encore le mois prochain XD
                      1. Au faite oui mon tableaus s'affiche correctement sauf la petite erreur a cause de $nbsp qui n'est pa définie d'après le naviguateur et donc affiche juste ";" dans le <th></th> des bouton
                        1. Non sa me mets un message d'alerte me disant:

                          "Un problème est survenu avec la requête."

                          Donc je sais pas si tu voit pourquoi??

                          sinon question qu'à rien a voir mais $nbsp a une utiliter dans le programme ou c'est juste histoire de mettre quelque chose dans le <th></th>?
                          1. est ce que ton tableau s'affiche normalement ?

                            essayes comme ça: tu devrais avoir un message d'alert avec OK ou Problème avec la suppression par php

                            as tu bien fait le script supression_ligne.php, l'as tu nommé ainsi et l'as tu mis dans le même dossier que la page actuelle ?

                            <html>
                            <script type="text/javascript">
                            //fonctions AJAX
                            function makeRequest(url,id_table,id_ligne){
                            	var http_request = false;
                            		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
                                    if (window.XMLHttpRequest) { // Mozilla, Safari,...
                                        http_request = new XMLHttpRequest();
                                        if (http_request.overrideMimeType) {
                                            http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
                                        }
                                    } else if (window.ActiveXObject) { // IE
                                        try {
                                            http_request = new ActiveXObject("Msxml2.XMLHTTP");
                                        } catch (e) {
                                            try {
                                                http_request = new ActiveXObject("Microsoft.XMLHTTP");
                                            } catch (e) {}
                                        }
                                    }
                            
                                    if (!http_request) {
                                        alert('Abandon :( Impossible de créer une instance XMLHTTP');
                                        return false;
                                    }
                                    http_request.onreadystatechange = function() { traitementReponse(http_request,id_table,id_ligne); } //affectation fonction appelée qd on recevra la reponse
                            		// lancement de la requete
                            		http_request.open('POST', url, true);
                            		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
                            		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                            		
                            		data='id_a_supprimer='+id_ligne; //on envoie au script php le numéro de l'ID a supprimer
                                    http_request.send(data);
                            }
                            //fonction traitement de la réponse à la requette AJAX
                            function traitementReponse(http_request,id_table,id_ligne) {
                            	
                            	if (http_request.readyState == 4) {
                            		if (http_request.status == 200) {
                            					// cas avec reponse de PHP en mode texte:
                            			//chargement des elements reçus dans la liste
                            			var reponse=http_request.responseText;
                            			//TEST mettre la ligne ci dessous en commentaire qd ça marche
                            			alert("Reponse du script php: "+reponse);
                            			//si reponse positive c a d si la ligne a bien été supprimée par php on la supprime dans le tableau
                            			if(reponse="OK"){
                            				deleteLigne(id_table,id_ligne); //appel fonction delete ligne du tableau dans la page
                            			}
                            				
                            		} 
                            		else {
                                            alert('Un problème est survenu avec la requête.');
                                    }
                                }
                            }
                            
                            //fonction supression de la ligne dans la page
                            function deleteLigne(id_table,id_ligne){
                            	var obj_table=document.getElementById(id_table);
                            	for (i=0;i<obj_table.rows.length;i++){
                            		if(obj_table.rows[i].id == id_ligne){
                            			var num_ligne_a_suppr=i;
                            		}
                            	
                            	}
                            	//alert("num a supprimer: "+num_ligne_a_suppr);
                            	obj_table.deleteRow(num_ligne_a_suppr);
                            
                            }
                            </script>
                            <?php
                            echo "<table id='table1' BORDER='2' CELLPADDING='10' CELLSPACING='1'>";
                            echo "<caption><h2><center>Source:</center></h2></br></caption>";
                            
                            echo "<tr>";
                            echo "<TH> ID </TH>";
                            echo "<TH> Poste </TH>";
                            echo "<TH> URL </TH>";
                            echo "<TH> Extension </TH>";
                            echo "<TH> $nbsp; </TH>"; //il faut absolument le meme nombre de colonnes
                            echo "</tr>";
                            //connexion a la base:
                            mysql_connect("localhost","root","") or die("Impossible de se connecter");
                            mysql_select_db("sauvegarde_zf") or die("Impossible de se connecter");
                            //requette
                            $recup_donnee = mysql_query("SELECT * FROM source"); 
                            //affichage
                            while ($donnees = mysql_fetch_array($recup_donnee))
                            {
                            	//echo $donnees['ID']; //ne mets pas d'echo en dehors des balises tr td
                            
                            	echo "<tr id='".$donnees['ID']."'>";
                            	echo "<td>" . $donnees['ID'] . "</td>";
                            	echo "<td>" . $donnees['Poste'] . "</td>";
                            	echo "<td>" . $donnees['URL'] . "</td>";
                            	echo "<td>" . $donnees['Extension'] . "</td>";
                            	echo "<td> <a href=\"javascript:makeRequest('suppression_ligne.php','table1','".$donnees['ID']."');\">supprimer ligne</a> </td>"; 
                            	echo "</tr>";
                            }
                            
                            
                            
                            echo "</table>";
                            ?>
                            
                            
                            </html>
                            
                            et le script supression_ligne.php:
                            <?php
                            if(isset($_POST['id_a_supprimer'])){
                            
                            	 $id_a_suprimer=$_POST['id_a_supprimer']; //la on recupere le numero de l'ID a supprimer cette valeur est transmise par AJAX, ne change rien
                            	 
                            	 //connexion a la base:
                            	mysql_connect("localhost","root","") or die("Impossible de se connecter");
                            	mysql_select_db("sauvegarde_zf") or die("Impossible de se connecter");
                            	//requette
                            	 $suppr=mysql_query("DELETE fROM source WHERE ID='".$id_a_suprimer."'");
                            	 //et la réponse a AJAX
                            	 if($suppr){
                            		//la suppression s'est bien passee alors on repond OK
                            		echo "OK";
                            	 }else{
                            		echo "Pb avec la suppression par php";
                            	 }
                            
                             }
                            ?>
                            1. Euh je n'est jamais fait d'ajax de ma vie ni de java script j'essaye de comprendre le code comme je peut mais je ne comprend pas trop le fonctionnement si :( je te donne les information sur ma base de donnée tu pourrait m'aider a compléter le code svp ?

                              mysql_connect("localhost","root","")
                              or die("Impossible de se connecter");

                              mysql_select_db("sauvegarde_zf")
                              or die("Impossible de se connecter");

                              $recup_donnee = mysql_query("SELECT * FROM source");

                              c'est c'est la connexiona ma base bon je suppose qu'il faut la mettre juste au dessus du tableaux jusque la tout va bien

                              les attribut de ma table sont les même nom que ceux donner au colonne de mon tableaux c'est a dire que la table source et constituer de:
                              ID
                              Poste
                              URL
                              Extension

                              quand je teste il me dit qu'il y a une erreur avec la requète mais je comprend pas ou elle est sans vouloir faire mon boulet ><

                              'id_a_supprimer' est une valeur que je doit remplacer ou sais une valeur pour le code?
                              je sais pas comment sa fonctionne alors pour aller modifier quelque chose la dedans...

                              Sa serait sympa si les information que je t'es donner suffise (sinon demande moi se qu'il manque) de m'aider a compléter le code ^^
                              1. bon avec de l'AJAX voilà une solution (il reste peut être des erreurs de frappe)

                                <html>
                                <script type="text/javascript">
                                //fonctions AJAX
                                function makeRequest(url,id_table,id_ligne){
                                	var http_request = false;
                                		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
                                        if (window.XMLHttpRequest) { // Mozilla, Safari,...
                                            http_request = new XMLHttpRequest();
                                            if (http_request.overrideMimeType) {
                                                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
                                            }
                                        } else if (window.ActiveXObject) { // IE
                                            try {
                                                http_request = new ActiveXObject("Msxml2.XMLHTTP");
                                            } catch (e) {
                                                try {
                                                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                                                } catch (e) {}
                                            }
                                        }
                                
                                        if (!http_request) {
                                            alert('Abandon :( Impossible de créer une instance XMLHTTP');
                                            return false;
                                        }
                                        http_request.onreadystatechange = function() { traitementReponse(http_request,id_table,id_ligne); } //affectation fonction appelée qd on recevra la reponse
                                		// lancement de la requete
                                		http_request.open('POST', url, true);
                                		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
                                		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                                		
                                		data='id_a_supprimer='+id_ligne; //on envoie au script php le numéro de l'ID a supprimer
                                        http_request.send(data);
                                }
                                //fonction traitement de la réponse à la requette AJAX
                                function traitementReponse(http_request,id_table,id_ligne) {
                                	
                                	if (http_request.readyState == 4) {
                                		if (http_request.status == 200) {
                                					// cas avec reponse de PHP en mode texte:
                                			//chargement des elements reçus dans la liste
                                			var reponse=http_request.responseText;
                                			//alert(reponse);
                                			//si reponse positive c a d si la ligne a bien été supprimée par php on la supprime dans le tableau
                                			if(reponse="OK"){
                                				deleteLigne(id_table,id_ligne); //appel fonction delete ligne du tableau dans la page
                                			}
                                				
                                		} 
                                		else {
                                                alert('Un problème est survenu avec la requête.');
                                        }
                                    }
                                }
                                
                                //fonction supression de la ligne dans la page
                                function deleteLigne(id_table,id_ligne){
                                	var obj_table=document.getElementById(id_table);
                                	for (i=0;i<obj_table.rows.length;i++){
                                		if(obj_table.rows[i].id == id_ligne){
                                			var num_ligne_a_suppr=i;
                                		}
                                	
                                	}
                                	//alert("num a supprimer: "+num_ligne_a_suppr);
                                	obj_table.deleteRow(num_ligne_a_suppr);
                                
                                }
                                </script>
                                <?php
                                echo "<table id='table1' BORDER='2' CELLPADDING='10' CELLSPACING='1'>";
                                echo "<caption><h2><center>Source:</center></h2></br></caption>";
                                
                                echo "<tr>";
                                echo "<TH> ID </TH>";
                                echo "<TH> Poste </TH>";
                                echo "<TH> URL </TH>";
                                echo "<TH> Extension </TH>";
                                echo "<TH> $nbsp; </TH>"; //il faut absolument le meme nombre de colonnes
                                echo "</tr>";
                                
                                while ($donnees = mysql_fetch_array($recup_donnee))
                                {
                                	//echo $donnees['ID']; //ne mets pas d'echo en dehors des balises tr td
                                
                                	echo "<tr id='".$donnees['ID']."'>";
                                	echo "<td>" . $donnees['ID'] . "</td>";
                                	echo "<td>" . $donnees['Poste'] . "</td>";
                                	echo "<td>" . $donnees['URL'] . "</td>";
                                	echo "<td>" . $donnees['Extension'] . "</td>";
                                	echo "<td> <a href=\"javascript:makeRequest('suppression_ligne.php','table1','".$donnees['ID']."');\">supprimer ligne</a> </td>"; 
                                	echo "</tr>";
                                }
                                
                                
                                
                                echo "</table>";
                                ?>
                                
                                
                                
                                
                                
                                </html>
                                
                                
                                
                                et le script supression_ligne.php:
                                <?php
                                if(isset($_POST['id_a_supprimer'])){
                                
                                 $id_a_suprimer=$_POST['id_a_supprimer'];
                                 
                                 //la tu fais ta suppression dans la base
                                 //......
                                 //$suppr=mysql_query("DELETE.....
                                 //et la réponse a AJAX
                                 if($suppr){
                                	//la suppression s'est bien passee alors on repond OK
                                	echo "OK";
                                 }
                                 
                                 
                                 
                                 
                                 }
                                
                                
                                ?>
                                1. Salut,

                                  il faut que tu voi du coté de l'AJAX, parce que le js est uniquement coté client.