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

Langage PHP Discussion :

Formulaire BDD et rafraichissement de la page


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Formulaire BDD et rafraichissement de la page
    Bonjour.
    J'ai un projet qui entre par le fichier : index.php
    puis au travers d'une barre de navigation charge la div contenu issu du fichier contenuFormulaire.php
    qui lui même charge 2 articles au travers des fichiers choixSaisie.php et multisports.php
    En cliquant sur un lien du premier <article id="corps11">, on modifie le second <article id="corps12"> en chargeant le fichier reqAfficheMultisports.php

    Ce dernier affiche un tableau représentant les éléments d'une table sous forme de tableau.
    Ces données peuvent être modifiées, supprimées ou créées à partir de ce tableau et de cette page.

    Je ne sais pas si c'est plus clair, je me le suis schématisé comme suit :
    charge la div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="contenu">contenuFormulaire.php<\div>
    qui charge les 2 articles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <article id="corps11">choixSaisie.php<\aticle>
    <article id="corps121">multisports.php<\article>
    et choixSaisie charge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <article id="corps12">reqAfficheMultisports.php<\article>
    selon la proposition de :
    Citation Envoyé par 01001111 Voir le message
    Déjà si tu veux utiliser des variables en $_GET pour modifier le contenu de la page, en faisant les includes correspondants il faut les sépcifier au préalable dans ton menu:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <nav id="navig">
        <ul>
            <li><a href='index.php?p=accueil'>Accueil</a></li>
            <li><a href='index.php?p=formulaires''>Formulaires</a></li>
            <li><a href='index.php?p=resultats'>Résultats</a></li>
            <li><a href='index.php?p=parcours'>Parcours</a></li> 
        </ul>
    </nav>
    index.php ça suffit, c'est pas beau mais je t'expliquerai éventuellement ensuite comment le masquer avec mod_rewrite et un fichier .htaccess, si tu es sous apache.
    ensuite je te conseille de retenir les variables de page courante en session:
    Code php : 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
     
    <?php
    session_start(); // cette commande devra être appelée dans le fichier incluant à savoir index.php
    // toujours dans index.php
    if (isset($_GET['p'])) {
        $_SESSION['page'] = $_GET['p'];
    } else {
        $_SESSION['page'] = 'accueil';
    }
    ?>
    /*
    le reste du code index.php jusqu'à:
    */
    <div id="contenu"> 
    	<?php 
                     switch($_SESSION['page']) {
                             case "accueil":
                                       require_once ('/Vue/contenuIndex.php' );
                             break;
                             case "formulaires":
                                       require_once ('/Vue/contenuFormulaire.php' );
                             break;
                             case "resultats":
                                       require_once ('/Vue/contenuResultats.php' );
                             break;
                             case "parcours":
                                       require_once ('/Vue/contenuParcours.php' );
                             break;
                     }
             ?>
    </div>
    // puis la fin du fichier index.php avec le footer, le scripts (mieux à la fin parait-il) et ce que tu veux

    Donc mon fichier reqAfficheMultisports.php fait son boulot :
    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
    <?php
    require_once '../CONFIG/constantes.php';
    require_once MYSQL2;
     
    //print_r($_POST);
     
    // Fabrication de la requête SELECT
    $ma_requete = "SELECT * FROM multisports ORDER BY id_multisports; ";
     
     
    // Connexion au serveur mysqli et selection de la base "ma_base"
    $db_link = connect();
     
    // Envoi de la requête
    $rTables=mysqli_query($db_link,$ma_requete) or die(mysqli_error($db_link));
     
    //affichage des données
    		echo '<table>';
     
    			echo '<tr><td>id_multisports</td><td>Multisport</td><td></td></tr>';
     
    			while($Valeur = mysqli_fetch_assoc($rTables))
    			{
     
    					echo '<tr><td><a class="idModif" data-id="'.$Valeur['id_multisports'].'"  data-valeur="'.$Valeur['nom_multisports'].'" href="#">'.$Valeur['id_multisports'].'</a></td>
    					<td>'.$Valeur['nom_multisports'].'</td>
    					<td><a href="./BDD/reqCRUD.php?action=D&table=multi&id='.$Valeur['id_multisports'].'">Supprimer</a></td></tr>';
    		    // on affiche les informations de l'enregistrement en cours
     
    			}
    			echo '</table>';
    				echo '	
    							<form id="idform" name="formulaire" method="post" action="./BDD/reqCRUD.php?action=C">
    								<label id="msport" >Coucou</label>
    								<input name="multi" type="text" id="multi" value="">
    								
    								<input type="submit" name="Submit" value="Envoyer">
    
    							</form>
    ';
            echo "\n";
     
    		echo ' <div id="retourCreate"></div>';
     
      // Déconnexion
      mysqli_close($db_link);
     
    ?>
    <script src="./Contenu/CRUD.js"></script>
    et reqCRUD aussi :
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php
    require_once '../CONFIG/constantes.php';
    //require_once 'form_parcours.php';
    require_once MYSQL2;
     
    global $table;
    global $champ;
    global $valeur;
     
    if (!isset($_GET['action'])){
    	echo "erreur fonctionnelle, veuillez contacter l'administrateur : problème d'url" ; 
    	//header('Location: ../Vue/formulaire_saisies.php');
    	//exit();	
    }else{
    	if ($_GET['action']=='D'){
    	//function delete()
    		if (!isset($_GET['table'])){
    			echo "erreur fonctionnelle : pas de table selectionnée";
    			}
    		elseif (trim($_GET['table'])=='multi'){
    			$table = "multisports"; 
    			$valeur = trim($_GET['id']);
    			$champ = "id_multisports";
    			}
    		elseif (trim($_GET['table'])=='velo'){
    			$table = "velos"; 
    			$valeur = trim($_GET['id']);
    			$champ = "id_velos";
    			}
    		else {
    			echo "erreur fonctionnelle, veuillez contacter l'administrateur." ; 
    			}
    		//connexion
    			$db_link = connect();
     
    		// suupression
    			$req="DELETE FROM `".$table."` WHERE ((`".$champ."` = '".$valeur."'));";
     
    		//echo $req;
     
    		// Envoi de la requête
    			mysqli_query($db_link,$req) or die(mysqli_error($db_link));
     
    	print_r($req);
    	  // Déconnexion
    		disconnect();
     
    	}
     
    	if ($_GET['action']=='U'){
    	//function update()
    		if (isset($_POST['multi'])){
    			$table = "multisports"; 
    			$champ = "nom_multisports";
    			$valeur = trim($_POST['multi']);
    			$id = $_GET['id'];
    			}
    		elseif (isset($_POST['velo'])){
    			$table = "velos"; 
    			$champ = "nom_velos";
    			$valeur = trim($_POST['velo']);
    			$id = $_GET['id'];
    			}
    		else {
    			echo "erreur fonctionnelle, veuillez contacter l'administrateur." ; 
    			}
    		//connexion
    			$db_link = connect();
     
    		// FIN Récupération des champs sorties 
    			$req="UPDATE `".$table."`  SET `nom_multisports` = '".$valeur."' WHERE `id_multisports` = ".$id.";";
     
    		echo $req."<br>";
     
    		// Envoi de la requête
    			mysqli_query($db_link,$req) or die(mysqli_error($db_link));
     
    	print_r($req);
    	  // Déconnexion
    		disconnect();
    		}
     
    	if ($_GET['action']=='C'){
     
    	//function create()
    		if (isset($_POST['multi'])){
    			$table = "multisports"; 
    			$champ = "nom_multisports";
    			$valeur = trim($_POST['multi']);
    			}
    		elseif (isset($_POST['velo'])){
    			$table = "velos"; 
    			$champ = "nom_velos";
    			$valeur = trim($_POST['velo']);
    			}
    		else {
    			echo "erreur fonctionnelle, veuillez contacter l'administrateur." ; 
    			}
    		//connexion
    			$db_link = connect();
     
    		// FIN Récupération des champs sorties 
    			$req="INSERT INTO `".$table."` (`".$champ."`) VALUES ('".$valeur."');";
     
    		//	echo $req;
     
    		// Envoi de la requête
    			mysqli_query($db_link,$req) or die(mysqli_error($db_link));
     
    	//print_r($req);
    	  // Déconnexion
    		disconnect();
     
    		}
    header('Location: F:\Projet\Serveur\data\localweb\Projet\Controleur\multisports.php');
     
    exit();	
    }?>
    Ce que je n'arrive pas à faire c'est rafraichir la page modifiée, le header('location:...') me ramène au même endroit mais sans la modif, il faut que je rappelle la page multisports.php pour voir ma mise à jour.

    Merci de votre aide, j'ai été un peu long, mais je n'arrive pas à expliquer mieux.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ça marcherait sans doute mieux si tu appelais l'url de la page (quelque chose du genre header('Location:./multisports.php'); et non le chemin du fichier.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 38
    Points : 31
    Points
    31
    Par défaut
    et puis pour rappel

    La chaîne de caractères PHP simple ou double guillemet a une signification spéciale des antislashs. Donc, si \ doit être recherché avec une expression rationnelle \\, alors "\\\\" ou '\\\\' doit être utilisé dans le code PHP.

    http://php.net/manual/fr/regexp.reference.escape.php

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.
    C'est plus compliqué que ce que je pensais.

    Si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: ../Controleur/multisports.php');
    , je vais bien sur ce que génère multisports.php mais je n'ai plus de css, ni les templates hérités.
    Si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: ../index.php?p=formulaires');
    , j'arrive bien sur http://127.0.0.1/Projet/index.php?p=formulaires# mais évidemment, je n'ai plus ce que renvoie le GET /Projet/Controleur/multisports.php

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.Je vais essayer d'expliquer le plus clairement possible ce que j'ai et le résultat espéré côté "location".
    Merci de m'indiquer par quel bout prendre le problème :
    1 - faire une fonction location avec tous les require_once a prendre en compte en paramètres,
    2 - changer d’architecture et m'indiquer laquelle adopter,
    3 - ce qui doit être fait dans un tel cas (marche à suivre usuelle que je ne connais pas) ,
    Etc.

    Demande : je suis une page web qui affiche un tableau et propose un formulaire de saisie.
    Après avoir fait une saisie et appuyé sur le bouton valider, je souhaiterai avoir cette même page web avec le tableau.

    Merci de votre aide précieuse.

    L'architecture actuelle.

    Point d'entrée : index.php
    Code php : 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
     
    <?php
    session_start(); // cette commande devra être appelée dans le fichier incluant à savoir index.php
    // toujours dans index.php
    if (isset($_GET['p'])) {
        $_SESSION['page'] = $_GET['p'];
    } else {
        $_SESSION['page'] = 'accueil';
    }
    ?>
     
    <!DOCTYPE html>
    <html>
     
    <head>
    <meta charset="utf-8" />
    <title>Sports</title>
    </head>
     
    <body>	
    <?php require_once ('./Vue/Accueil/header.php' ); ?>
     
    <div id="contenu"> 
    	<?php 
                     switch($_SESSION['page']) {
                             case "accueil":
                                       require_once ('/Vue/contenuIndex.php' );
                             break;
                             case "formulaires":
                                       require_once ('/Vue/contenuFormulaire.php' );
                             break;
                             case "resultats":
                                       require_once ('/Vue/contenuResultats.php' );
                             break;
                     }
             ?>
    </div>
    Le header permet de changer la variable de session à formulaire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href='index.php?p=formulaires'>Formulaires</a></li>
    Ceci va charger contenuFormulaires qui proposera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php require_once './Vue/Accueil/choixSaisie.php'; ?>
    On va alors charger dans <article></article> le fichier velos.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <form id = "idform" name = "formulaire" method = "post" action = "./BDD/reqCRUD.php?action=C"> 
    	<label id="msport" ></label>	
    	<input name="velo" type="text" id="velo" value="">
     
            <input type="submit" name="Submit" value="Envoyer">
    </form>
     
    <div >
            <?php require_once '../BDD/reqAfficheTousLesvelos.php'; //listeVelos.php : Fabrication de la requête SELECT?>
    </div>
    Lorsque je saisi qqchose et que je valide je me retrouve sur la page contenuFormulaires mais je souhaite rester dans <article></article> avec le fichier velos.php

    Il est évident que je ne peux pas le faire avec :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Location: ../index.php?p=formulaires');
    qui se trouve dans repCRUD.php

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.
    J'ai modifié contenuFormulaire.php d’après ma proposition 1 :
    Code php : 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
     
    			<article id="corps12">
     
    				<h1>Saisie</h1>
     
    					<div id="monform">
    						<?php 
    						if (!isset($_GET['tableSaisie'])){
    							$tableSaisie = './Controleur/saisieSortie.php';
     
    						} else {
    							$tableSaisie = $_GET['tableSaisie'];				
    						}				
     
    						require_once $tableSaisie; //listeParcours.php : Fabrication de la requête SELECT
    						?>
    					</div>
     
    			</article>
    Du coup mon DOM ne se charge plus de la même manière et le jquery ne s’exécute pas complétement.
    CRUD.js
    Code javascript : 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
     
       $(document).ready(function(){ 
       console.log('coucou');
       var indicationAction = "";
       var tableBDD = "";
     
    		if($('table').length) {
    		 if ($('table').attr('id_table')=='velos'){
    			console.log('velos');
    			indicationAction = 'vélo';
    			tableBDD = 'V'
    			value_action = "#velo"
    		 }
    		 if ($('table').attr('id_table')=='multisports'){
    			indicationAction = 'sport';
    			tableBDD = 'S'
    			value_action = "#multi"
    		 }
    		 console.log(indicationAction);
     
    			$('#msport').html('Nouveau '+indicationAction+' : ');
     
    			$('tr:nth-child(even)').addClass('style1');
    			$('tr:nth-child(odd)').not($( 'tr' ).first()).addClass('style2');
     
    			$('.idModif').on('click',function(){
    				$('#msport').html('Modifier '+indicationAction+' : ');
     
    				var id = $(this).attr('data-id');
    				var valeur = $(this).attr('data-valeur');
     
    				console.log('id : '+id+'\n valeur : '+valeur+'\n')
     
    				console.log("./BDD/reqCRUD.php?action=U&tableBDD="+tableBDD+"&id="+id);	
    				$('#idform').attr("action","./BDD/reqCRUD.php?action=U&tableBDD="+tableBDD+"&id="+id);
    				$(value_action).attr("value",valeur);  
     
    				$('#retourCreate').html('<input type="button" id="" value="Nouveau" onclick="remetNouveau()">');
    				//onclickfonctionjs('')"
    			});	
    	    }
     });
    Le
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $('tr:nth-child(even)').addClass('style1');
    			$('tr:nth-child(odd)').not($( 'tr' ).first()).addClass('style2');
    s’exécute mais pas le
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#msport').html('Nouveau '+indicationAction+' : ');
    multisports.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    		<h1>Liste des multisports</h1>
     
    			<form id="idform" name="formulaire" method="post" action="./BDD/reqCRUD.php?action=C">
    				<label id="msport" >Coucou</label>
    				<input name="multi" type="text" id="multi" value="">
     
    				<input type="submit" name="Submit" value="Envoyer">
     
    			</form>
     
    			<div >
    				<?php require_once '/../BDD/reqAfficheMultisports.php'; //listeVelos.php : Fabrication de la requête SELECT?>
    			</div>

    Je ne sais plus comment construire mon DOM.
    Merci de votre aide.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bon ben...
    J'ai mis tous mes js dans le point d'entrée index.php et ça marche..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/09/2007, 11h20
  2. rafraichissement d'une page
    Par salmer dans le forum ASP
    Réponses: 2
    Dernier message: 19/04/2006, 16h53
  3. envoyer un formulaire a l'ouverture d'une page
    Par reski dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2006, 01h44
  4. [PHP-JS] [ComboBox] Rafraichissement de la page
    Par tchoukapi dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2006, 04h17
  5. Comment arreter le rafraichissement d'une page avec un popup
    Par Wanty dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 15h44

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