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 :

Valeur POST par defaut


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable financier
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable financier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Valeur POST par defaut
    Bonsoir !

    Après des heures de prise de tête et de consultation de forums divers et variés, je bute sur le problème suivant (probablement dû à mon très petit niveau en php) :

    1- J'ai une page menu.php avec des liens vers des pages de présentation des travaux d'un artiste. Chaque rubrique du menu vise à présenter des travaux de nature différente.
    2- J'ai pour chaque page de présentation un sous-menu.php qui vise à présenter divers exemples de ces travaux. Il s'agit d'input type submit.
    3- Enfin, sur chaque page de présentation, j'ai un diaporama correspondant à chaque input submit.

    Le diaporama est lancé onload.
    Les variables du diaporama se modifient en fonction de la valeur des $_POST de cette manière :
    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
    <?php
    	foreach($_POST as $index=>$valeur)
     
    	if(isset($_POST['M01'])){
    	$vignette='M1';
    	$chemin='Images/M1/image';
    	$nbre=26;
    	$comment='Faux-bois et marqueteries de bois - Diverses essences';
    	$ref='Particuliers & professionnels';
    	}
    	elseif(isset($_POST['M02'])){
    	$vignette='M2';
    	$chemin='Images/M2/image';
    	$nbre=15;
    	$comment='Fausses-pierres et marqueteries de pierres - Divers minéraux';
    	$ref='Particulier & professionnels';
    	}
    etc etc.

    Tout ceci fonctionne très bien SAUF que j'aimerais qu'un diaporama s'exécute par défaut, à partir du menu principal, c'est-à-dire au premier chargement de la page de présentation et avant que le visiteur ait cliqué sur quelque input que ce soit.
    J'ai tenté de faire précéder mon code par :
    if(!isset($_POST) mais ça ne fonctionne pas
    J'ai également tenté :
    if(empty($_POST) mais ça ne fonctionne pas non plus.
    Enfin, j'ai essayé tout un tas de trucs hyper tordus que je n'ose même pas vous reproduire ici et qui bien sûr n'ont pas fonctionné non plus.

    Je suis sûre que quelqu'un détient une solution très simple... que je trouve pas.

    Par avance merci pour vos conseils, suggestions, et autres propositions qui calmerait mon mal de tête...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quoi sert le foreach ?

    Sinon plutôt d'avoir M01, M02 etc. tu dois seulement faire
    et ton code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (isset($_POST['M'])) {
        if ($_POST['M'] == '01') {
            .....
        }
    }
    else {
       // par defaut
     
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    peux-tu montrer ta page menu.php et comment tu construis tes input type submit ?

    Je suis persuadé qu'on peut optimiser tout ça.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Responsable financier
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable financier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Sabotage,
    Je te remercie pour cette suggestion. Cependant, y aurait-il un autre moyen que de donner une valeur à l'input : en effet, je ne souhaite pas qu'apparaisse de value dans les sous-menu car ces sous-menu ont l'apparence de petites vignettes photos. Ce serait dommage d'y inscrire quelque chose car le site est plutôt axé sur du visuel.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Responsable financier
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable financier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Jreaux62,

    Merci à toi aussi de bien vouloir t'intéresser à mon petit souci.

    1- voici la page menu.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
    17
    18
    19
    20
    21
    22
    23
    <link href="styleguigui.css" rel="stylesheet" type="text/css" />
     
     
    <div id="left">
     
    	<div id="menu">
    		<p style="line-height:2em";>
    		<a href="index.php">Accueil</a><br />
            <a href="trompeloeil.php">Trompe-l'oeil</a><br />
            <a href="fresques.php">Fresques</a><br />
            <a href="ambiances.php">Ambiances</a><br />
            <a href="matieres.php">Matières-patines</a><br />
            <a href="ornementation.php">Ornementation</a><br />
            <a href="#">Infos</a>
            </p>
    	</div>
     
        <div id="cpyr">
        	<p><a href="">Mentions légales</a><p/>
    		<p style="font-size:12px;">&copy; Copyright</p>
    	</div>
     
    </div>
    2- Voici le sous-menu fresques.php (les autres sous-menus sont construits de la même manière) :

    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
    <link href="styleguigui.css" rel="stylesheet" type="text/css">
    	<div id="sousmenu">
       	   		<p style="text-align:right">
     
                <form name="fresques" method="post" action="fresques.php">
    			<input type="submit" name="F01" value="" style="background-image:url(Images/MiniPhotos/F01.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F02" value="" style="background-image:url(Images/MiniPhotos/F02.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F03" value="" style="background-image:url(Images/MiniPhotos/F03.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F04" value="" style="background-image:url(Images/MiniPhotos/F04.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F05" value="" style="background-image:url(Images/MiniPhotos/F05.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F06" value="" style="background-image:url(Images/MiniPhotos/F06.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F07" value="" style="background-image:url(Images/MiniPhotos/F07.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F08" value="" style="background-image:url(Images/MiniPhotos/F08.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F09" value="" style="background-image:url(Images/MiniPhotos/F09.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
                <input type="submit" name="F10" value="" style="background-image:url(Images/MiniPhotos/F10.jpg); border:none; width:90px; height:90px; margin-bottom:3px;"/>
    			</form>
    			</p>
     
        </div>
    3- Et enfin, voici la page fresques.php (là aussi, les autres pages de présentation sont construites de la même manière) :

    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
    <?php
    	foreach($_POST as $index=>$valeur)
     
    	if(isset($_POST['F01'])){
    	$vignette='F1';
    	$chemin='Images/F1/image';
    	$nbre=3;
    	$comment='Espace enfants du magasin';
    	$ref='Leroy Merlin - Gennevilliers';
    	}
    	elseif(isset($_POST['F02'])){
    	$vignette='F2';
    	$chemin='Images/F2/image';
    	$nbre=4;
    	$comment='Sous la tente de Robinson';
    	$ref='Particulier - Paris';
    	}
    	elseif(isset($_POST['F03'])){
    	$vignette='F3';
    	$chemin='Images/F3/image';
    	$nbre=8;
    	$comment='';
    	$ref='';
    	}
    	elseif(isset($_POST['F04'])){
    	$vignette='F4';
    	$chemin='Images/F4/image';
    	$nbre=4;
    	$comment='Salle de séminaires';
    	$ref='Hôtel Trianon Palace - Versailles';
    	}
    	elseif(isset($_POST['F05'])){
    	$vignette='F5';	
    	$chemin='Images/F5/image';
    	$nbre=8;
    	$comment='Restaurant d\'entreprise';
    	$ref='La Défense';
    	}
    	elseif(isset($_POST['F06'])){
    	$vignette='F6';
    	$chemin='Images/F6/image';
    	$nbre=3;
    	$comment='Hall du magasin';
    	$ref='Leroy Merlin - Gennevilliers';
    	}
    	elseif(isset($_POST['F07'])){
    	$vignette='F7';
    	$chemin='Images/F7/image';
    	$nbre=4;
    	$comment='Salle de restaurant';
    	$ref='Les Trois Marches - Versailles';
    	}
    	elseif(isset($_POST['F08'])){
    	$vignette='F8';
    	$chemin='Images/F8/image';
    	$nbre=1;
    	$comment='Avec vue sur la mer';
    	$ref='Particulier - Paris';
    	}
    	elseif(isset($_POST['F09'])){
    	$vignette='F9';
    	$chemin='Images/F9/image';
    	$nbre=2;
    	$comment='Villa Toscane';
    	$ref='Particulier - Paris';
    	}
    	elseif(isset($_POST['F10'])){
    	$vignette='F10';
    	$chemin='Images/F10/image';
    	$nbre=1;
    	$comment='Dans la jungle indienne';
    	$ref='Particulier - Paris';
    	}
    ?>
     
    <script>
    var numero=0;
    var cheminImage='<?php echo $chemin ; ?>';
    var extension=".jpg";
    var nbre='<?php echo $nbre; ?>';
     
    function diaporama(){
    	numero++;
    	if(numero>nbre){
    		numero=1;
    	}
     
    	var source=cheminImage+numero+extension;
    	document.getElementById("imageDiapo").src=source;
    	setTimeout("diaporama()", 2000);
     
    }
    </script>
     
    <link href="styleguigui.css" rel="stylesheet" type="text/css" />
    </head>
    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
    <body onload="diaporama();">
     
     
     
    <div id="wrapper">
     
    	<?php
    	include ("entete.php");
    	?>
     
     
    	<?php
    	include ("menu.php");
    	?>
     
     
     
        <div id="presentation">
                <div id="diaporama">
            		<p style="text-align:center;">
                     <img src="Images/<?php $vignette ?>/image" name="imageDiapo" id="imageDiapo" />
                    </p>
          		</div>
     
                 <div id="reference">        	        
            	    <p><?php echo $comment; ?></p>
                    <p style="font-style:italic; font-weight:400"><?php echo $ref;?></p>
             	</div>
         </div>
     
    	<?php
    	include ("sousmenuF.php");
    	?>
     
     
    </body>
    </html>
    Simplement pour rappel de mon petit souci, je souhaite qu'à la première ouverture de la page fresques.php, un diaporama se lance qui soit différent de ceux lancé par les $_POST du sous-menu.php. Or, actuellement, tant que l'on a pas cliqué sur un des sous-menu, la page est vide et pire, une erreur s'affiche.
    J'étais très contente d'être arrivée jusque là, étant complètement novice, et suis maintenant très frustrée de ne pas pouvoir finaliser...

    Encore une fois, merci par avance à tous pour votre aide...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    on peut en effet optimiser tout ça

    1/ menu
    En HTML5, on utilise la balise <nav> pour définir un menu de navigation, ainsi qu'une liste à puces <ul><li>.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <nav id="menu">
    	<ul>
    		<li><a href="index.php">Accueil</a></li>
            	<li><a href="trompeloeil.php">Trompe-l'oeil</a></li>
            	<li><a href="fresques.php">Fresques</a></li>
            	<li><a href="ambiances.php">Ambiances</a></li>
            	<li><a href="matieres.php">Matières-patines</a></li>
            	<li><a href="ornementation.php">Ornementation</a></li>
            	<li><a href="#">Infos</a></li>
    	</ul>
    </nav>
    Pour le CSS (au minimum) :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #menu ul { list-style-type:none; }
    #menu ul li { margin:2px; }
    #menu ul li a { display:block; padding:5px; }
    2/ Sous-menu
    On peut se faciliter la vie (et la maintenance) avec un array.
    D'autant qu'il manque un descriptif (= accessibilité) sur chacun des input.
    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
    <?php
    $sousmenu_array = 
    	array(
    		1 => array(
    			'vignette' 	=> 'F01',
    			'desc'	=> 'Espace enfants du magasin',
    			),
    		2 => array(
    			'vignette' 	=> 'F02',
    			'desc'	=> 'Sous la tente de Robinson',
    			),
    		3 => array(
    			'vignette' 	=> 'F03',
    			'desc'	=> '',
    			),
    		4 => array(
    			'vignette' 	=> 'F04',
    			'desc'	=> 'Salle de séminaires',
    			),
     
    		// et ainsi de suite....
    	);
     
    ?>
    	<nav id="sousmenu">
     
    		<form name="fresques" method="post" action="fresques.php">
    		<ul>
    <?php		foreach( $sousmenu_array as $smid => $smenu)
    			{
    ?>
    			<li><input type="submit" name="sousmenuid" value="<?php echo $smid; ?>" title="<?php echo $smenu['desc']; ?>" style="background-image:url(Images/MiniPhotos/<?php echo $smenu['vignette']; ?>.jpg);"/></li>
    <?php
    			}
    ?>
    		</ul>
    		</form>
     
        </nav>
    Le CSS :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #sousmenu ul {
    	list-style-type:none;
    }
    #sousmenu ul li {
    	float:left;
    }
    #sousmenu ul li input {
    	cursor:pointer;
    	border:none; 
    	width:90px; 
    	height:90px; 
    	margin:0 0 3px;
    }
    3/ Récupération
    On récupère un identifiant de sous-menu (de 1 à 10 ici).
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    $sm_id = (!empty($_POST['sousmenuid']))? $_POST['sousmenuid'] : 0; // 0 par défaut
     
    // On construit les infos utiles via un array :
    $infos_array = 
    	array(
    		1 => array(
    			'vignette' 	=> 'F1',
    			'chemin' 	=> 'Images/F1/image',
    			'nbre'		=> 3,
    			'comment'	=> 'Espace enfants du magasin',
    			'ref'		=> 'Leroy Merlin - Gennevilliers'
    			),
    		2 => array(
    			'vignette' 	=> 'F2',
    			'chemin' 	=> 'Images/F2/image',
    			'nbre'		=> 4,
    			'comment'	=> 'Sous la tente de Robinson',
    			'ref'		=> 'Particulier - Paris'
    			),
    		3 => array(
    			'vignette' 	=> 'F3',
    			'chemin' 	=> 'Images/F3/image',
    			'nbre'		=> 8,
    			'comment'	=> '',
    			'ref'		=> ''
    			),
    		4 => array(
    			'vignette' 	=> 'F4',
    			'chemin' 	=> 'Images/F4/image',
    			'nbre'		=> 4,
    			'comment'	=> 'Salle de séminaires',
    			'ref'		=> 'Hôtel Trianon Palace - Versailles'
    			),
     
    		// et ainsi de suite....
    	);
     
    // On peut préparer l'affichage :
    if(!empty($sm_id))
    {
     
    	$vignette	= $infos_array[$sm_id]['vignette'];
    	$chemin	= $infos_array[$sm_id]['chemin'];
    	$nbre		= $infos_array[$sm_id]['nbre'];
    	$comment	= $infos_array[$sm_id]['comment'];
    	$ref		= $infos_array[$sm_id]['ref'];
    } else {
    	// ICI, ON PEUT METTRE LES VALEUR PAR DEFAUT
    }
    Dernière modification par Invité ; 30/08/2015 à 15h25.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Responsable financier
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable financier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    jreaux62,

    Je n'ai pas encore eu le temps de m'approprier toutes tes explications mais je vais essayer cela dès demain. Je voulais quand même prendre deux minutes pour te remercier et te tiens au courant du résultat...
    Merciiiiii !

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Responsable financier
    Inscrit en
    Août 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable financier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    jreaux62 est devenu mon idole !

    Tout fonctionne merveilleusement bien : je suis ravie !

    J'ai néanmoins fait quelques aménagement à ton code :
    - j'ai conservé mes styles css que j'aimais bien
    - j'ai modifié la variable $smid car je pense que tu l'as appelée ainsi sur la page sousmenu.php puis $sm_id sur la page fresques.php par oubli
    - et enfin, il me restait un petit souci : le numéro des variables de l'array apparaissait sur les vignettes du sous-menu. Plutôt que de chercher une façon de les faire disparaître -qui aurait risqué de tout me saccager- je les ai conservés mais réduits à 1px. Ils sont donc toujours présents mais invisibles à l'oeil nu.

    Voilà !
    Je n'ai plus qu'à adapter tout ça aux autres pages de présentation... et à m'approprier toutes ces nouvelles informations.

    MERCI MERCI MERCI

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kafountines Voir le message
    jreaux62 est devenu mon idole !
    Allons, allons... tu vas me faire rougir...

    j'ai modifié la variable $smid car je pense que tu l'as appelée ainsi [...] par oubli !
    Non. Pour bien montrer que ce sont des variables distinctes, mais on peut en effet leur donner le même nom.

    le numéro des variables de l'array apparaissait sur les vignettes du sous-menu
    Peux-tu montrer TON code ??

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 17/08/2010, 16h01
  2. [AC-2003] case à cocher // valeur indéterminé par defaut
    Par Chagui dans le forum IHM
    Réponses: 6
    Dernier message: 28/07/2010, 15h03
  3. [Pb : champ Text = pas de valeur par defaut ?]
    Par mat_dum dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/08/2003, 12h57
  4. sorte de valeur par defaut
    Par sampq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2003, 11h59
  5. Valeur par defaut 'True' dans un champ de type bit
    Par Mouse dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2003, 15h26

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