Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1739 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  utiliser la méthode POST et load('ur','div') en même temps

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utiliser la méthode POST et load('ur','div') en même temps

n°2196750
bloomingda​ls
Posté le 08-07-2013 à 13:30:32  profilanswer
 

Bonjour,
j'essaie depuis des heures de récupérer le contenu d'un champs texte suite à l'action onclick d'un bouton pour faire un traitement SQL et renvoyer le résultat dans un div de la même page. mais en vain.
en fait, les codes que j'ai essayé permettent soit d'afficher le résultat sur une autre page, soit de rester sur la même page et ne rien afficher: je n'arrive pas à faire les deux fonctions en même temps.
le problème est que la récupération du champs texte nécessite la méthode POST et le fait de charger le contenu sur la même page nécessite une la fonction load(url,div). Et apparamment ls deux fonctiosn sont incompatibles.
 
s'il vous palit aidez moi.
merci

mood
Publicité
Posté le 08-07-2013 à 13:30:32  profilanswer
 

n°2196752
sltpaulo
Posté le 08-07-2013 à 13:32:56  profilanswer
 

Bonjour,  
 
Plusieurs informations sont nécessaire pour t'aider :
1 - le code en question, ça peut être utile
2 - Essayes-tu d'utiliser l'AJAX?
 

n°2196756
bloomingda​ls
Posté le 08-07-2013 à 13:51:41  profilanswer
 

Je met à a disposition le code que j'utilise (en ajax)
pour commencer voila le code html de la page:

Code :
  1. <body>
  2.     <p id="jqChart" style="width: 750px; height: 350px; left: -15px; "> // 1er graphe
  3.     </p>
  4.     <p id="jqChart2" style="width: 750px; height: 300px; left: -15px;"> //2eme graphe
  5.     </p>
  6.   <form name = "myform">
  7.     <p align="center">
  8.        <input name="prefix" id="prefix" placeholder="enter AS number"/> champs texte + boutton submit sur la même ligne
  9.        <input type = "submit" name = "button1" id = "button1" value = "Number of prefixes" style="width: 25%; height: 33px;"/>
  10.     </p>
  11.   </form>
  12.    <p id="result"> paragraphe dans lequel je veux afficher le résultat
  13.    </p>
  14. </body>


 
voila le code ajax que j'utilise:

Code :
  1. $('#button1').click(function() {
  2.            //get sth value
  3.             var as = $('#as').val();
  4.            //make ajax call to 'abc.php' passing 'sth' parameter
  5.             $.post('/Routing/number_of_prefixes.php', { as:as }, function(data) {
  6.             //if $_POST['sth'] at PHP side is not null
  7.             if (data != null) {
  8.                 //show the data (in this case: $happy) in the div with id 'other' using '.html()' method
  9.                 $('#result').html(data);
  10.             }
  11.         });
  12.     });


 
et voila le fichier .php appelé lorsque le bouton est cliqué:

Code :
  1. <?php
  2. $db = mysql_connect('localhost', 'root', 'Orange2424');
  3. mysql_select_db('INX',$db)  or die('Erreur de sélection '.mysql_error());
  4.    $as = $_POST['prefix'];
  5.    $query2 = mysql_query("SELECT Number_of_Prefixes from Route_Per_AS where AS_num='".$as."'" ); 
  6.    while($donnees2 = mysql_fetch_array($query2)) {
  7.     $number2 = intval($donnees2["Number_of_Prefixes"]);
  8.     echo "AS $as advertises $number route(e)";
  9.     }
  10. ?>


 
j'espère que c'est dont tu as besoin, je te remercie pour ton aide

n°2196763
sltpaulo
Posté le 08-07-2013 à 14:13:14  profilanswer
 

Il y a un petit soucis dans ce que tu fais, car tu envoie un post et une requête AJAX en même temps.
 
Il y a deux solution, utiliser jQuery ou non, je vais te montrer la deuxième (moins belle) vu que je n'ai pas l'impression que tu utilise cette librairie:
 
page :  

Code :
  1. <body>
  2.         <p id="jqChart" style="width: 750px; height: 350px; left: -15px; "> // 1er graphe
  3.         </p>
  4.         <p id="jqChart2" style="width: 750px; height: 300px; left: -15px;"> //2eme graphe
  5.         </p>
  6.       <div name = "myform">
  7.         <p align="center">
  8.            <input name="prefix" id="prefix" placeholder="enter AS number"/> //champs texte + boutton submit sur la même ligne
  9.            <input type = "button" name = "button1" id = "button1" value = "Number of prefixes" style="width: 25%; height: 33px;"/>
  10. //ou
  11. <button  id = "button1" name = "button1" style="width: 25%; height: 33px;">Number of prefixes</button>
  12.         </p>
  13.       </div>
  14.        <p id="result"> paragraphe dans lequel je veux afficher le résultat
  15.        </p>
  16.     </body>


 
