Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/11/2011, 22h11   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut transmission données

Bonsoir,

je voudrais transmettre une variable générée par une page Ap sur le serveur As à une page Bp sur le serveur Bs. La page Ap (PHP) est exécutée via une iframe sur la page Bp ; la page Ap génère une variable (un tableau) que je voudrais récupérer dans Bp sans action utilisateur (ni lien, ni formulaire par exemple), sachant que l'utilisateur n'a aucune interface avec la page Ap (elle ne fait qu'un traitement).
Malgré une recherche sur le forum, je n'ai pas trouvé de réponse ; peut-on m'aider ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 01h35   #2
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai modifié mon approche et du coup modifié le titre, vu que j'ai rajouté une action utilisateur (un formulaire), mais le problème reste ; donc je veux transmettre une donnée de Ap à Bp ; comme il s'agit d'un tableau je fais un implode au départ ( $array = implode('#',$user); ); je transmets ce tableau via un champ hidden d'un formulaire :
Code :
1
2
3
4
echo '<form method="post" action="http://...user.php">';
echo '<input type="hidden" name="users" value="'.$array.'">';
echo '<input type="submit" value="transmettre">';
echo '</form>';
puis à l'arrivée je fais un explode : $array = explode('#',$_POST["users"]);mais il y a un souci :
Citation:
Undefined index: users in C:\Program Files\EasyPHP-5.3.8.0\www\swp\user.php on line 11
merci d'avance de l'aide.
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h39   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
coté HTML le rendu du form donne quoi ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 10h46   #4
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
En fait, j'ai avancé et mon nouveau problème (encore un !) est complètement différent ; au début, le problème était que la page Ap était appelée via une iframe dans Bp ; ayant pensé que le problème venait de là, j'ai supprimé l'iframe : j'appelle moi-même (de mon navigateur) la page Ap ; on a donc le form qui appelle par l'action la page Bp ; ça, ça marche ; par contre, au préalable Ap génère un array PHP que je transmets à Bp via un champ hidden du form puis, comme test, dans Bp, j'affiche le premier élément du tableau (echo "array0=".$array[0].'<br>') et ça m'affiche le dernier ! Comme le souci vient peut-être de la construction du tableau, la voici :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
while (isset($lastname)&&($lastname!="")) { 
 
$lastname=$data->val($patr,"3");
$firstname=$data->val($patr,"4");
$patr++;
if ($lastname!="")  
   $user[$ind]=$lastname.'|'.$firstname;
}
echo "</table>";
 
$array = implode('#',$user);
echo '<form method="post" action="http://127.0.0.1/swp/user.php">';
echo '<input type="hidden" name="users" value="'.$array.'">';
echo '<input type="submit" value="transmettre">';
echo '</form>';
(Le serveur Bs est Easyphp ! En fait, plutôt que de recourir à curl, je tente de faire tourner ce qui nécessite une modif de la config en local).
Est-ce que tu vois mon nouveau souci ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h08   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
au del
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h10   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
au delà de tout ça, si tu veux transmettre un tableau via un formulaire il faut utiliser es table de formulaire ...

http://www.php.net/manual/fr/faq.htm...aq.html.arrays
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h39   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Au vu de ta réponse, j'ai viré le implode et le explode (pour transmettre une string) et transmis directement le tableau :
Code :
1
2
3
4
5
6
7
...
echo '<form method="post" action="http://127.0.0.1/swp/user.php">';
$i=0;
for ($i=0;$i<$luser;$i++)
    echo '<input type="hidden" name="users[]" value="'.$user[$i].'">';
echo '<input type="submit" value="transmettre">';
echo '</form>';
mais lorsque je le récupère et refais mon test, c'est encore la dernière valeur et pas la première qui est affichée :
Code :
1
2
$array = $_POST["users"];
echo "array0=".$array[0].'<br>';
où est le souci ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h50   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
foreach pour parcourir un table
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 13h51   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
OK, mais le souci est au niveau de la construction de cette table, comme me le montre ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
while (isset($lastname)&&($lastname!="")) { 
 
$lastname=$data->val($patr,"3");
$firstname=$data->val($patr,"4");
$patr++;
if ($lastname!="") 
{ 
$user[$ind]=$lastname.'|'.$firstname;
echo $user[$ind].'<br>';
}}
echo "</table>";
$luser=sizeof($user);
echo "luser=".$luser.'<br>';
echo "var_dump (1&1) :"; var_dump($user);
Le var_dump montre que $user n'est qu'une string ! (Alors que l'affichage de $user[$ind] juste avant est correct) ; qu'est-ce qui coince, donc ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 14h54   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
count pas sizeof
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 18h37   #11
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
PHP a tendance à faire des raccourcis qui sont pratiques quand on les connait et qui peuvent dérouter quand on les connait pas.
A savoir : on peut parfaitement faire $user[2] sur une chaine, PHP traitera la chaine comme si c'était un array, avec un caractère par ligne. Donc si ta chaine est $user = "celira", echo $user[2] va te renvoyer e.

La question est donc : d'où vient ta variable $user à l'origine ?

@stealth35 : il me semblait que sizeof était un alias de count. Il ya une différence ou c'est juste une question de propreté du code ? (personnellement j'utilise systématiquement count, mais ça m’intéresse de savoir )
__________________
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 18h48   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 156
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 156
Points : 8 524
Points : 8 524
Citation:
Envoyé par Celira Voir le message
@stealth35 : il me semblait que sizeof était un alias de count. Il ya une différence ou c'est juste une question de propreté du code ? (personnellement j'utilise systématiquement count, mais ça m’intéresse de savoir )
Citation:
Envoyé par php.net
C'est une très mauvaise habitude d'utiliser ces alias, car ils risquent à tous moment de disparaître, rendus obsolète sans préavis, ou bien par un simple changement de nom, ce qui rend votre script inutilisable avec des versions plus récentes de PHP. Préférez toujours les versions officielles.
http://php.net/manual/fr/aliases.php

