all HTML

Accèdez à votre compte : 

Créer un compte …

Perte de mot de passe …

  • Accueil
  • Forum de discussions
  • Publications
  • Communauté

Poser une question

Sélection des sujets

  • Toutes les discussions
  • Questions sans réponse
  • par langage de programmation :
    html css javascript php sql asp xml java C# action script
  • par thématique :
    animation - motion design graphisme - webdesign audio - vidéo accessibilité droit - législation web apps - logiciels référencement - seo hébergement administration serveur site web e-commerce

formulaire et $-GET

Sujet publié le 23/04/2008 par pitit et classé dans résolu ! php sql

Bonjour,

Dans mon code, des données sont envoyées en $_GET, je les vois bien dans l'adresse du navigateur : titre=tralala email=tralalal@hotmail.com

Mais seul le titre s'affiche dans mon formulaire pourtant l'email apparait bien dans l'adresse.

Voici mon code :


<?php include("en_tete.php"); ?>
<div id="corps">
<p>Vous pouvez nous envoyer votre photo en cliquant sur parcourir :</p>
<?php
include("transfertannu.php");
if(isset($_FILES['fic']) AND isset($_POST['titre']) AND isset($_POST['email']))
{
transfert();
}
?>

<p>Envoi de votre photo:</p>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<BR>
<br>
<label>
Titre de l'annonce:
<input type="text" name="titre" value="<?php if (isset($_GET['titre'])) echo stripslashes(htmlentities(trim($_GET['titre'])));?>">
</label>
<BR>
<br>
<label>
Votre email:
<input type="text" name="email" value="<?php if (isset($_GET['email'])) echo stripslashes(htmlentities(trim($_GET['email'])));?>">
</label>
<input type="submit" value="Envoyer" />
</form>
</div>
<?php include("pied_de_page.php"); ?>


Le lien pour venir sur cette page est :



header('Location: photoannu.php?titre='.$_POST['titre'].'&amp;email='.$_POST['email'].'');

Merci de m'aider.

par pitit, 23/04/2008 à 14h04
pitit

répondre

Bonjour pitit,

D'abord, l'adresse dans le navigateur comprend bien le "&", du genre :
domaine?titre=tralala&email=tralalal@hotmail.com

et si oui, dans ton formulaire, à l'endroit ou devrait apparaître l'adresse e-mail, il n'y a rien ou as-tu un message d'erreur ou autre ?

par Terence, 23/04/2008 à 15h20

Oui, le & est bien présent.
A l'endroit où devrait apparaitre l'email, il n'y a rien du tout.

par pitit, 23/04/2008 à 16h00
pitit

Je vais pas être d'une grande aide, car la, comme ça, je ne vois pas trop, mais je tenterai de savoir si la variable existe vraiment et quelle est concrètement sa valeur (en utilisant par exemple print_r($_GET);).

Si elle existe, voir ce qui empêche l'affichage, peut-être en l'affichant sans traitement (enlever les htmlentities, stripslahes...) et en début de page... pour voir ce que ça donne..

Tiens nous au courant !

par Terence, 25/04/2008 à 20h24

J'ai mis en début de page :

<?php echo $_GET['email']; ?>
<?php echo $_GET['titre']; ?>

Et bien encore une fois le titre s'affiche mais pas l'email.
Pourtant je vois bien les deux valeurs dans mon navigateur.

Peut-être que pour transmettre des emails, il faut un caractère spécifique, je ne sais pas comment faire.

par pitit, 25/04/2008 à 23h42
pitit

Bonjour ,

tu récupères tes variables en $_POST pour les renvoyer en $_GET via la fonction header

header('Location: photoannu.php?titre='.$_POST['titre'].'&amp;email='.$_POST['email'].'');

A mon avis le problème est du au fait que dans la fonction header tu écris le & séparateur en unicode plutôt qu'en ascii

j'écrirais plutôt comme ça

header('Location: photoannu.php?titre='.$_POST['titre'].'&email='.$_POST['email'].'');

par inca roads, 26/04/2008 à 01h01

Merci inca roads,

Effectivement l'email est transmit et inscrit dans mon formulaire.

Par contre, j'ai de nouveau un problème, mes photos ne sont plus envoyées dans ma base de données.
J'ai tellement touché au code que je ne sais plus d'où vient l'erreur.

Voici mon code de la page photoannu :

<?php include("en_tete.php"); ?>
<div id="corps">

<p>Vous pouvez nous envoyer votre photo en cliquant sur parcourir :</p>
<?php
include("transfertannu.php");
if(isset($_FILES['fic']) AND isset($_POST['titre'])AND isset($POST['email'])AND isset($POST['numero']))
{
transfert();
}
?>

<p>Envoi de votre photo:</p>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<BR>
<br>
<label>
Titre de l'annonce:
<input type="text" name="titre" value="<?php if (isset($_GET['titre'])) echo stripslashes(htmlentities(trim($_GET['titre'])));?>">
</label>
<BR>
<br>
<label>
Votre email:
<input type="text" name="email" value="<?php if (isset($_GET['email'])) echo stripslashes(htmlentities(trim($_GET['email'])));?>">
</label>
<BR>
<br>
<label>
Numéro de l'annonce:
<input type="text" name="numero" value="<?php if (isset($_GET['numero'])) echo stripslashes(htmlentities(trim($_GET['numero'])));?>">
</label>
<input type="submit" value="Envoyer" />
</form>
</div>
<?php include("pied_de_page.php"); ?>

Et voici mon code de la page transfertannu :

<?php
function transfert()
{
$ret=false;
$image_blob='';
$image_taille=0;
$image_type='';
$image_nom='';
$taille_max=250000;
$ret=is_uploaded_file($_FILES['fic']['tmp_name']);
if (!$ret)
{
echo "Problème de transfert";
return false;
}
else
{
//Le fichier a bien été reçu
$img_taille=$_FILES['fic']['size'];
if ($img_taille>$taille_max)
{
echo "Votre photo est trop grosse !";
return false;
}

$img_type=$_FILES['fic']['type'];
$img_nom=$_FILES['fic']['name'];
$titre = htmlentities ($_POST['titre']);
$email = htmlentities ($_POST['email']);
$numero = htmlentities ($_POST['numero']);

include("connexion.php");

$img_blob=file_get_contents($_FILES['fic']['tmp_name']);
$req= "INSERT INTO photo_annonce(".
"img_nom, img_taille, img_type, img_blob, titre, email, numero".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
"'".addslashes ($img_blob)."', ".
"'".$titre."', ".
"'".$email."', ".
"'".$numero."') ";
$ret = mysql_query($req) or die (mysql_error());
return true;
}
}
?>

Je pense que l'erreur se trouve sur la page de transfert mais je n'en suis pas sûre.

par pitit, 27/04/2008 à 23h57
pitit

Re :

Je vois ça

if(isset($_FILES['fic']) AND isset($_POST['titre'])AND isset($POST['email'])AND isset($POST['numero']))

tu écris $POST alors qu'il faut écrire $_POST

par inca roads, 29/04/2008 à 11h17

Merci beaucoup pour tout, mon problème est enfin résolu.

par pitit, 29/04/2008 à 20h57
pitit

répondre

  • nous contacter
  • mentions légales