Bouton de formulaire ayant 2 actions

Résolu/Fermé
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 - 29 janv. 2010 à 23:37
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 - 1 févr. 2010 à 21:58
Bonjour (ou Bonsoir),
je suis entrain de créer un formulaire permettant d'ajouter des commentaires, mais il s'avère que je bloque sur la fin de celui-ci.
J'aurai aimé avoir un bouton (un seul et unique) permettant à la fois l'action "submit" et "window.close()" (ou similaire) afin que le formulaire soit posté ou envoyé sur la base de donnée et la page fermée automatiquement après l'envoie.

Merci d'avance...
Toutes les idées sont les bienvenues...
A voir également:

10 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2010 à 13:15
essayes en rajoutant dans ton

<input type="submit" ..............onClick="window.close();">
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
30 janv. 2010 à 19:47
Merci de ton aide.
J'ai rajouter le "onclick", ce qui donne :
<input type="submit" value="Envoyer" onClick="window.close();"/>
l'action de "onclick"de fait correctement mais le "submit" n'est pas effectué.
Je me suis peut-être trompé dans la synthax, mais je ne pense pas...
Voici tout mon "form" :

<form action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo"/><br/>
URL : <input type="text" name="url"/><br/>
Mail : <input type="text" name="mail"/><br/>
<textarea name="contenu" style="width:500px;height:200px"></textarea><br/>
<input type="submit" value="Envoyer" onClick="window.close();"/>
</form>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2010 à 21:44
et en passant par une fct JS qui va tester que l'envoi se fait avant le close

<script type="text/javascript">
function submit_close(){
	var envoi=document.form1.submit();
	if(envoi){
		window.close();
	}


}
</script>
<form name="form1" action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo"/><br/>
URL : <input type="text" name="url"/><br/>
Mail : <input type="text" name="mail"/><br/>
<textarea name="contenu" style="width:500px;height:200px"></textarea><br/>
<input type="button" value="Envoyer" onClick="submit_close();"/>
</form>
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
30 janv. 2010 à 21:54
J'ai modifié le "form" par ce que tu m'as donné et j'ai le droit à une erreur...
"Erreur SQL !
SELECT * FROM news WHERE id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2010 à 22:15
Si cette requette est dans le script cible c'est que le formulaire a bien été posté

regardes ta requette de plus près
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
30 janv. 2010 à 23:52
J'ai regardé dans ma base de donné et les données y sont bien enregistrées.
Mais pourquoi ai-je cette erreur et pourquoi les données qui sont appelées par :
"$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo "------------------<br/>";
echo "<font color=#033><b>Son pseudo :</font></b> ";
echo $data2['pseudo'];
echo "<br/>";
echo "<font color=#033><b>Son commentaire :</font></b> ";
echo $data2["contenu"];
echo "<br />";
echo "------------------<br/>";
"

ne sont pas affichées... ?
Je suis désolé de t'embêter avec toutes mes questions... Et merci encore de ton aide.

Voici tout mon "form" :
<?php
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);


$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data=mysql_fetch_assoc($req);
echo "<h1><font color=#600>{$data["titre"]}</font></h1>";
echo "<p align\"right\"> du ".date("j/m/Y à G:i",strtotime($data["date"]))."</p>";
echo "<p>{$data["contenu"]}</p>";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo "------------------<br/>";
echo "<font color=#033><b>Son pseudo :</font></b> ";
echo $data2['pseudo'];
echo "<br/>";
echo "<font color=#033><b>Son commentaire :</font></b> ";
echo $data2["contenu"];
echo "<br />";
echo "------------------<br/>";
}
?>
<hr/>
<script type="text/javascript">
function submit_close(){
var envoi=document.form1.submit();
if(envoi){
window.close();
}
}
</script>
<form name="form1" action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo"/><br/>
URL : <input type="text" name="url"/><br/>
Mail : <input type="text" name="mail"/><br/>
<textarea name="contenu" style="width:500px;height:200px"></textarea><br/>
<input type="button" value="Envoyer" onClick='submit_close();'/>
</form>

après une erreur s'est peut-être glissée
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
31 janv. 2010 à 00:30
Je crois même que le problème peut provenir du "addcom.php" dont voici le script :
<?php
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO comment (pseudo,url,mail,contenu,news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: voir2.php?id=$news_id");
?>

car dans la barre d'adresse, j'ai après validation du formulaire :" [...]voir2.php?id=" comme si que la variable "$news_id" se perdait en route.

Les commentaires sont bien enregistrées dans la bdd, mais sous le "news_id" "0" aulieu du numéro de la new...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
31 janv. 2010 à 10:23
Il y a qq chose qui cloche dans ton principe:

1- tu ouvre une fenêtre vers ton site qui affiche le formulaire
2- tu veux que ce formualire soit envoyé au serveur
3- et que la fenêtre soit fermée
4- et ensuite que les données de ta base soient renvoyée dans ta fenêtre qui vient d'être fermée

le 3 est en trop

ensuite:

tu cherches a afficher les news coorespondant à un id $id d'ou provient cet id ,
car dans:

$sql="INSERT INTO comment (pseudo,url,mail,contenu,news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";

tu as bien $news_id qui te transmet l'id par l'url mais d'ou vient-il ?

ton formulaire te poste tout sauf ça

si tu veux voir tous les commentaires provenant d'un pseudo il vaudrait mieux faire WHERE pseudo=$pseudo
et passer cette valeur par l'url
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
31 janv. 2010 à 11:43
Je crois que je vais le refaire en simple, en enlevant la fermeture de la fenêtre, c'est pas dramatique.
Voici le script original :
"voir.php"
<?php
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);


$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data=mysql_fetch_assoc($req);
echo "<h1><font color=#600>{$data["titre"]}</font></h1>";
echo "<p align\"right\"> du ".date("j/m/Y à G:i",strtotime($data["date"]))."</p>";
echo "<p>{$data["contenu"]}</p>";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data2=mysql_fetch_assoc($req)){
echo "------------------<br/>";
echo "<font color=#033><b>Son pseudo :</font></b> ";
echo $data2['pseudo'];
echo "<br/>";
echo "<font color=#033><b>Son commentaire :</font></b> ";
echo $data2["contenu"];
echo "<br />";
echo "------------------<br/>";
}
?>
<hr/>
<form action="addcom.php" method="post">
Pseudo : <input type="text" name="pseudo"/><br/>
URL : <input type="text" name="url"/><br/>
Mail : <input type="text" name="mail"/><br/>
<textarea name="contenu" style="width:500px;height:200px"></textarea><br/>
<input type="submit" value="Envoyer"/>
</form>

"addcom.php"
<?php
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);
$sql="INSERT INTO comment (pseudo,url,mail,contenu,news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("Location: voir.php?id=$news_id");
?>
avec celui-ci, les infos sont bien enregistrées et apparaissent correctement sur la page où les commentaires sont postés.

Avec ce script, le commentaire est ajouté, mais la page ne ferme pas, et je n'ai pas de pb de requêtes SQL.
Je te remercie de m'avoir aidé, et d'avoir pris de ton temps.
0
Aresledieu Messages postés 32 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 22 septembre 2021 13
1 févr. 2010 à 21:58
Après avoir contacté un ami j'ai fini par trouvé comment résoudre le pb.
Il a juste fallut que je replace le header par un echo avec window.close().
C'était donc tout bête ...
0