niveau code interne c'est juste 1 paramètre en plus a passer

__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 00h02   #13
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai fini par trouver un gros bug dans la construction du tableau : je n'incrémentais pas l'indice, donc évidemment à la fin, le "tableau" ne valait que le dernier élément : ouf

Citation:
La question est donc : d'où vient ta variable $user à l'origine ?
En fait, j'utilise un script PHP qui me permet de lire un fichier xls ; donc en fait, je récupère 2 colonnes qui sont les noms et prénoms, et je les concatène pour former un élément unique : $lastname.'|'.$firstname et c'est cet élément que je mets dans mon array $user :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require_once 'excel_reader2.php';
$ind=0;
$data = new Spreadsheet_Excel_Reader("---.xls");
$patr="2";
$lastname=$data->val($patr,"3");
echo "<table><tr><td>Lastname</td><td>Firstname</td></tr>";
 
while (isset($lastname)&&($lastname!="")) { 
 
$lastname=$data->val($patr,"3");
$firstname=$data->val($patr,"4");
$patr++;
if ($lastname!="") 
{ $user[$ind]=$lastname.'|'.$firstname;
echo $user[$ind++].'<br>'; //je viens slt de rajouter cette incrémentation !
}}
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 10h03   #14
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 390
Points : 5 390
Ah ben forcément, si tu n'incrémentes pas... Personnellement, j'aurais fait l'incrémentation à part, pour le cas où tu voudrais faire autre chose après ton echo (ou pour le cas où tu désactivais l'echo pour une quelconque raison...)
Code :
1
2
3
$user[$ind]=$lastname.'|'.$firstname;
echo $user[$ind].'<br>';
$ind++;
@stealth : raison valable et acceptée
__________________
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 11h19   #15
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Merci Celira ; tu as raison ; en réalité, cet echo n'existe plus dans le code, mais l'incrémentation reste liée à une instruction : $user[$ind++]=$lastname.'|'.$firstname;...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h38.


 
 
 
 
Partenaires

Hébergement Web