formulaire, pop-up, variables et php

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 00:56

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

Mammouth du PHP | 1776 Messages

11 juin 2005, 02:27

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...

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 12:34

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>

Mammouth du PHP | 1776 Messages

11 juin 2005, 15:28

avec $_GET dans ton script alors que je te donne la methode $_POST c'est sûr que cela ne fonctionnera pas :roll:
<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 ! :wink:

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 16:27

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

Mammouth du PHP | 1776 Messages

11 juin 2005, 17:11

:roll: 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... :roll:
<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> 

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 19:10

je le comprend mais je suis toujours en formation et je ne connais pas toutes les syntaxes, enfin merci beaucoup

Mammouth du PHP | 1776 Messages

11 juin 2005, 19:16

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?
:wink:

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 20:32

non, ya encore un problème, il indique tout de suite qu'il n'a aucune donnée à ajouté

Petit nouveau ! | 6 Messages

11 juin 2005, 20:56

Je peux me tromper mais il faudrait peut-etre mettre method="GET" à la place de method="post" dans la balise <form>

Eléphant du PHP | 199 Messages

11 juin 2005, 22:14

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
Les 2 font la paire : coder ET commenter :wink:

sop_graff
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 22:19

ça j'ai déja essayé mais ça ne prend pas avec l'ouverture de la pop-up

Eléphant du PHP | 199 Messages

11 juin 2005, 22:27

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>
Les 2 font la paire : coder ET commenter :wink:

sop_graff
Invité n'ayant pas de compte PHPfrance

13 juin 2005, 14:33

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