IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème pour insérer des données au clique d'un lien


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut Problème pour insérer des données au clique d'un lien
    Bonjour,

    je ne sais pas si je suis exactement dans la bonne partie mais ça je le serais bien assez vite !...

    Commençons par le petit état des lieux :

    J'ai une page d'index composé de 3 parties (<div>). Un bandeau en haut, un menu horizontal en dessous et la partie contenu encore en dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <html>
    <?php
    Require('../../fcts/connexion.php');
    ?>
    <head>
     
    <script type="text/javascript" src="../../js/fonctions.js"></script>
     
    <title></title>
    </head>
     
    <link rel="stylesheet" type="text/css" href="../../css/style.css">
     
    <body>
    <div class="accueil_admin">
     
    <div id="bandeau_admin">
    <center>
    <br>
    <pre style="font-weight:bold;color=red;font-size:28;">/!\  ADMIN ONLY  /!\</pre>
    </center>
    </div>
     
    <!-- bloc menu -->
    <div id="menu_admin">
    	<dl>
    		<dt onmouseover="javascript:montre();"><a href="index_admin.php?section=textes">Modification des textes</a></dt>
    	</dl>
    	<dl>
    		<dt onmouseover="javascript:montre();"><a href="index_admin.php?section=domaines">Gestion des domaines</a></dt>
    	</dl>
    	<dl>			
    		<dt onmouseover="javascript:montre('smenu1');">Gestion des réalisations</dt>
    		<dd id="smenu1">
    			<ul>
    				<?php
    				connexion();
     
    				$result = request('SELECT id_domaine, nom, description FROM domaines');
     
    				while($row = mysql_fetch_row($result)){
    					$id = $row[0];
    					$nom = $row[1];
    					$desc = $row[2];
    					echo '<li><a href="index_admin.php?section=realisations&iddomaine='.$id.'">> '.$nom.'</a></li>';
    				};
     
    				// Deconnexion de la base de donnees
    				close_connexion();
    				?>
    			</ul>
    		</dd>
    	</dl>
    </div>
     
    <!-- bloc corps -->
    <div id="corps_admin">
    <?php 
    	if (isset($_GET ["section"])) include($_GET["section"].".php"); 
    ?>
    </div>
     
     
    </div>
    </body>
    </html>
    Ma partie corps seulement est recharger avec la page nécessaire lors du click sur un élément du menu. Je prend l'exemple de l'appel à ma page "domaines.php". Le code de cette page est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <body>
     
    <div>
    <table id="domaines" width="100%">
    	<tr>
    		<th colspan="3" style="border-bottom:1px solid black;">Modifier les domaines existants</th>
    	</tr>
    	<tr><td colspan="3"><br></td></tr>
    	<tr><th>Nom</th><th>Description</th></tr>
    	<?php
    	connexion();
     
    	$result = request('SELECT id_domaine, nom, description FROM domaines');
     
    	while($row = mysql_fetch_row($result)){
    				$id = $row[0];
    				$nom = $row[1];
    				$desc = $row[2];
    	echo '<tr>';
    	echo '<td rowspan="2" valign="top"><input type="text" size="30" id="nom_'.$id.'" value="'.$nom.'"></input></td>';
    	echo '<td rowspan="2"><textarea id="desc_'.$id.'" rows="3" cols="35">'.$desc.'</textarea></td>';
    	echo '<td><a href="javascript:Valid_domaine('.$id.');">Modifier la ligne</a></td>';
    	echo '</tr><tr>';
    	echo '<td><a href="javascript:Suppr_domaine('.$id.');">Supprimer la ligne</a></td>';
    	echo '</tr>';
     
    	echo '<tr>';
    	echo '<td colspan="3"><hr size="2"></td>';
    	echo '</tr>';
    	};
     
    	// Deconnexion de la base de donnees
    	close_connexion();
    	?>
     
    	<tr><td colspan="3"><br><br></td></tr>
     
    	<tr>
    		<th colspan="3" style="border-bottom:1px solid black;">Créer un nouveau domaine</th>
    	</tr>
    	<tr><td colspan="3"><br></td></tr>
    	<tr><th>Nom</th><th>Description</th></tr>
    	<tr>
    	<td valign="top"><input type="text" size="30" id="new_nom" value=""></input></td>
    	<td><textarea id="new_desc" rows="3" cols="35"></textarea></td>
    	<td><a href="javascript:New_domaine();">Créer</a></td>
    	<tr>
     
    </table>
    </div>
     
    </body>
    Le problème que j'ai c'est que je ne sais pas comment déclencher mon insertion de données dans la base de données lors du click sur le lien <a href="javascript:Valid_domaine('.$id.');">Modifier la ligne</a> par exemple.

    Au départ je pensais à une fonction javascript qui récupérerais les données à insérer grâce à des document.getElementById("nom_"+id_domaine) et qui appellerais ma fonction de 'requesting' en php mais ce n'est pas possible d'allier php dans du javascript. (après réflexion normal car js client et php serveur ...)

    Mais je vois pas trop comment faire...

    Je suis conscient que balancer mon code comme ça ne permet pas une super bonne compréhension donc si vous avez des question n'hésitez pas !!

    Bizoo

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Bonjour,

    Pour moi AJAX est ta réponse.

    Tu utilise AJAX pour appeler une page qui insert ton enregistrement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    J'ai vu pendant mes recherches que certains préconisait l'ajax mais je ne connait bien !
    C'est quoi exactement, est-ce reconnu par tous les navigateurs ? Faut-il une option ou un serveur spécial pour l'utiliser ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Ajax , n'est pas à proprement parler une technologie, c'est l'utilisation combinée du javascript et d'un language de programmation WEB(PHP,ASP,JSP,..)

    Tu trouveras des tutos un peu partout sur le web et bine sur sur ce site.

    En gros , tu appel une fonction javascript, qui appel une page PHP, dans ton cas.

    Cette page te retourne, ou pas, un résultat qui te permet de mettre la page du navigateur à jour.

    C'est la base pour rendre une page WEB dynamique.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    J'ai trouvé un petit truc en ajax qui me semble pouvoir marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function fonction ( ){
     
    		var texte = document.getElementById("champ").value;
     
    		var xhr_object = null; 
     
    	   if(window.XMLHttpRequest) // Firefox 
    	      xhr_object = new XMLHttpRequest(); 
    	   else if(window.ActiveXObject) // Internet Explorer 
    	      xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	   else { // XMLHttpRequest non supporté par le navigateur 
    	      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	      return; 
    	   } 
     
    	   xhr_object.open("POST", "./traitement.php", true);
     
    	   xhr_object.onreadystatechange = function() { 
    	      if(xhr_object.readyState == 4) {
    			 //alert(xhr_object.responseText); // DEBUG MODE
    			 // --- ICI le retour (c'est à dire tout ce qui est écrit dans le fichier de traitement)
    			 // --- est interprété, donc il suffi d'écrire du code JS dans traitement.php pour
    			 // --- qu'il soit interprété au retour.
    	         eval(xhr_object.responseText);
    		  }
    	   } 
     
    	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	   // --- ICI TU PASSE TES ARGUMENTS AU SCRIPT :
    	   var data = "donnee="+texte;
    	   xhr_object.send(data);
     
    }
    Le seul problème c'est que j'ai également lu que seul IE et FireFox l'interprétaient correctement ! Je fais quoi si un utilisateur a NetScape / Opera ou autre ! lol

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    Bon alors maintenant je me retrouve avec :

    mon lien sur ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:Valid_domaine('.$id.');">Modifier la ligne</a>
    qui appelle ma fonction javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function Valid_domaine(id_domaine){
     
    	var nom = document.getElementById("nom_"+id_domaine).value;
    	var desc = document.getElementById("desc_"+id_domaine).value;
     
    	var xhr_object = null; 
    	alert("Je suis en 1");
    	if(window.XMLHttpRequest) // Firefox 
    	    xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) // Internet Explorer 
    	    xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	else { // XMLHttpRequest non supporté par le navigateur 
    	    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	    return; 
    	} 
     
    	xhr_object.open("POST", "../fcts/domaines.php", true);
    	alert("Je suis en 2");
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	// --- ICI TU PASSE TES ARGUMENTS AU SCRIPT :
    	var data = "fonction=modif&id_domaine="+id_domaine+"&nom="+nom+"&desc="+desc;
    	alert("Je suis en 3");
    	xhr_object.send(data);
    	alert("Je suis en 4");
    }
    (j'ai bien successivement les valeurs 1,2,3,4 qui s'affichent en alert)
    qui est censé appellé ma fonction php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    Require('./connexion.php');
     
    echo "alert('Valeur a enregistrer dans la base : ".$_POST["id_domaine"]."');";
    echo "alert('Valeur a enregistrer dans la base : ".$_POST["nom"]."');";
    echo "alert('Valeur a enregistrer dans la base : ".$_POST["desc"]."');";
     
    connexion();
     
    if($_GET["section"] = "modif"){
    $result = request('UPDATE domaines SET nom = "'.$_POST["nom"].'", description = "'.$_POST["desc"].'" WHERE id_domaine = '.$_POST["id_domaine"]);
    }
     
    close_connexion();
     
    ?>
    Mais rien ne ce passe ... rien du tout ...

Discussions similaires

  1. [1.x] problème pour insérer des données
    Par BritsFan dans le forum Symfony
    Réponses: 1
    Dernier message: 09/12/2010, 08h32
  2. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  3. [Tableaux] Problème pour modifier des données
    Par Oli_Ifre dans le forum Langage
    Réponses: 8
    Dernier message: 11/04/2007, 15h33
  4. [LDAP] problème pour récupérer des données
    Par Bizoo dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/04/2007, 09h09
  5. Problème pour rentrer des données dans MySQL
    Par Sandara dans le forum Requêtes
    Réponses: 8
    Dernier message: 06/06/2006, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo