TRANSMITION DES ARGUMENTS VERS UNE PAGE DANS UNE FRAME

sebastiennauer Messages postés 3 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 15 décembre 2006 - 13 déc. 2006 à 23:55
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015 - 18 déc. 2006 à 11:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40712-transmition-des-arguments-vers-une-page-dans-une-frame

kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
18 déc. 2006 à 11:37
http_build_query n'a rien d'obscure... c'est une fonction native de php5 et je te donne le code équivalant pour php4... elle génère une chaine de requete à partir d'un tableau ou d'un objet... .. .

http://fr3.php.net/http_build_query

Tu prend le code que je t'ais mis et tu fais...

<FRAME src="mapage1.php?<?php echo http_build_query($_GET); ?>">

Pourquoi réinventer la roue... .. . ;o)

@ tchaOo°
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 déc. 2006 à 18:10
masternico, passe comme argument un guillemet double, simple ou autre, tu verras comment ça chie...
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
15 déc. 2006 à 16:20
Bon bon, j'ai corrigé le code, mais je n'ai pas reussi à inclure foreach() à cause du fait que le premier argument est précédé du signe "?" et les autres du signe "&"...
mais comme le souligne coucou747, je débute de chez débute... :D
en fait j'apprends sur le tas, donc comme pour toutes les méthodes empiriques, il faut faire des erreurs pour avancer. ;D
>>coucou747: Par contre, je n'ai pas saisis la subtilité du double échapement des '. ni des arguments avec " dedans... pourrais tu approfondir?

>>sebastiennauer: j'irais visiter les liens que tu m'as fourni

tcho tcho et merci
sebastiennauer Messages postés 3 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 15 décembre 2006
15 déc. 2006 à 15:13
Voila deux sites de références qui me servent au quotidien :
- http://www.alsacreations.com/ : Site en Francais pour apprendre le CSS, XHTML
- http://www.w3schools.com/ : Site en anglais avec des exemples dans pleins de langages pour le web
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 déc. 2006 à 14:57
à mon avis, les ' seront échapés deux fois... c'est pas bon du tout pour les arguments qui peuvent en contennir... Bref, ça peut buger sur les caractères échapables, et ça peut aussi merder dans les arguments qui ont un " dedans...

De plus, c'est vraiment simple comme exemple, même pour débutant
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
15 déc. 2006 à 14:49
Salut tout le monde, Merci pour vos commentaires.
>>sebastiennauer: tout à fait d'accord. En fait, alors que j'écris ces ligne je me suis mis au CSS mais c'est balèse et j'ai eu du mal à trouver la doc complète de la terminologie (http://www.w3.org/TR/1999/REC-CSS1-19990111) (en anglais).


>>kankrelune: merci pour le if(!empty()), je l'oubli tout le temps celui la.
J'ai mis du temps à saisir la pertinense de ta remarque sur $_REQUEST. Cela rejoint une remarque qu'il m'a déja étée faite sur un autre code: mon source est trop spécifique à mon application générale.
Si j'utilise $_REQUEST, c'est parcequeje me réserve le droit d'injecter des arguments pour simuler la validation d'un formulaire. Et comme je sais que le nombre des arguments reçut vari entre 2 et 4, je ne me suis pas posé la question à savoir si $_REQUEST ne pouvait pas contenir autre chose que les arguments que j'attends.
Donc bof bof effectivement... ;)

je vais corriger et utiliser $_GET et $_POST, parceque ton source http_buil_machin c'est encore trop obscur pour moi et je ne veux pas utiliser des sources que je ne comprend pas. J'ai fait mes premiers pas dans l'utilisation des class mais la terminoligie encore me manque et j'ai du mal à trouver des bouquins serieux qui en parle

Voila voila. En tout cas merci pour vos post et à bientôt.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
14 déc. 2006 à 12:12
C'est plus que bof bof ton truc... tu utilise $_REQUEST mais $_REQUEST utilise comprend les données $_GET, $_POST et $_COOKIE... tu envois les données $_POST et $_COOKIE dans l'url toi... .. ?

ensuite tu test qu'il y a des arguments après avoir récupéré les clées autant faire un

if(!empty($_GET))

avant de récupérer les clées... d'ailleurs il est inutile de récupérer les clées autant faire directement un foreach sur le tableau... sinon devrais plutot utiliser la fonction http_build_query() et si tu est sous php4...

function http_build_query( $formdata, $numeric_prefix null, $arg_separator null)
{
if (is_object($formdata))
$formdata = get_object_vars($formdata);

if (!is_array($formdata))
{
trigger_error('http_build_query() Parameter 1 expected to be Array or Object. Incorrect value given.',E_USER_WARNING);
return false;
}
elseif(empty($formdata))
return '';

if(is_null($arg_separator))
$arg_separator = ini_get('arg_separator.output');

$build_query = '';

foreach ($formdata as $key => $val)
{
if (is_numeric($key) && !is_null($numeric_prefix))
$key = $numeric_prefix.$key;

if(is_scalar($val))
$build_query .= urlencode($key).'='.urlencode($val);
else
$build_query .= _http_build_query($val, urlencode($key), $arg_separator);

$build_query .= $arg_separator;
}

return substr($build_query,0,-strlen($arg_separator));
}

function _http_build_query ($array, $name, $separator)
{
$tmp = '';

foreach ($array as $key => $value)
{
if (is_scalar($value))
$tmp .= $name.'['.urlencode($key).']='.urlencode($value);
elseif(is_array($value))
$tmp .= _http_build_query($value, $name.'['.urlencode($key).']',$separator);
elseif (is_object($value))
$tmp .= _http_build_query(get_object_vars($value), $name.'['.urlencode($key).']',$separator);

$tmp .= $separator;
}

return substr($tmp,0,-strlen($separator));
}

@ tchaOo°
sebastiennauer Messages postés 3 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 15 décembre 2006
13 déc. 2006 à 23:55
Bonne idée, mais pourquoi ne pas faire directement des pseudos frames avec des include de fichiers PHP et des styles CSS ?