Page 1 sur 1
formulaire, pop-up, variables et php
Posté : 11 juin 2005, 00:56
par sop_graff
Bonjour a tous, voila, je vous explique mon problème:
j'ai sur ma page d'accueil un formulaire d'inscription à la newsletter du site et je veut enregister les infos de ce formulaire dans une base de donnée. J'ai donc fait le lien avec ma page PHP de verification et ajout à ma base. Jusque la tout marche et je veut ouvrir la page PHP dans une pop-up et je n'arrive alors plus à transmettre les données du form vers la pop-up.
Comment puis-je envoyé des infos en ouvrant une pop-up à partir d'un formulaire?
Merci
Posté : 11 juin 2005, 02:27
par DocType
function popUP(url,nom,details) {
window.open(url,nom,details);
}
<form action="javascript:popUP('ta_popup.php','popup','width=400,height=100')" method="POST">
<input type="text" name="une _des_variables">
<input type="submit">
</form>
ceci est à mon avis un code qui est fonctionnel...
lors de la validation, cela ouvre ta pop up et "normalement" les données post sont contenues avec cette pop up...
Posté : 11 juin 2005, 12:34
par sop_graff
non, ça ne marche pas, en fait, newsletter.php demande l'email et submit doit l'envoié à add.php dans la pop-up
mon code
newsletter.php
<html>
<script language="JavaScript">
function popUP(url,nom,details) {
window.open(url,nom,details);
}
</script>
<body>
<form action="javascript:popUP('add.php','Inscription','width=400,height=100')" method="post" name="form" >
<p align="center">
<input name="email" id="email" type="text" >
</p>
<p align="center">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
</body>
</html>
et add.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
// On commence par récupérer les champs
if(isset($_GET['email'])) $email=$_GET['email'];
else $email="";
$date=strftime("%Y-%m-%d");
$point = strpos($email,".");
$aroba = strpos($email,"@");
// On vérifie si les champs sont vides
if(empty($email) OR empty($point) OR empty($aroba))
{
echo '<font color="red">Votre email <strong>' . htmlentities($_GET['email']) . '</strong> nest pas valide</font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('inscription',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO newsletter(email, date) VALUES('$email','$date')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Votre email <strong>' . htmlentities($_GET['email']) . '</strong> a été ajoutées.';
mysql_close(); // on ferme la connexion
}
?>
</body>
</html>
Posté : 11 juin 2005, 15:28
par DocType
avec $_GET dans ton script alors que je te donne la methode $_POST c'est sûr que cela ne fonctionnera pas
<html>
<head>
<title>Newsletter</title>
</head>
<script language="JavaScript">
function popUP(url,nom,details) {
window.open(url,nom,details);
}
</script>
<body>
<form action="javascript:popUP('add.php','Inscription','width=400,height=100')" method="post" name="form" >
<p align="center">
<input name="email" id="email" type="text" >
</p>
<p align="center">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
</body>
</html>
<html>
<head>
<title>Inscription</title>
</head>
<body>
<?php
if(isset($_POST['email'])) {
$date_ajout = date("Y-m-d");
$point = strpos($_POST['email'],".");
$aroba = strpos($_POST['email'],"@");
// On vérifie si les champs sont vides
if((empty($_POST['email'])) or (empty($point)) or (empty($aroba))) {
echo "<font color='red'>Votre email <strong>".$_POST['email']."</strong> nest pas valide</font>";
} else {
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die("Erreur de connexion ".mysql_error());
// sélection de la base
mysql_select_db('inscription',$db) or die("Erreur de selection ".mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO newsletter(email,date) VALUES ('$email','$date_ajout')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die("Erreur SQL !".$sql."<br>".mysql_error());
// on affiche le résultat pour le visiteur
echo "Votre email <strong>"$_POST['email']."</strong> a été ajouté.";
mysql_close(); // on ferme la connexion
}
} else {
echo "Aucune donnée a ajouter !";
}
?>
</body>
</html>
Y'a des chances que ca passe déjà mieux !

Posté : 11 juin 2005, 16:27
par sop_graff
non, il y a une erreur quoi que je fasse il me mais
"Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp1-8\www\v3\add.php on line 25",
la ligne ne change pas que ce soit avec le code de la page add que vous m'avez donnez ou avec celui de ma mienne où j'ai laissé plus de ligne.
l'erreur ssemble venir de
"javascript:popUP('add.php','Inscription','width=400,height=100')"
dans la page d'acceuil, du moins c'est tout ce que je vois vu que quand je charge directement add.php, tout fonctionne
Posté : 11 juin 2005, 17:11
par DocType

une erreur de ma part pour un tout petit point ... tu aurais pu le voir, non? tu connais quand même le PHP? ca m'inquiète là car j'ai l'impression que tu vas utiliser ce script sans rien y comprendre...
<html>
<head>
<title>Inscription</title>
</head>
<body>
<?php
if(isset($_POST['email'])) {
$date_ajout = date("Y-m-d");
$point = strpos($_POST['email'],".");
$aroba = strpos($_POST['email'],"@");
// On vérifie si les champs sont vides
if((empty($_POST['email'])) or (empty($point)) or (empty($aroba))) {
echo "<font color='red'>Votre email <strong>".$_POST['email']."</strong> nest pas valide</font>";
} else {
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die("Erreur de connexion ".mysql_error());
// sélection de la base
mysql_select_db('inscription',$db) or die("Erreur de selection ".mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO newsletter(email,date) VALUES ('$email','$date_ajout')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die("Erreur SQL !".$sql."<br>".mysql_error());
// on affiche le résultat pour le visiteur
echo "Votre email <strong>".$_POST['email']."</strong> a été ajouté.";
mysql_close(); // on ferme la connexion
}
} else {
echo "Aucune donnée a ajouter !";
}
?>
</body>
</html>
Posté : 11 juin 2005, 19:10
par sop_graff
je le comprend mais je suis toujours en formation et je ne connais pas toutes les syntaxes, enfin merci beaucoup
Posté : 11 juin 2005, 19:16
par DocType
je le comprend mais je suis toujours en formation et je ne connais pas toutes les syntaxes, enfin merci beaucoup
ca fonctionne?, y'a aucun soucis restant?
dans ce cas la un modo peut il rajouté resolu au titre ou on laisse ouvert?

Posté : 11 juin 2005, 20:32
par sop_graff
non, ya encore un problème, il indique tout de suite qu'il n'a aucune donnée à ajouté
Posté : 11 juin 2005, 20:56
par Samanderson
Je peux me tromper mais il faudrait peut-etre mettre method="GET" à la place de method="post" dans la balise <form>
Posté : 11 juin 2005, 22:14
par smarties
Sinon tu peux concaténer l'url avec les données de ton formulaire et tu récupères les infos dans la popup avec $_GET
Posté : 11 juin 2005, 22:19
par sop_graff
ça j'ai déja essayé mais ça ne prend pas avec l'ouverture de la pop-up
Posté : 11 juin 2005, 22:27
par smarties
Tes données ne seront pas postées en tout cas donc ca sert à rien d'utiliser GET ou POST.
Donc je te propose d'essayer avec ca :
Code : Tout sélectionner
function popUP(url,nom,details) {
window.open(url+"&une_des_variables="+document.f.une_des_variables,nom,details);
}
<form name="f">
<input type="text" name="une _des_variables">
<input type="button" onClick="popUP('ta_popup.php','popup','width=400,height=100');document.f.une_des_variables.value=''">
</form>
Posté : 13 juin 2005, 14:33
par sop_graff
Je vous remercie tous de votre aide, en me basant sur l'ensemble de vos corrections, j'ai réussi!! merci et à une prochaine fois