Ensuite  
 
ton code javascript:
 

Code :
  1. $('#button1').click(function() {
  2.                //get sth value
  3.                 var as = $('#as').val();
  4.                //make ajax call to 'abc.php' passing 'sth' parameter
  5.                 $.post('/Routing/number_of_prefixes.php', { as:as }, function(data) {
  6.                 //if $_POST['sth'] at PHP side is not null
  7.                 if (data != null) {
  8.                     //show the data (in this case: $happy) in the div with id 'other' using '.html()' method
  9.                     $('#result').html(data);
  10.                 }
  11.             });
  12.         });


 
Problème de ce code, c'est que tu initialises ton event peut-être avant que le bouton soit créé donc en gros tu fais dans le vide, tu peux donc remplacer par : $('#button1').die('click').live('click', function() {
 
ou off/on (die/live)
 
ensuite autre chose, tu vas chercher la valeur (var as = $('#as').val();) dans un élément ou l'id est "as" tu dois changer cette ligne par :
var as = $('#prefix').val();
 
donc ça donne :
 

Code :
  1. $('#button1').die('click').live('click', function() {
  2.    //$('#button1').off('click').on('click', function() {
  3.                //get sth value
  4.                 var as = $('#prefix').val();
  5.                //make ajax call to 'abc.php' passing 'sth' parameter
  6.                 $.post('/Routing/number_of_prefixes.php', { as:as }, function(data) {
  7.                 //if $_POST['sth'] at PHP side is not null
  8.                 if (data != null) {
  9.                     //show the data (in this case: $happy) in the div with id 'other' using '.html()' method
  10.                     $('#result').html(data);
  11.                 }
  12.             });
  13.         });


 
Dis moi ce que ça donne

n°2196772
bloomingda​ls
Posté le 08-07-2013 à 14:54:02  profilanswer
 

Merci ça marche mais il faudra en plus faire quelque changement car j'ai utilisé un id ="as" qui n'existe pas , je l'ai remplacé avec id="prefix".
mais pour le reste çava bien.
 
j'ai maintenant un autre petit souci,  
j'ai modifié le script php pour qu'il fasse des tests sur ce qui  est saisi par l'utilisateur dans le champs texte et renvoyer une boite d'alerte en fonction de l'erreur.
le problème est que les boits d'alertes n'aparaissent jamais au premier essai.
par exemple la valeur 0 est incorrecte et doit renvoyer une alerte "Invalid ASN".
quand je saisi la valeur 0 et que je clique sur le bouton la boite d'alerte n'apparait pas, il faut que je refasse la saisi une deuxième fois pour que ça fonctionne.
d'où vient le problème ??
 
voici le code

Code :
  1. <?php
  2. $db = mysql_connect('localhost', 'root', 'Orange2424');
  3. mysql_select_db('INX',$db)  or die('Erreur de sélection '.mysql_error());
  4.    $as = $_POST['prefix']; 
  5.     if (($as >= 65512) && ($as <= 65535))
  6.     {
  7.        // as privé
  8.        ?>
  9.          <script language="Javascript">
  10.          alert('Please enter a public ASN')
  11.          document.location.href='IHM.php#'
  12.          </script>
  13.        <?php
  14.     }
  15.      
  16.     else if (($as < 1) || ($as > 65535))
  17.     {
  18.       // asn invalide
  19.       ?>
  20.          <script language="Javascript">
  21.          alert('Invalid ASN')
  22.          document.location.href='IHM.php#'
  23.          </script>
  24.       <?php
  25.     }
  26.    
  27.      else
  28.     {
  29.       $query2 = mysql_query("SELECT Number_of_Prefixes from Route_Per_AS where AS_num='".$as."'" ); 
  30.       while($donnees2 = mysql_fetch_array($query2)) {
  31.       $number2 = intval($donnees2["Number_of_Prefixes"]);
  32.       echo "AS $as advertises $number2 route(s)";
  33.     }}
  34. ?>

n°2196775
sltpaulo
Posté le 08-07-2013 à 15:07:22  profilanswer
 

C'est normal, ton script :

