[PHP] doit-on utiliser extract() ?
Résolu/Fermé
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
-
10 mars 2007 à 13:44
deeploy - 15 août 2014 à 02:22
deeploy - 15 août 2014 à 02:22
A voir également:
- Extract($_post);
- Extract audio copy - Télécharger - Conversion & Extraction
- Extract now - Télécharger - Compression & Décompression
- Cd extract - Télécharger - Conversion & Extraction
- Extract youtube video - Guide
- Cab extract - Télécharger - Compression & Décompression
7 réponses
Bonjour,
// On n'effectue les traitements qu'à la condition que les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['a'])) && (!empty($_POST['b'])) ) {
extract($_POST); // je vous renvoie à la doc de cette fonction
echo $a;
echo $b
// On n'effectue les traitements qu'à la condition que les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['a'])) && (!empty($_POST['b'])) ) {
extract($_POST); // je vous renvoie à la doc de cette fonction
echo $a;
echo $b
dubuducu
Messages postés
391
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
19 mai 2010
4
4 sept. 2008 à 18:40
4 sept. 2008 à 18:40
Bonjour,
moi j'adore cette fonction et voici un exemple que j'ai utilisé récemment .
je te laisse le soin d'etudier le principe en suivant cet exemple.j'utilise extract() pour mes listes deroulantes .
Bon courage.
moi j'adore cette fonction et voici un exemple que j'ai utilisé récemment .
je te laisse le soin d'etudier le principe en suivant cet exemple.j'utilise extract() pour mes listes deroulantes .
Bon courage.
.... $rq = "SELECT DISTINCT departement FROM devis_table ORDER BY departement"; $resultq = mysql_query($rq) or die ("Exécution de la requête impossible"); echo"<b>Choisissez un departement</b>\n"; echo"<br><br>"; echo "<form action='menu1.php' method='post'> <select name='departement'>\n"; echo "<option value='null'>Tous les Départements</option>"; while ($liste=mysql_fetch_array($resultq)) { extract($liste); echo "<option value='$departement'>$departement\n"; } echo " </select>\n"; echo " <BR><BR><BR><BR>"; ....
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
4 sept. 2008 à 20:54
4 sept. 2008 à 20:54
salut,
en fait je me posais la question dans le cas de l'utilisation des données de $_POST mais depuis (merci PHP 5.2) je suis passé à filter_input().
en tous cas merci !
-;o)
en fait je me posais la question dans le cas de l'utilisation des données de $_POST mais depuis (merci PHP 5.2) je suis passé à filter_input().
en tous cas merci !
-;o)
bonsoir,
je rebondis sur le sujet , j'ai du lire en partie les même conseils (mais pas vu le filter_input();)
En fait je travaille sur un petit cms perso et je cherchais un moyen de récuperer les differentes variables eventuellement dispos pour ensuite traitées celle que je recherche selon la config.
je met ci dessous une page test mise en forme avec une fonction un peu 'bateau' (extrait d'une fonctions d'une class que j'essaie de dévellopper )
//////////////////////////////////////
<?php
session_start();
function check($array) {
//verification si tableau et retourne le nombre d'enregistrement
$nb_item=is_array($array) ? count($array) : 0 ;
$nb_item = $nb_item;
//puis parcours du tableau si pas zero
if ($nb_item !=0) {
echo '<ul >';
foreach($array as $cle=>$valeur)
{
echo '<li>'.$cle.' : '.$valeur.'</li>';
}
echo '</ul>';
}
else { echo' <p class="err">Pas de variables récupérées.</p>';}
$array==null;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Robots" content="follow,noindex,noarchive">
<title> test sur variable sans extract(); </title>
<style type="text/css">
body {text-align:center;}
#global {
display:table;
display:inine-block;
margin:auto;
}
#global div {
float:left;
padding:5px;
}
.pied {
clear:both;
}
h1, #global div , .pied{
border:3px double;
outline: 3px double red;
background:lightgreen;
margin:1em 5px;
}
label {float:left;
width:100px;
}
ul {
border:1px solid;
padding:5px;
width:250px;
margin:auto;
background:#ccc;
}
.err {
color:red;
}
</style>
<!--[if lte IE 7]>
<style type="text/css">
#global {
display:inline;
zoom:1;
}
#global div {
width:25%;
}
</style>
<![endif]-->
<?php
echo '</head><body><div id="global"><h1>les tests</h1>';
// on lance le test sur $_POST
echo '<div ><h2>test sur post </h2>';
check($_POST);
echo'
<form method="POST">
<fieldset><legend>form en methode post</legend>
<p><label for="test" >Test</label><input type="text" name="test" ></p>
<p><label for="test2" >Test 2</label><input type="text" name="test2" ></p>
<p><input type="submit" name="sub" value="test sur var post"></p>
</fieldset>
</form></div>';
// on lance le test sur $_GET
echo' <div ><h2>test $_get</h2>';
check($_GET);
echo '<p><a href="?test=oki&autretest=reoki&etc=etc">test sur 3 variable dans l\'url</a></p>';
echo '<p><a href="?un=une seule variable">test sur 1 seule variable dans l\'url</a></p></div>';
// on lance le test sur $_SESSION
echo '<div ><h2>test sur session</h2>';
$_SESSION['<b>key : log 1</b>'] = 'okitest';
$_SESSION['<b>clé : log 2</b>'] = 'okitest2';
check($_SESSION);
echo'<p>testons voir si il y a un cookie créer par la session </p>';
check($_COOKIE);
echo '</div><p class="pied">fin des test </p></body></html>';
session_destroy();
?>
////////////////////////////////////////////////
a partir de la on peut récuperer ces données , les filtrées , les nettoyées et les restockées dans un ou d'autres tableau .
Est ce une bonne idée ?
(dans ma class voici ce que je fais avant de voir ce que je vais en faire extraits
:
public function __construct($query) {
$this->check($query);//on verifie si tableau
}
puis la fonction check:
function check($query) {
//verification si tableau et retourne le nombre d'enregistrement
$nb_item=is_array($query) ? count($query) : 0 ;
$this->nb_item = $nb_item;
}
)
Je continue sur cette lancée ou est ce une bêtise ?
je rebondis sur le sujet , j'ai du lire en partie les même conseils (mais pas vu le filter_input();)
En fait je travaille sur un petit cms perso et je cherchais un moyen de récuperer les differentes variables eventuellement dispos pour ensuite traitées celle que je recherche selon la config.
je met ci dessous une page test mise en forme avec une fonction un peu 'bateau' (extrait d'une fonctions d'une class que j'essaie de dévellopper )
//////////////////////////////////////
<?php
session_start();
function check($array) {
//verification si tableau et retourne le nombre d'enregistrement
$nb_item=is_array($array) ? count($array) : 0 ;
$nb_item = $nb_item;
//puis parcours du tableau si pas zero
if ($nb_item !=0) {
echo '<ul >';
foreach($array as $cle=>$valeur)
{
echo '<li>'.$cle.' : '.$valeur.'</li>';
}
echo '</ul>';
}
else { echo' <p class="err">Pas de variables récupérées.</p>';}
$array==null;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Robots" content="follow,noindex,noarchive">
<title> test sur variable sans extract(); </title>
<style type="text/css">
body {text-align:center;}
#global {
display:table;
display:inine-block;
margin:auto;
}
#global div {
float:left;
padding:5px;
}
.pied {
clear:both;
}
h1, #global div , .pied{
border:3px double;
outline: 3px double red;
background:lightgreen;
margin:1em 5px;
}
label {float:left;
width:100px;
}
ul {
border:1px solid;
padding:5px;
width:250px;
margin:auto;
background:#ccc;
}
.err {
color:red;
}
</style>
<!--[if lte IE 7]>
<style type="text/css">
#global {
display:inline;
zoom:1;
}
#global div {
width:25%;
}
</style>
<![endif]-->
<?php
echo '</head><body><div id="global"><h1>les tests</h1>';
// on lance le test sur $_POST
echo '<div ><h2>test sur post </h2>';
check($_POST);
echo'
<form method="POST">
<fieldset><legend>form en methode post</legend>
<p><label for="test" >Test</label><input type="text" name="test" ></p>
<p><label for="test2" >Test 2</label><input type="text" name="test2" ></p>
<p><input type="submit" name="sub" value="test sur var post"></p>
</fieldset>
</form></div>';
// on lance le test sur $_GET
echo' <div ><h2>test $_get</h2>';
check($_GET);
echo '<p><a href="?test=oki&autretest=reoki&etc=etc">test sur 3 variable dans l\'url</a></p>';
echo '<p><a href="?un=une seule variable">test sur 1 seule variable dans l\'url</a></p></div>';
// on lance le test sur $_SESSION
echo '<div ><h2>test sur session</h2>';
$_SESSION['<b>key : log 1</b>'] = 'okitest';
$_SESSION['<b>clé : log 2</b>'] = 'okitest2';
check($_SESSION);
echo'<p>testons voir si il y a un cookie créer par la session </p>';
check($_COOKIE);
echo '</div><p class="pied">fin des test </p></body></html>';
session_destroy();
?>
////////////////////////////////////////////////
a partir de la on peut récuperer ces données , les filtrées , les nettoyées et les restockées dans un ou d'autres tableau .
Est ce une bonne idée ?
(dans ma class voici ce que je fais avant de voir ce que je vais en faire extraits
:
public function __construct($query) {
$this->check($query);//on verifie si tableau
}
puis la fonction check:
function check($query) {
//verification si tableau et retourne le nombre d'enregistrement
$nb_item=is_array($query) ? count($query) : 0 ;
$this->nb_item = $nb_item;
}
)
Je continue sur cette lancée ou est ce une bêtise ?
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
5 sept. 2008 à 09:18
5 sept. 2008 à 09:18
salut,
tu devrais ouvrir une discussion spécifique pour ton sujet et mettre ton code en forme avec le bouton "Conserver la mise en forme du texte sélectionné".
à plus
tu devrais ouvrir une discussion spécifique pour ton sujet et mettre ton code en forme avec le bouton "Conserver la mise en forme du texte sélectionné".
à plus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
5 sept. 2008 à 09:35
5 sept. 2008 à 09:35
Bjr
Tu peux utiliser extract si tu veux
Personnellement pour les formulaires je préfère passer par un tableau intermédiaire portant le nom du formulaire
Ex
En php je récupère le tableau associatif $form1 qui contient tous mes champs : juste un petit test isset($form1[...]) dans le cas des boutons radio étant donné que leur valeur n'est pas systématiquement transmisse et c'est tout.
Tu peux utiliser extract si tu veux
Personnellement pour les formulaires je préfère passer par un tableau intermédiaire portant le nom du formulaire
Ex
<html> <head> <style> * { font-family : arial; font-size : 10pt; } </style> </head> <body> <form name="form1" method="post" > Username <input type="text" value="" name="form1[username]"><br /> Password <input type="text" value="" name="form1[password]"><br /> <select name="form1[choix]"> <option value="option A">Option A</option> <option value="option B">Option B</option> <option value="option C">Option C</option> </select> <br /> Autorisation <input type="radio" name="form1[autorisation]" value="oui"><br /> <input type="submit" value="Envoyer"> </form> <?php $form1 = (isset($_POST["form1"])) ? $_POST["form1"] : null; if ($form1) { echo "<pre>"; var_dump($form1); echo "</pre>"; } ?> </body> </html>
En php je récupère le tableau associatif $form1 qui contient tous mes champs : juste un petit test isset($form1[...]) dans le cas des boutons radio étant donné que leur valeur n'est pas systématiquement transmisse et c'est tout.
scercro
Messages postés
2
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
28 septembre 2013
28 sept. 2013 à 14:46
28 sept. 2013 à 14:46
$nb=extract($_POST,EXTR_PREFIX_SAME,'new');
6 mars 2014 à 21:38