Page 1 sur 1

probleme de recuperation des variables de et vers PHP/flash

Posté : 03 mai 2005, 22:16
par fsilvia
Bonjour,
je voudrais envoyer des données de FLASH vers PHP et viceversa;
Et pour faire ça, j'ai fait un pti exemple qui ne marche pas !

Quand j'envoie les donnée de FLASHv ers PHP, j'ai bien l'insertiond ans la abse mais les données sont vides !!!!

Quand je recupères les données de la base vers FLASH, ça ne fait rien, pas d'erreurs mais pas des données en sortie (dans la abse ily a des lignes);

je vous montre le code :

FLASH pour insertion données :

if ((pseudo eq "") || (email eq "")) {
gotoAndPlay (6);
} else {
loadVariablesNum ("http://localhost/test silvia/insertabonne.php", 0, "GET");
done = 0;
play ();
}

et PHP en reception des données (qui fait insert avec données vides) :

function parse($variable,$valeur)
{
echo "&$variable=$valeur";
}
/***************************************************************************/

// ----- insertion dans la base

// ----- effectue la connection
$link = mysql_connect("localhost","Silvia","fabien");
if ($link == false) { parse("ok",0);}

// ----- insertion dans la base
$r = mysql_db_query("test"," insert into abonne (pseudo, email)
//VALUES ('$pseudo','$email')");
VALUES ($_POST['pseudo'],$_POST['email'] )");

// ----- test si l'insertion c'est bien passée
if ($r)
parse("ok",1);
else
parse("ok",0);

// ----- traitement terminé
parse("done",1);
?>

et voici FLASH en reception des données (fonction recherche) :

function showContent() {
var i;
content.htmlText = "";
for (i=0; i < this.n; i++) {
content.htmlText += "<b>" + this["pseudo"+i] + "</b><br>";
content.htmlText += "&nbsp;&nbsp;<a href='mailto:" + this["email"+i] + "'>" + this["email"+i] + "</a><br><br>";
}
}

// Create new load vars object c for data transfer
var c = new LoadVars();
c.onLoad = showContent;

c.sendAndLoad("http://localhost/test silvia/select2abonne.php",pseudo,"POST");



stop();

et PHP qui devrait chercher les données dans la base :

<?php
mysql_connect("localhost","Silvia","fabien");

mysql_select_db("abonne");

//$tab = $HTTP_POST_VARS['pseudo'];
$qr = mysql_query("select pseudo, email from abonne order by codcli");

// start output string with number of entries
$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;

for ($i=0; $i < $nrows; $i++) {
$row = mysql_fetch_array($qr);
$rString .= "&pseudo".$i."=".$row['pseudo']."&email".$i."=".$row['email'];
}
echo $rString;
?>

je suis STRADEBUTTANTE ... et j'ai vmt besoin d'aide

merci
Silvia

Posté : 03 mai 2005, 22:24
par pjl
Cette ligne ne peut pas marcher.
 $r = mysql_db_query("test"," insert into abonne (pseudo, email) 
Il n'y a pas le guillemet et la parenthèse fermante.
Ensuite, à quoi sert la requete, il n'y a pas les valeurs à insérer.

Posté : 03 mai 2005, 22:37
par Cyrano
Hello,
ce que tu peux commencer par faire, c'est d'ajouter une validation pour vérifier que les valeurs envoyées ne sont pas vides:
if(isset($_POST['pseudo']) && $_POST['pseudo'] != "")
{
    $pseudo = $_POST['pseudo'];
}
if(isset($_POST['email'] && $_POST['email'] != "")
{
    $email = $_POST['email'];
}
Ça, c'est le principe pour vérifier que les variables ont bien été envoyées et qu'elles contiennent une valeur. Tu peux donc à ce moment là décider d'interrompre l'enregistrement s'il n'y a rien à enregistrer et afficher un message d'erreur personnalisé, ou bien si tout est correct poursuivre. On reprand donc ton code d'insertion en l'insérant dans une condition.
<?php
if(isset($_POST['pseudo']) && isset($_POST['email']))
{
    if($_POST['pseudo'] != "" && $_POST['email'] != "")
    {
        $pseudo = $_POST['pseudo'];
        $email = $_POST['email'];
     // ----- insertion dans la base

    // ----- effectue la connection
    $link = mysql_connect("localhost","Silvia","fabien");
    if ($link == false) { parse("ok",0);}

    // ----- insertion dans la base
    $r = mysql_db_query("test"," insert into abonne (pseudo, email)
    VALUES ('". $pseudo ."','". $email ."')");
    //VALUES ($_POST['pseudo'],$_POST['email'] )");

    // ----- test si l'insertion c'est bien passée
    if ($r)
    parse("ok",1);
    else
    parse("ok",0);

    // ----- traitement terminé
    parse("done",1); 
?>
<p>Les valeurs ont été correctement reçues du formulaire, l'enregistrement s'est normalement déroulé.</p>
<?php
    }
    else
    {
?>
<p>Les valeurs reçues du formulaire sont vides, aucun enregistrement n'a pu avoir lieu.</p>
<?php
    }
}
else
{
?>
<p>Les valeurs n'ont pas été reçues du formulaire, aucun enregistrement n'a pu avoir lieu.</p>
<?php
}
?>
Voilà, essaye déjà avec ça et reviens pour la suite si ça ne fonctionne toujours pas en nous disant quels messages d'erreur tu obtiens.

merci, mais ça va pas encore

Posté : 03 mai 2005, 22:55
par fsilvia
j'ai mis le code PHP que vous m'avez sugeré, et voici ler esultat :

Error opening URL "http://localhost/test silvia/insabonne2.php?done=0&pseudo=monpseudo&email=monmail"

pls help !

merci
Silvia

Posté : 03 mai 2005, 23:00
par Cyrano
Ça veut dire que l'adresse du fichier n'est pas bonne.

Mais je vois autre chose: des paramètres dans l'url : dans le formulaire, les valeurs sont-elles envoyées avec la méthode post ou la méthode get ? c'est important parce que le code de traitement récupère les valeurs par la méthode post...

...

Posté : 03 mai 2005, 23:03
par fsilvia
j'envoie avec POST, voici le code du FLASH :

if ((pseudo eq "") || (email eq "")) {
gotoAndPlay (6);
} else {
loadVariablesNum ("http://localhost/test silvia/insabonne2.php", 0, "POST");
done = 0;
play ();
}

en effet je n'ai plus l'erreur de tout à l'heure, mais il reste bloqué ... il attends ... mais quoi ?

merci encore
Silvia

L'insertion MARCHE !!!!!

Posté : 03 mai 2005, 23:11
par fsilvia
STRAMERCI !!!!

j'ai réussi finalement à insérer !!!

maintenant ... je voudrais recupérer ce que j'ai finalement mis dans la base !

je vous montre le code (j'en ai honte) FLASH et PHP ... qui ne marchent pas !

PHP :

<?php
mysql_connect("localhost","Silvia","fabien");

mysql_select_db("abonne");

//$tab = $HTTP_POST_VARS['pseudo'];
$qr = mysql_query("select pseudo, email from abonne order by codcli");

// start output string with number of entries
$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;

for ($i=0; $i < $nrows; $i++) {
$row = mysql_fetch_array($qr);
$rString .= "&pseudo".$i."=".$row['pseudo']."&email".$i."=".$row['email'];
}
echo $rString;
?>

FLASH :

function showContent() {
var i;
trace (this.n)
content.htmlText = "";
for (i=0; i < this.n; i++) {
content.htmlText += "<b>" + this["pseudo"+i] + "</b><br>";
content.htmlText += "&nbsp;&nbsp;<a href='mailto:" + this["email"+i] + "'>" + this["email"+i] + "</a><br><br>";
}
}

// Create new load vars object c for data transfer
var c = new LoadVars();
c.onLoad = showContent;

c.sendAndLoad("http://localhost/test silvia/select2abonne.php",pseudo,"POST");



stop();

0 nouveau merci d'avance !
Silvia

Posté : 03 mai 2005, 23:12
par Cyrano
Je suppose que le code Flash, c'est de l'Action Script et je suis bien incapable de te répondre là dessus, je ne le connais pas du tout :?

je prend le risque ...

Posté : 03 mai 2005, 23:17
par fsilvia
de passer pour une conne ... mais c'est quoi la différence entre ACTION SCRIPT et le code flash que j'ai fait dans l'autre exemple de l'insertion ?

Silvia

Posté : 03 mai 2005, 23:19
par Cyrano
Les deux langage ont sensiblement le même genre de syntaxe, mais le vocabulaire est propre à chaque langage même si on retrouve des points communs.

Posté : 03 mai 2005, 23:25
par Cyrano
Pour l'affichage, essaye ça :
<?php
mysql_connect("localhost","Silvia","fabien");

mysql_select_db("abonne");

//$tab = $HTTP_POST_VARS['pseudo'];
$qr = mysql_query("select pseudo, email from abonne order by codcli");

// start output string with number of entries
$nrows = mysql_num_rows($qr);
$rString = "n=".$nrows;
$i = 0;
while($row = mysql_fetch_array($qr))
{
    $rString .= "&pseudo".$i."=".$row['pseudo']."&email".$i."=".$row['email'];
    $i++;
}
echo $rString;
?>