Problème avec if isset $_POST

Résolu/Fermé
Sarah - 7 déc. 2022 à 16:51
 Sarah - 7 déc. 2022 à 23:34

Bonjour.

Je suis debutant en PHP, et j'ai un problème dans mon code que je n'arrives pas à resoudre.

Dans mon projet j'ai 2 pages. 

Dans la 1ère page : J'ai 2 boutons : le bouton Ajout et le bouton Modifier. Si je clique sur le bouton Ajout je dois être redirigé vers la 2ème page avec un formulaire d'ajout et si je clique sur Modifier je dois être redirigé vers la deuxième page avec un formulaire de modification à la place du formulaire d'ajout.

La redirection et l'affichage est effectué sans problème, mais les boutons de la deuxième page ne sont pas détecté par le isset. Le deuxième if imbriqué n'est jamais pris en compte.

if(isset($_POST["redirection-page2-ajout"])){ 
    if(isset($_POST["boutonAjoutPage2"]){
        //Code bouton Ajout de la page 2
    }
}else if (isset $_POST["redirection-page2-modifier"]) {
    if(isset($_POST["boutonModifierPage2"){
        //Code bouton Modifier de la page 2
    }
}

Quand je clique sur les boutons qui se trouve dans la 2ème page le isset de "redirection-page2-ajout" qui a été récupéré dans la 1ère page est détruite donc il ne rentre jamais dans ma deuxième condition, ni dans la première.

Comment je peux résoudre le problème s'il vous plait ?

6 réponses

yg_be Messages postés 22998 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juillet 2024 1 496
7 déc. 2022 à 17:52

bonjour,

quand tu partages du code, peux-tu préciser de quelle page il s'agit?  veille aussi, bien sûr, à partager un code complet.

yg_be Messages postés 22998 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juillet 2024 1 496
7 déc. 2022 à 19:31

Tu dois donc prévoir du code pour faire ces différentes actions:

  1. afficher les 2 boutons : le bouton Ajout et le bouton Modifier.
  2. traiter un clic sur le bouton Ajout, afficher un formulaire ajout
  3. traiter un clic sur Modifier, afficher un formulaire de modification
  4. traiter la réponse au formulaire ajout
  5. traiter la réponse au formulaire modification

Si je débutais, je ferais cela en 5 pages, pour bien comprendre ce qui se passe.

Qu'as-tu prévu de faire?

0

Bonjour.

Le code vient de la 2ème page (celle qui est redirigé en fonction du bouton cliqué dans la 1ère).

La première est fonctionnelle, elle fait les redirections comme prévu, mais dans la 2ème page les boutons ne fonctionne pas (les boutons du formulaire de la 2ème page)

Oui, j'aurais souhaité le faire en plusieurs, mais dans mon cas on m'oblige de faire seulement 2 pages (Une page dans la laquelle, l'utilisateur choisi entre le bouton Ajouter et Modifier et une 2ème page dans laquelle on affichera soit un formulaire d'ajout soit un formulaire de modification du projet en fonction du bouton cliqué dans la première page). 

Les formulaires s'affichent dans la 2ème page mais les boutons ne fonctionnent pas 

Page1.php

<a href="page1.php">
<input type="submit" value="Ajout" value="redirection-page2-ajout" />
</div>

<a>
<form method="post" action="page1.php">
<input type="submit" value="Modifier" value="redirection-page2-ajout />
<form>

</div>

Page2.php

<?php if(isset($_POST["redirection-page2-ajout"])){ 
    if(isset($_POST["boutonAjoutPage2"]){
        //Code bouton Ajout de la page 2
    }
}else if (isset $_POST["redirection-page2-modifier"]) {
    if(isset($_POST["boutonModifierPage2"){
        //Code bouton Modifier de la page 2
    }
}

?>



boutonAjoutPage2 et boutonModifierPage2 sont les name des boutons.

Le code est très long (environ 400 lignes) sinon je l'aurais mis au complet.

jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
7 déc. 2022 à 20:41

Bonjour,

Dans ta page 1, actuellement, je ne vois qu'un seul FORM .

Donc, soit tu ne nous as pas montré le code COMPLET de cette page... soit il manque un FORM pour ton bouton ajouter.

Ensuite, tu as la même VALUE dans tes deux boutons... ça peut expliquer le souci je pense...

A la limite, n'hésites pas à ajouter un var_dump($_POST) avant tes IF de ta page 2

0
Désolé j'avais fait une erreur dans le code de la page1 que j'ai publié. 
redirection-page2-modifier et redirection-page2-ajouter c'est le name et non le value.

Sinon la page 1 fonctionne correctement et rédige la page vers la page 2 en affichant soit le formulaire d'ajout, soit le formulaire de modification en fonction du bouton cliqué.

Le problème c'est seulement au niveau de la page 2.

Les boutons de cette page ne marchent pas. En faisant le debug j'ai vu qu'on entre jamais dans ma condition

if(isset($_POST["boutonModifierPage2") et if(isset($_POST["boutonAjoutPage2"])quand on clique sur les boutons de la page .

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

Posez votre question
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
Modifié le 7 déc. 2022 à 23:32

Histoire que ton code soit propre, il devrait ressembler à un truc du genre

<?php
//------------------------------------------------------------------------------//
//toujours essayer de mettre le maximum de code php en dehors du html
// au début du fichier en général.
// ça facilite la maintenance de celui-ci...
//------------------------------------------------------------------------------//

//------------------------------------------------------------------------------//
//Affichage des erreurs PHP
//------------------------------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//------------------------------------------------------------------------------//
//connexion à la bdd
//------------------------------------------------------------------------------//
// il doit te manquer un require ... ou le code de connexion à ta bdd.
// je te laisse le remttre ici.


//------------------------------------------------------------------------------//
// Découpage du code en fonctions pour plus de lisibilité
//------------------------------------------------------------------------------//

function getPost($varName,$defaultValue=NULL)
  //Utilisation de l'écriture TERNAIRE ( IF/ELSE) pour récupérer les variables POST
  return isset($_POST[$varName]) ? $_POST[$varName] : $defaultValue;
} 


function getProjet($noProjetChoisi){
  global $conn;
  $sql = "SELECT NO_PROJET, NOM_PRO, MNT_ALLOUE_PRO, STATUT_PRO, DATE_DEBUT_PRO, DATE_FIN_PRO 
              FROM TP2_PROJET 
			 			  WHERE NO_PROJET = " . $noProjetChoisi;
  $stid = oci_parse($conn, $sql);
  oci_execute($stid); 
  return  oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS));
}

function getRapports($noProjetChoisi){
  global $conn;
  $sql = "select NOM_FICHIER_RAP, NOM_ETAT_RAP, NO_RAPPORT from TP2_RAPPORT " .
          "inner join TP2_RAPPORT_ETAT " .
          "on TP2_RAPPORT.CODE_ETAT_RAP = TP2_RAPPORT_ETAT.CODE_ETAT_RAP " .
          "where NO_PROJET = " . $noProjetChoisi;
      
  $stid = oci_parse($conn, $sql);
  oci_execute($stid);
  
  return  oci_fetch_all($stid, OCI_ASSOC+OCI_RETURN_NULLS);
}

function getEquipes($noProjetChoisi){
  global $conn;
  $sql = "select PRENOM_MEM, NOM_MEM, COURRIEL_MEM, MEM.NO_MEMBRE from TP2_MEMBRE MEM " .
        "inner join TP2_EQUIPE_PROJET EQ " .
        "on MEM.NO_MEMBRE = EQ.NO_MEMBRE " .
          "where EQ.NO_PROJET = " . $noProjetChoisi;
			   					
  $stid = oci_parse($conn, $sql);
  oci_execute($stid);
  
  return  oci_fetch_all($stid, OCI_ASSOC+OCI_RETURN_NULLS);
}

function updateProjet($nomProjetM, $mntAlloueProjetM, $statutProjetM, $dateDebutProjetM, $dateFinProjetM ){
  global $conn;
  if(!empty($nomProjetM) && !empty($mntAlloueProjetM) && !empty($statutProjetM) && !empty($dateDebutProjetM) && !empty($dateFinProjetM)){
        $requete_update = "update TP2_PROJET(NOM_PRO,MNT_ALLOUE_PRO,STATUT_PRO,DATE_DEBUT_PRO,DATE_FIN_PRO) " . // ta requete me semble étrange mais ça fait longtemps que je n'ai pas toucher à oracle...
              "set NOM_PRO = :nom, MNT_ALLOUE_PRO = :mntAlloue, STATUT_PRO = :statut, DATE_DEBUT_PRO = to_date(:dateDebut, 'YYYY-MM-DD'), DATE_FIN_PRO = to_date(:dateFin, 'YYYY-MM-DD') " .
              "where NO_PROJET = " . $noProjetChoisi ;
    
    $stid = oci_parse($conn, $requete_update);
    oci_bind_by_name($stid, ":nom", $nomProjetM);
    oci_bind_by_name($stid, ":mntAlloue", $mntAlloueProjetM);
    oci_bind_by_name($stid, ":statut", $statutProjetM);
    oci_bind_by_name($stid, ":dateDebut", $dateDebutProjetM);
    oci_bind_by_name($stid, ":dateFin", $dateFinProjetM);
    
     $reponse = oci_execute($stid);
     oci_free_statement($stid);
     return $reponse;
    
   
    }		    
}


function updateProjet($nom, $mnt_alloue,  $date_debut, $date_fin ,$statut_projet){
  global $conn;   
     $requete_insert = "insert into TP2_PROJET(NO_PROJET, NOM_PRO, MNT_ALLOUE_PRO, STATUT_PRO, DATE_DEBUT_PRO, DATE_FIN_PRO) " .
                "values(TP2_SEQ_PROJET.nextval, :nom, :mntAlloue, :statut, to_date(:dateDebut, 'YYYY-MM-DD'), to_date(:dateFin, 'YYYY-MM-DD')) ";
          
      $stid = oci_parse($conn, $requete_insert);
      oci_bind_by_name($stid, ":nom", $nom);
      oci_bind_by_name($stid, ":mntAlloue", $mnt_alloue);
      oci_bind_by_name($stid, ":statut", $statut_projet);
      oci_bind_by_name($stid, ":dateDebut", $date_debut);
      oci_bind_by_name($stid, ":dateFin", $date_fin);
      
     $reponse = oci_execute($stid);
     oci_free_statement($stid);
     return $reponse;        
}


//------------------------------------------------------------------------------//
// Récupération "propre" des variables POST et traitements
//------------------------------------------------------------------------------//

// le temps des tests ...
echo "Variables POST : <br><pre>";
var_dump($_POST); 
echo "</pre>";


$btnMettreAjour = getPost('btnMettreAjour');
$OkModifierProjet = getPost('OkModifierProjet');
$btnOkAjouter = getPost('btnOkAjouter');
$mode_mise_a_jour = getPost('mode-mise-a-jour');

$noProjetChoisi = getPost('projet');

$nomProjet ="";
$mntAlloueProjet  = "";
$statutProjet  = "";
$dateDebutProjet ="";
$dateFinProjet = "";
if($noProjetChoisi){
  $projet = getProjet($noProjetChoisi); // on fait appel à la fonction pour récupérer les infos
  $nomProjet = $projet["NOM_PRO"];
  $mntAlloueProjet  = $projet["MNT_ALLOUE_PRO"];
  $statutProjet  = $projet["STATUT_PRO"];
  $dateDebutProjet = $projet["DATE_DEBUT_PRO"];
  $dateFinProjet = $projet["DATE_FIN_PRO"];            
} 



if($btnMettreAjour || $OkModifierProjet){
    //Bouton OK - Mode Mise à jour
    $nomProjetM = getPost("nom_projet");
    $mntAlloueProjetM = getPost("mnt_alloue");
    $statutProjetM = getPost("statut_projet");
    $dateDebutProjetM = getPost("date_debut");
    $dateFinProjetM = getPost("date_fin");
    
    $reponse = updateProjet($nomProjetM, $mntAlloueProjetM, $statutProjetM, $dateDebutProjetM, $dateFinProjetM )
    if (!$reponse) {
      $erreurModificationProjet = "Un problème est survenue la modification. Veuillez revoir les informations saisies et reessayez";
    }else{
      $erreurModificationProjet = "Modification reussite";
    }
}

//Bouton OK (Mode - Ajout)
if($btnOkAjouter){
  $nom_projet = getPost("nom_projet");
  $mnt_alloue = (float) getPost("mnt_alloue");
  $statut_projet = getPost("statut_projet");
  $date_debut = getPost("date_debut");
  $date_fin = getPost("date_fin");

  if( $nom_projet && $mnt_alloue && $statut_projet && $date_debut && $date_fin ){    
    $reponse =  updateProjet($nom_projet, $mnt_alloue,  $date_debut, $date_fin ,$statut_projet);
    
    if (!$reponse) {
        $resultAjoutProjet = "Un problème est survenue lors de l'insertion. Veuillez revoir les informations saisies et reessayez";
    }else{
        $resultAjoutProjet = "Projet ajouté avec succès";
    }
      
  }else{
      $erreurAjoutProjet = "Veuillez remplir correctement tous les champs s'il vous plait";
  }
}


?>

<!DOCTYPE html>
<html>
	<head>
		<title>Un projet</title>
	</head>
	
	<body>
		<div class="main-div">
			<div>
				<!-- Include Header -->
			</div>
			
			<!-- Formulaire -->
			<?php 	

			
			if($mode_mise_a_jour){ 
			    $noProjetVisibilite = "";
			    
			  //Fin if(!empty($_POST["projet"]))?>
			    <h1>MISE À JOUR DU PROJET</h1>
			    <form method="post" action="un_projet.php">
			    		<div>
			    			<label for="no_projet">Numéro du projet</label>
			    			<input type="text" name="no_projet"  id="no_projet" value="<?=$noProjetChoisi?>" disabled />
			    		</div>
			   			<div>
			   				<label for="mnt_alloue">Nom </label>
			   				<input type="text" name="nom_projet" id="nom_projet" value="<?=$nomProjet?>"required/>
			   			</div>
			   			<div>
			   				<label for="mnt_alloue">Montant alloué </label>
			   				<input type="number" name="mnt_alloue" id="mnt_alloue" id="mnt_alloue" value="<?=$mntAlloueProjet?>" required/>
			   			</div>
			   			<div>
			   				<label for="date_debut">Début du projet</label>
			   				<input type="text" name="date_debut" id="date_debut" value="<?=$dateDebutProjet?>" required/>
			   			</div>
			   			<div>
			   				<label for="date_fin">Fin du projet</label>
			   				<input type="text" name="date_fin" id="date_fin" value="<?=$dateFinProjet?>" required />
			   			</div>
			   			<div>
			   				<label for="statut_projet">Statut du projet</label>
			   				<select name="statut_projet" id="statut_projet">
			   					<option hidden><?=$statutProjet?></option>
			   					<option value="Accepté">Accepté</option>
			   					<option value="Préliminaire">Préliminaire</option>
			   					<option value="Intermédiaire">Intermédiaire</option>
			   					<option value="Final">Final</option>
			   					<option value="Terminé">Terminé</option>
			   				</select>
			   			</div>
			   			<div>
			   				<label for="rapport">Rapport</label>
			   				<select name="rapport" id="rapport">
			   					<?php 
			   				   $rapports = getRapports($noProjetChoisi);
                    foreach($rapports as $rapport){
                      $noRapport = $rapport["NO_RAPPORT"];
                      $nomFichier = $rapport["NOM_FICHIER_RAP"];
                      $nomEtat = $rapport["NOM_ETAT_RAP"];
                      echo "<option value='" . $noRapport . "'>" . $nomFichier . " " . $nomEtat . "</option>";
                    } 
                  ?>
			   				</select>
			   			</div>
			   			<div>
			   				<label for="equipe">Équipe</label>
			   				<select name="equipe" id="equipe">
                    <?php 
                    $equipes = getEquipes($noProjetChoisi);
                     
                    foreach($equipes as $equipe){
                        $noMembre = $equipe["NO_MEMBRE"];
                        $nom = $equipe["NOM_MEM"];
                        $prenom = $equipe["PRENOM_MEM"];
                        $courriel = $equipe["COURRIEL_MEM"];
                        echo "<option value='" . $noMembre . "'>" . $nom . " " . $prenom . " " . $courriel . "</option>";
                    }
                  ?>
			   				</select>
			   			</div>
			   			
			   			<div>
			   				<input type="submit" value="OK" name="OkModifierProjet"/>
			   				<input type="submit" value="Annuler" name="btnAnnuler" />
			   			</div>	
			   			<p color="red"><?php $erreurModificationProjet?></p>	
			   		</form>	
			   		
			   		<div class="detailMem">
						<a href="un_membre.php?action=detailMembre&id=<?=$session_no_membre?>" >
							<input type="button" value="Details membre" name="detailMembre">
						</a>
				</div>	    
			    
			<?php 
			
			if(!$btnMettreAjour && !$OkModifierProjet){
      
      ?>
				<h1>AJOUT D'UN NOUVEAU PROJET</h1>			
				<form method="post" action="un_projet.php">
					<?php empty($erreurAjoutProjet) ? "" : "<p>" . $erreurAjoutProjet  . "</p>" ;?>
					<div>
			   			<label for="nom_projet">Nom </label>
			   			<input type="text" name="nom_projet" id="nom_projet" value=""required/>
			   		</div>
			   		<div>
			   			<label for="mnt_alloue">Montant alloué </label>
			   			<input type="number" name="mnt_alloue" id="mnt_alloue" id="mnt_alloue" value="" required/>
			   		</div>
			   		<div>
			   			<label for="date_debut">Début du projet</label>
			   			<input type="text" name="date_debut" id="date_debut" value="" pattern="^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$" required/>
			   		</div>
			   		<div>
			   			<label for="date_fin">Fin du projet</label>
			   			<input type="text" name="date_fin" id="date_fin" value="" pattern="^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$" required />
			   		</div>
			   		<div>
			   			<label for="statut_projet$">Statut du projet</label>
			   			<select name="statut_projet" id="statut_projet">
			   				<option hidden></option>
			   				<option value="Accepté">Accepté</option>
			   				<option value="Préliminaire">Préliminaire</option>
			   				<option value="Intermédiaire">Intermédiaire</option>
			   				<option value="Final">Final</option>
			   				<option value="Terminé">Terminé</option>
			   			</select>
			   		</div>
			   		
			   		<div>
			   			<input type="submit" value="OK" name="btnOkAjouter" />
			   			<input type="submit" value="Annuler" name="btnAnnuler" />
			   		</div>	
				</form>
				<?php empty($erreurAjoutProjet) ? "" : "<p>" . $resultAjoutProjet  . "</p>" ;?>
				
				
				<div class="detailMem">
				<a href="un_membre.php?action=detailMembre&id=<?=$session_no_membre?>" >
					<input type="button" value="Details membre" name="detailMembre">
				</a>
				</div>
			  
			<?php
			} //Fin else if Mode Ajout?>
				
			<div>
				<!-- Include Footer -->
			</div>
		</div> <!-- Fin main-div -->	
	</body>
</html>

<?php
 //Fermer la connexion à la BD
oci_close($conn); 
?>

Je te laisse compléter..


Merci !

Je ne connais pas encore assez bien les fonctions mais je vais l'essayer.

As-tu une idée sur le problème avec les boutons de ma deuxième page qui ne fonctionnait pas ?

0
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682 > Sarah
7 déc. 2022 à 23:29

Ton code contenait des erreurs ( et il y en a encore peut-être une ou deux (regarde mes commentaires ))

Par exemple, tu utilisais des variables avant qu'elles ne soit créées ( pour certains messages d'erreurs)

Ta requête d'insert me semble étrange

Tes IF/ELSE semblaient mal organisés

Bref, 

complète le code que je t'ai donné là où j'ai mis des commentaires ( la connexion à la bdd ) et teste le.

0