Code :
  1. <script language="Javascript">
  2.          alert('Invalid ASN')
  3.          document.location.href='IHM.php#'
  4.          </script>


 
est exécuté niveau serveur et non niveau navigateur client (surtout que tu essayes d'exécuter du javascript sur ton serveur)
 
moi je te propose de faire comme ça :
 
niveau php-serveur :  
 

Code :
  1. <?php
  2.     $db = mysql_connect('localhost', 'root', 'Orange2424');
  3.     mysql_select_db('INX',$db)  or die('Erreur de sélection '.mysql_error());
  4.        $as = $_POST['prefix'];
  5.         if (($as >= 65512) && ($as <= 65535))
  6.         {
  7.            // as privé
  8.           echo 'erreur_1';
  9.         }
  10.        
  11.         else if (($as < 1) || ($as > 65535))
  12.         {
  13.           // asn invalide
  14.           echo 'erreur_2';
  15.         }
  16.      
  17.          else
  18.         {
  19.           $query2 = mysql_query("SELECT Number_of_Prefixes from Route_Per_AS where AS_num='".$as."'" );
  20.           while($donnees2 = mysql_fetch_array($query2)) {
  21.           $number2 = intval($donnees2["Number_of_Prefixes"]);
  22.           echo "AS $as advertises $number2 route(s)";
  23.         }}
  24.     ?>


 
coté javascript :
 

Code :
  1. $('#button1').die('click').live('click', function() {
  2.        //$('#button1').off('click').on('click', function() {
  3.                    //get sth value
  4.                     var as = $('#prefix').val();
  5.                    //make ajax call to 'abc.php' passing 'sth' parameter
  6.                     $.post('/Routing/number_of_prefixes.php', { as:as }, function(data) {
  7.                     //if $_POST['sth'] at PHP side is not null
  8.                     if (data != null) {
  9.                         if(data == 'erreur_1'){
  10. alert('Please enter a public ASN');
  11.          document.location.href='IHM.php#';
  12.                         }else if(data == 'erreur_2'){
  13. alert('Invalid ASN');
  14.          document.location.href='IHM.php#';
  15.                         }else{
  16.                               $('#result').html(data);
  17.                         }
  18.                     }
  19.                 });
  20.             });

n°2196777
bloomingda​ls
Posté le 08-07-2013 à 15:33:34  profilanswer
 

merci mais ça ne fonctionne pas. Non seulement le problème n'a pas été résolu mais en plus les messages des boites d'alertes s'affichent dans le div "result" au lieu d'apparaitre dans un pop up, autre chose: le cas ou la requête SQL retourne rien n'est plus pris en considération
voici mon code actuel:

Code :
  1. $('#button1').click(function() {
  2.             var prefix = $('#prefix').val();
  3.             $.post('/Routing/number_of_prefixes.php', { prefix:prefix }, function(data) {
  4.             if (data != null) {
  5.                 if (data == 'prive') {
  6.                 alert("Please enter a public autonomous system number" );}
  7.                 else if (data == 'invalide') {
  8.                 alert("Invalid autonomous system" );}
  9.                 else {
  10.                 $('#result').html(data);}
  11.                }
  12.             else {
  13.                 alert("No information currently available" );}
  14.            
  15.         });
  16.     });


 
et voila le code PHP:

Code :
  1. <?php
  2. $db = mysql_connect('localhost', 'root', 'Orange2424');
  3. mysql_select_db('INX',$db)  or die('Erreur de sélection '.mysql_error());
  4.    $as = $_POST['prefix']; 
  5.     if (($as >= 65512) && ($as <= 65535))
  6.     {
  7.        echo "prive";
  8.     }
  9.      
  10.     else if (($as < 1) || ($as > 65535))
  11.     {
  12.        echo "invalide";
  13.     }
  14.    
  15.      else
  16.     {
  17.       $query2 = mysql_query("SELECT Number_of_Prefixes from Route_Per_AS where AS_num='".$as."'" ); 
  18.       while($donnees2 = mysql_fetch_array($query2)) {
  19.       $number2 = intval($donnees2["Number_of_Prefixes"]);
  20.        }
  21.    
  22.       if ($number2 != null)
  23.         {
  24.            echo "AS $as advertises $number2 route(s)";
  25.         }
  26.     }
  27. ?>

n°2196778
sltpaulo
Posté le 08-07-2013 à 15:47:36  profilanswer
 

regare avec un console.log ce que te retourne data en valeur

n°2196779
bloomingda​ls
Posté le 08-07-2013 à 15:57:04  profilanswer
 

rien n'est affiché

n°2196784
sltpaulo
Posté le 08-07-2013 à 16:20:16  profilanswer
 

En faisant ça :
 

Code :
  1. $('#button1').click(function() {
  2.                 var prefix = $('#prefix').val();
  3.                 $.post('/Routing/number_of_prefixes.php', { prefix:prefix }, function(data) {
  4. console.log(data);
  5.                 if (data != null) {
  6.                     if (data == 'prive') {
  7.                     alert("Please enter a public autonomous system number" );}
  8.                     else if (data == 'invalide') {
  9.                     alert("Invalid autonomous system" );}
  10.                     else {
  11.                     $('#result').html(data);}
  12.                    }
  13.                 else {
  14.                     alert("No information currently available" );}
  15.              
  16.             });
  17.         });


 
tu ne vois rien dans ta console d'erreur (par exemple firebug si tu utilise Firefox)

mood
Publicité
Posté le 08-07-2013 à 16:20:16  profilanswer
 

n°2197029
bloomingda​ls
Posté le 10-07-2013 à 13:16:07  profilanswer
 

Bonjour,  
j'ai modifié le code et j'ai fini par avoir celui ci, il est appellé par action d'un formaulaire qui se trouve sur ma page.
le code fonctionne très bien pour tous les cas d'erreur et les boites d'alerte s'affiche sans problème.
S'il n'y a aucune erreur, je veux retourner le résultat sur la même page dans le div "résult" en utilisant la ligne ajax suivante:

Code :
  1. (#result).html(ma variable);


le problème est que cette ligne ne s'exécute pas depuis mon fichier php. pourtatnt lorsqu je suis sur la page html elle fonctionne très bien. Est ce qu'il faut être sur la même page pour que le duv "result" soit visible??
voici en tout cas le code php:

Code :
  1. <?php
  2. $db = mysql_connect('localhost', 'root', 'Orange2424');
  3. mysql_select_db('INX',$db)  or die('Erreur de sélection '.mysql_error());
  4.     $as = $_POST['prefix']; 
  5.     if (($as >= 65512) && ($as <= 65535))
  6.     {
  7.       echo "<script language='Javascript'>
  8.           alert('Please select a public ASN.');
  9.           history.back();
  10.           </script>";
  11.     }
  12.      
  13.     else if (($as < 1) || ($as > 65535))
  14.     {
  15.        echo " <script language='Javascript'>
  16.           alert('Invalid ASN.');
  17.           history.back();
  18.           </script>";
  19.     }
  20.    
  21.      else
  22.     {
  23.       $query2 = mysql_query("SELECT Number_of_Prefixes from Route_Per_AS where AS_num='".$as."'" ); 
  24.       while($donnees2 = mysql_fetch_array($query2)) {
  25.       $number2 = intval($donnees2["Number_of_Prefixes"]);
  26.        }
  27.       if ($number2 != null)
  28.         {
  29.            echo "<script language='Javascript'>
  30.                  $('#result').html('AS $as advertises $number2 route(s)'); ce cas de figure me renvoie une page blanche
  31.                  </script>";
  32.         }
  33.       else
  34.         {
  35.           echo " <script language='Javascript'>
  36.                  alert('No information currently available for this AS.');
  37.                  history.back();
  38.                  </script>";
  39.         }
  40.     }
  41. ?>


 
merci

n°2197166
sltpaulo
Posté le 11-07-2013 à 13:48:46  profilanswer
 

Est-ce que je pourrais avoir tout le code? (Histoire que je le fasse tourner sur ma machine pour voir (tu peux me l'envoyer en mp également))
 
Sinon, c'est très moche de faire comme ça et tu risque d'avoir pas mal de problème en fonction des navigateurs, notamment IE.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  utiliser la méthode POST et load('ur','div') en même temps

 

Sujets relatifs
génération automatique d'un emploie du temps_windevGestion du temps entre deux commandes?
changer printf par une autre methode[Résolu] Besoin aide calcul temps en PHP
Temps de développement entre PHP/Java/Flashutiliser un "cache" pour accélérer l'accès à des données [résolu]
Problème d'affectation ( methode hongroise )[RESOLU] problème de temps dans un userform
Pourquoi un ajout obligatoire de méthode avec MouseListener ?Utiliser librairies R.euters E.ikon sur Excel VBA
Plus de sujets relatifs à : utiliser la méthode POST et load('ur','div') en même temps


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR