Header pour rester sur la même page

infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous!
Je m'explique: j'ai un formulaire en HTML/PHP, qui effectue des appels à des Procédures stockées (PS) sous Oracle. J'ai déjà mis en place la fonctionnalité permettant d'exporter les données de sortie des PS SQL au format csv. Ce que je voudrais maintenant c'est que l'utilisateur puisse aussi simplement afficher ces données dans un tableau sous le formulaire. Sachant que j'ai aussi crée une fonction (php) permettant à partir d'une requête SQL de créer un tableau html avec les données de sortie.
Ce que je n'arrive pas à faire, c'est faire en sorte que quand l'utilisateur clique sur un boutton 'afficher tableau' de mon formulaire, le tableau s'affiche.. Car on ne peut pas appeler de fonctions php dans l'html/php/javascript ..

12 réponses

Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
Il y a deux manière de procéder :

-soit en utilisant ajax : javascript qui interragit avec le php de manière asynchrone

-soit en utilisant ta fonction (php) permettant à partir d'une requête SQL de créer un tableau html avec les données de sortie : il faut que ton bouton d'extraction soit dans un formulaire avec une méthode POST , qui envoit les données ( id ou autre selon ce que ta fonction prend en paramètre ) vers un fichier php qui contient ta fonction et qui va renvoyer en sortie ( avec la méthode echo je suppose ) du html dans ta page .

Si tu as besoin de plus d'explication , un peu de code ne serait pas du luxe


0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse! oui je voudrais bien, enfin ce que je voudrais savoir c'est comment fais tu pour que le fichier php contenant ma fonction renvoie en sortie du html dans ma page??

Oui pas de problème, que veux tu que je t'envoie comme code??
0
Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
le code de ton formulaire html et celui de ton fonction de traitement en php ( et le traitement du formualire en même temps )


La réponse à ta question et la méthode echo() en php .
0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
je vais t'envoyer seulement une partie, car il est dynamique, donc le code est très long:
<?php
// récupération des variables
$no_type_plis = isset($_POST["typePlis"]) ? $_POST["typePlis"] : 0;

$aTypePlis = array(0=>"Veuillez sélectionner un choix",
                   1=>"Liste des doublons X",
                   2=>"Liste des doublons Y",);

?>
<script>
function telecharger_csv(){
if (document.nomForm.typePlis.value==0){
alert("Veuillez sélectionner un type de plis.");
}
else if ((document.nomForm.typePlis.value==1)||(document.nomForm.typePlis.value==2)){
    document.nomForm.type_plis_doublon.value = document.nomForm.typePlis[document.nomForm.typePlis.selectedIndex].text;
 var old_action=document.nomForm.action;
    document.nomForm.action="../int/telecharger_doublons.php";
    document.nomForm.submit();
    document.nomForm.action = old_action;
}
else{
    alert("Le système a rencontré un problème inattendu, veuillez recommencer.");
}
}
</script>
<form name="nomForm"  id="frm_filtre" method="post" action="?page=doublons_eti">    
<div align="center" style="z-index: 1";>
<table width="100%"  class="filtre" >	        
    
<!-- Type de plis id : type_plis-->
<tr> <td align="center">Type de plis</td></tr>
<tr>
        <td align='left'>
            <SELECT style="width: 250px; "name="typePlis">
                <?
			foreach($aTypePlis as $clef => $valeur) {
                            if(intval($no_type_plis)==intval($clef)) {
				$selected = "selected";
				}
                            else{
				$selected = "";
				}
			echo "<option ".$selected." value='".$clef."'>".$valeur."</option>"; 
                     }
		    ?>
            </SELECT>
        </td>
    </tr>
    
    
    <!-- Pour lancer la requête -->
    <tr>
       <td colspan="2" height="60" align="center">Export csv
               <a href='#' onClick='javascript:telecharger_csv(); '>        
               <img src='../Img/icones/ico_excel.gif' width='32' height='32' border='0' title='exporter le résultat au format csv'></a>
		</td>
    </tr>
    <tr>
        <td>
            <input type="button" value="Afficher le résultat dans un tableau" onclick='javascript: window.location.href="afficher_tableau.php"' >
        </td>
    </tr>
    <tr><br /></tr>
    


    <!-- Juste pour récupérer des variables-->
    <input type="hidden" name="type_plis_doublon" value=""> 
    <input type="hidden" name="nom_page" value="doublons_eti"> 
    
    </table>
</div>
</form> 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
ça c'était donc le formulaire

ma page afficher_tableau.php:
// récupération des variables
$no_type_plis = isset($_POST["typePlis"]) ? $_POST["typePlis"] : 0;

// connexion au serveur ..

switch ($no_type_plis){

case 1:
$sql = " ma requete sql";
                  $nom_cols=array();
                    $nom_col1="Date premier depot";
                  $nom_cols[]=$nom_col1;                  
                  echo afficher_tableau($sql, $nom_cols, $nb_ligne_par_page);              
                  break;


case 2: // meme principe


default:
echo 'no data';
break;


}


Et l'affichage se fait, sauf que il se fait sur une autre page : la page "afficher_tableau.php" ..
0
Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
je peux voir ta fonction afficher_tableau ?


0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Bien sur, tiens :
function afficher_tableau($requete, $nom_col, $nb_ligne_par_page, $page_courante = 0, $nom_form = "nomForm2") {
  global $DB ;
  
  $total_ligne = retourne("select count(*) from (" . $requete . ")");

  $total_page = intval($total_ligne / $nb_ligne_par_page)+($total_ligne % $nb_ligne_par_page ? 1 : 0);
  $plageLigneDebut = ($page_courante * $nb_ligne_par_page)+1;
  $plageLigneFin = ($page_courante * $nb_ligne_par_page + $nb_ligne_par_page);
  if($plageLigneFin > $total_ligne) { $plageLigneFin = $total_ligne; }


  $requete = "select R.* " .
             "  from (" .
             "        select ROWNUM as ligne, S.* from ( " . $requete . " ) S " .
             "       ) R ";
  $requete .= ($page_courante!=-1 ? " WHERE Ligne BETWEEN " . $plageLigneDebut . " and " . $plageLigneFin . " " : " ");

  $conn = oci_connect(/* connexion*/) ;
  $rs = oci_parse($conn, $requete) ;
  oci_execute($rs, OCI_DEFAULT);
  
  $retour = "\n<form name=\"".$nom_form."\" id=\"".$nom_form."\" method=\"post\"><div align=\"center\">\n";
  $retour .= "  <table align=\"center\" class=\"classeTab\" cellpadding=\"0\"  cellspacing=\"0\">\n";
  $retour .= " <br />   <tr>".presenter_ligne_titre($nom_col)."</tr>\n";
  $i=0;
  while($ligne = oci_fetch_row($rs)){
    $retour .= "    <tr class=\"".($i%2 ? "ligne1" : "ligne0")."\">";
    $retour .= presenter_ligne($ligne, $nom_col);
    $retour .= "</tr>\n";
	$i++;
  }
  $retour .= "  </table>\n";
  $retour .= ($page_courante!=-1 ? barre_navigation($page_courante, $total_page, $nom_form) : "");
  $retour .= "</div></form>\n";
  oci_free_statement($rs);
  oci_close($conn);
  return $retour;
} 


LA fonction barre_navigation affiche une barre avec des flèches pour naviguer dans les différentes pages du tableau (comme il n'est afficher que X lignes par X lignes)
0
Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
Je pense que le problème viens du fait qu'au lieu de submit le formulaire , au clic du bouton la page est redirigée en javascript , il n'y a donc pas d'exécution de la fonction:

<input type="button" value="Afficher le résultat dans un tableau" onclick='javascript: window.location.href="afficher_tableau.php"' >

cela redirige mais ne poste pas les informations du formulaire

$no_type_plis = isset($_POST["typePlis"]) ? $_POST["typePlis"] : 0;

il n'y a pas de valeur dans post , le switch ne fonctionne donc pas après etc ...

Je ne peux que vous conseiller de lire un peux de documentation concernant les formulaires en PHP
0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Le code que j'ai posté n'est pas excatement celui sur lequel je trvail (par soucis de confidentialité) mais mon switch fonctionne, comme je l'ai dit, les tableaux s'affichent, mais sur une autre page, comment dois-je faire pour qu'ils s'affichent sur la page courante??
0
Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
Mettre le code de traitement du formulaire dans la même page et pas sur une autre
0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, mais ça c'est pas possible je pense..
0
Arthur57530 Messages postés 264 Date d'inscription   Statut Membre Dernière intervention   8
 
Dans ce cas la ajax
0
infoxx Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Oui voila, ou jQuery..
0