Page 1 sur 2

formulaire

Posté : 28 avr. 2015, 14:30
par olicarie
Bonjour,
Je suis en train de mettre en place un site participatif (http://www.icaris.org )et je voudrais avant un départ imminent pour plusieurs mois terminer la mise en place d'un formulaire ; je n'ai plus le temps de de m'initier au langage php afin de comprendre des scripts qui me sont présentement totalement illisibles.. .quelqu'un aurait il la gentillesse de vouloir m'aider à corriger et compléter le script de ce formulaire ?
Je cherche désespérément à afficher la valeur de la base de donnée somme_part, mais je n'arrive pas à récupérer cette valeur qui semble ne pas être déclarée.
Je voudrais également faire apparaître quelque part sur la page la somme totale somme_tot mais je n'ai aucune idée de comment procéder, ni pour l'inscrire dans la base de données, ni pour la récupérer et la faire apparaître sur la page...
Une autre difficulté que je rencontre est celle d'inclure les noms et prénoms dans le mail automatique...
Le compteur ne semble pas très bien fonctionner non plus...
Je n'ai malheureusement plus le temps de chercher... alors si cela ne représente pas une difficulté pour vous et que vous vouliez bien participer à l'élaboration de ce site, je vous en serais très sincèrement reconnaissant !
Voici le code des deux pages de script dont je dispose pour ce formulaire, ainsi que des images de la structure de la base de donnée :
1-

Code : Tout sélectionner

<?php session_start ( ); require_once ("fonctions.php"); //initialisations $mess= ""; $nom = ""; $prenom = ""; $oui = ""; $parts=""; $somme_part = ""; if (isset ($_SESSION['mess']) ) $mess = $_SESSION['mess']; if (isset ($_SESSION['nom']) ) $nom = $_SESSION['nom']; if (isset ($_SESSION['prenom']) ) $prenom = $_SESSION['prenom']; if (isset ($_SESSION['compte']) ) $oui = $_SESSION['compte']; if (isset ($_SESSION['parts'])) $parts = ( $_SESSION['parts'] ); if (isset ($_SESSION['somme_part']) ) $somme_part = $_SESSION['somme_part']; // Comptage si le visiteur est nouveau if ( empty($oui) ) { // ouverture de la base $ouvert = connect_bd (); $nombre = mysql_query( "SELECT nombre FROM compteur WHERE id='1' ;"); // recuperation du nombre de visites if (mysql_num_rows($nombre) > 0) $result = mysql_fetch_assoc($nombre); $nb= $result['nombre']; // visites +1 et prise en compte de la visite $nb ++; $_SESSION['compte']=$nb; // ré ecriteure du nouveau nombre de visites $sql ="UPDATE compteur SET nombre ='$nb' WHERE id='1' ;"; if (!mysql_query($sql) ) die('Probleme au comptage des visiteurs' . mysql_error()); // recuperation de la somme partielle if (mysql_num_rows($somme_part) > 0) $resultat = mysql_fetch_assoc($somme_part); $somme_part= $resultat['somme_part']; // fermeture de la base mysql_close($ouvert); } else { $nb = $oui ; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr"> <head> <title>formulaire de participation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Language" content="fr" /> <link href='css/participation.css' type='text/css' rel='stylesheet' /> </script> </head> <div id="corps" > <form class="participation" action='traitement-participation.php' method='post'> <fieldset> <legend> &nbsp; </legend> <p id="question" > <h1>Faire une promesse d'apport à la future SAS<br/> "Le Village Icaris"</h1> <?php if (!empty($mess) ) echo " <br /><span style='color:red'>".$mess."</span> " ;?> <br /> <b>Votre Nom :</b><br /><input type="text" name="nom" size="15"/><br /> <b>Votre Prénom :</b><br /><input type="text" name="prenom" size="15" /><br /> <b>Votre Mail :</b><br /><input type="text" name="mail" size="15" /><br /> <b>Nombre de parts à 10€ :</b><br /><input type="mediumint" name="parts" size="5" /><br /> <br /><input type="submit" name="valid" value="Envoyer"/> </p> </fieldset> </form> <div class="participation" > <fieldset id="cadre"> <?php if ( !empty ( $nom ) ) echo "<p>Merci pour votre promesse d'apport qui a bien été prise en compte,<em> $prenom $nom </em>.<br/>Votre promesse d'apport est de $somme_part euro.<br/>Vous êtes le $nb ème participant au projet Le Village Icaris ! </p> \n"; "<p> </p> \n"; ?> </fieldset> <p><a href="http://www.icaris.org"><h3>Aller sur la page d'accueil</h3></a></p> <p><a href="http://www.icaris.org/dokuwiki/doku.php"><h3>Aller sur le site participatif</h3></a></p> </div> </body> </html>

2-

Code : Tout sélectionner

<?php require_once ("fonctions.php"); $table = "participation" ; //nom de la table recevant les mails // initialisations session_start ( ) ; $nom=""; $prenom=""; $mel=""; $parts=""; $somme_part=""; $somme_tot=""; $_SESSION['mess']=""; $_SESSION['prenom']=""; $_SESSION['nom']=""; $syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; // Récupération des infos if (isset ($_POST['nom'])) $nom = htmlspecialchars( $_POST['nom'] ); if (isset ($_POST['prenom'])) $prenom = htmlspecialchars( $_POST['prenom'] ); if (isset ($_POST['mail'])) $mel = htmlspecialchars( $_POST['mail'] ); if (isset ($_POST['parts'])) $parts = ( $_POST['parts'] ); // Verification presence des infos if ( empty($nom) ) $_SESSION['mess'] ="Le nom est manquant"; if ( empty($prenom) ) $_SESSION['mess'] ="Le prénom est manquant"; if ( empty($mel) ) { $_SESSION['mess'] ="Le mail est manquant"; }else{ if(!preg_match($syntaxe,$mel)) $_SESSION['mess'] ="Le mail est incorrect"; } if ( empty($parts) ) $_SESSION['mess'] ="Le nombre de parts est manquant"; // on ne traite que si les infos sont correctes if ( empty($_SESSION['mess']) ) { // ouverture de la base de données $ouvert = connect_bd (); // Vérification que l'adresse n'est pas deja saisie $reponse = mysql_query( "SELECT mail, nom , prenom FROM ".$table." WHERE mail='".$mel."' ;"); $_SESSION['nom'] = $nom; $_SESSION['prenom']=$prenom; if (mysql_num_rows($reponse) > 0) $_SESSION['mess'] = "Cette adresse existe déjà dans la base"; //calcul de la somme partielle $first_number = ( $_POST['parts'] ); $second_number = 10; $somme_part = $second_number * $first_number; // Ecriture des infos dans la base if ( empty($_SESSION['mess']) ) { $sql ="INSERT INTO ".$table." ( nom , prenom, mail , date, parts, somme_part, somme_tot ) VALUES ( '$nom' , '$prenom' , '$mel' , CURRENT_TIMESTAMP () , '$parts' , '$somme_part' , '$somme_tot')"; if (!mysql_query($sql) ) die('y a un probleme à l ecriture ' . mysql_error()); } } // Envoi du mail de confirmation $destinataire = $mel; $sujet = "Votre promesse de participation à la SAS Le Village Icaris" ; $entete = "From: [email protected]" ; $message = 'Bonjour, Ce mail vous est envoyé automatiquement par le site www.icaris.org suite à votre promesse de participation à la SAS Le Village Icaris. --------------- Le Village Icaris vous remercie pour votre promesse d\'apport à la future SAS qui en constituera la fondation. Nous vous rappelons qu\'il vous sera demandé d\'honorer cette promesse lorsque la somme des promesses cumulées sera suffisamment conséquente pour engager la formation de la SAS. Nous vous invitons sur ce point à encourager toute personne de votre entourage à s\'engager, même pour une petite somme : les petits ruisseaux faisant les grandes rivières, un grand nombre de petites actions pourrait rapidement constituer un capital non négligeable... Nous espérons vous retrouver bientôt sur le site participatif ( http://www.icaris.org/dokuwiki/doku.php ) pour un échange destiné à forger Le Village Icaris en son corps subtil de manière à l\'instaurer plus aisément dans la matière. Nous ne manquerons pas par ailleurs de vous avertir de toute avancée notable dans sa réalisation. Nous vous encourageons également à apprendre et diffuser La Marche des Artisans d\'un Monde Nouveau, Hymne à l\'Evolution, en vous inscrivant sur le site www.hymnevolution.fr Dans l\'attente d\'un échange plus personnalisé, soyez assuré(e), cher(e) ami(e), de notre fraternelle considération. L\'équipe de icaris.org --------------- http://icaris.org/fraternite_3_destination_le_village_icaris.pdf --------------- Bien que ceci soit un mail automatique, il vous est possible d\'y répondre.'; mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail // fermeture de la base mysql_close($ouvert); // Retour à la page precedente header('Location: promesse.php'); ?>
Image

Image

Image

Un grand merci si vous avez pris le temps de lire jusqu'au bout ce code sans doute un peu indigeste pour vous qui connaissez le langage php... et un immense merci si vous voulez bien prendre encore celui de le corriger !
Vous seriez ainsi la seconde personne à apporter concrètement votre pierre à l'édification du Village Icaris qui a bien besoin de vous et qui vous remercie vivement pour votre participation !
Bien cordialement.
Troubadour Olivier d'Icarie

ps : je ne sais pourquoi le lien vers les images ne fonctionnent pas, aussi, voilà les adresses :
http://icaris.org/formulaire/capture_1.jpg
http://icaris.org/formulaire/capture_2.jpg
http://icaris.org/formulaire/capture_3.jpg

Re: formulaire

Posté : 30 avr. 2015, 19:14
par olicarie
SOS personne pour me donner un petit coup de main ?

Re: formulaire

Posté : 01 mai 2015, 00:41
par Jon
Qu'est ce tu veux au juste. On peut pas aider si tu nous dis pas ce que tu veux. Le formulaire a l'air correct mais les donnees utilisateurs ne sont pas sanitises. Tu vas me faire le plaisir de commencer par verifier ca d'abord. Ok ?

Re: formulaire

Posté : 01 mai 2015, 02:03
par @rthur
Qu'est ce tu veux au juste. On peut pas aider si tu nous dis pas ce que tu veux. Le formulaire a l'air correct mais les donnees utilisateurs ne sont pas sanitises. Tu vas me faire le plaisir de commencer par verifier ca d'abord. Ok ?
Modération :
Bonjour Jon,
Merci de conserver un ton courtois et constructif dans tes messages. PHPfrance est un forum d'entraide où doit régner l'esprit du partage de connaissance, notamment dans le forum PHPdébutant qui, comme son nom l'indique, s'adresse aux débutants et où il est important de faire preuve de pédagogie.

Re: formulaire

Posté : 01 mai 2015, 10:42
par olicarie
Bonjour
Une réponse, c'est déjà quelque chose... même si elle ne représente pas vraiment une aide pour le moment...
Ce que je veux ? Je croyais l'avoir exprimé dans ma demande... Je vais donc tenter d'être plus clair.
Je souhaiterais qu'une personne qui détient les connaissances nécessaires puisse revoir ce code auquel j'avoue ne rien comprendre (j'ai construit le formulaire en reprenant des parties de code qui fonctionnent dans d'autres pages), de manière à ce que :
  1. 1- la valeur des parts souscrites (somme_part) apparaisse dans le retour (votre apport est de ... euro)

Code : Tout sélectionner

if ( !empty ( $nom ) ) echo "<p>Merci pour votre promesse d'apport qui a bien été prise en compte,<em> $prenom $nom </em>.<br/>Votre promesse d'apport est de $somme_part euro.<br/>Vous êtes le $nb ème participant au projet Le Village Icaris ! </p> \n";
  • 2- la somme totale des apports virtuels apparaisse quelque part sur la page du formulaire (faire un echo de cette valeur)
  • 3- les différentes valeurs telles que prénom, nom, nombre de parts et somme apparaissent dans le mail automatique
(En ce qui concerne le compteur, j'ai pu faire la réparation)

Je promets que dès que j'en aurai la possibilité, je me lancerai dans l'étude du langage php afin de pouvoir me débrouiller seul, mais je suis malheureusement maintenant pris par le temps...
Je rappelle que le site http://www.icaris.org a pour vocation d'être un site participatif, et que toutes les bonnes volontés sont les bienvenues... Merci encore à tous ceux qui voudront bien lui apporter un peu de leur temps et de leur compétence.
O.V.I

Si vous souhaitez vérifier le comportement actuel du formulaire sur le site, vous pouvez faire une promesse fictive en incluant fictif dans le nom déclaré : ces promesses ne représentant pas un engagement, je les supprimerai de la base de donnée.
Bien entendu, vous pouvez également faire une vraie promesse d'apport : elle sera toujours la bienvenue !

Re: formulaire

Posté : 03 mai 2015, 09:09
par olicarie
Bonjour
pourquoi cette insertion d'un autre sujet au milieu de ma demande, qui pour le coup risque fort de rester sans réponse ?
N'y aurait il pas une bonne volonté pour m'aider à rédiger ce formulaire ?
Quelqu'un possédant les connaissances nécessaires n'aurait-il pas quelques minutes de son temps à offrir à l'élaboration d'un site participatif à visée humaniste ?
D'avance merci à qui voudrait bien prendre le temps de comprendre ma demande et d'y apporter quelque pertinente réponse...

Re: formulaire

Posté : 03 mai 2015, 11:49
par @rthur
Bonjour
pourquoi cette insertion d'un autre sujet au milieu de ma demande, qui pour le coup risque fort de rester sans réponse ?
Effectivement, tu as raison. J'ai séparé les 2 questions pour plus de clarté : php-debutant/mysql-fetch-array-expects- ... 73708.html

Re: formulaire

Posté : 03 mai 2015, 12:40
par Saian
Bonjour Olicarie,

Si tu veux ajouter les nom, prénom et somme_part dans l'email qui est écrit dans la variable $message encapsulé par des apostrophes (') il suffit de faire de la concaténation de chaine.

$var = 'Un bout de chaine '.$une_variable.' un autre bout de chaine.';

Ensuite si tu veux pouvoir accéder à ces informations dans la page promesse suite au header('Location: promesse.php'); comme c'est un nouveau script qui s'exécute, il n'a pas accès au variable du script qui envoie le mail. C'est pour ça que les variables qui doivent passer d'un script à l'autre sont mémoriser dans des variables de session (qui sont elles accessibles dans tous les scripts tant que la session est active session_start() et qu'elle n'a pas expirée) :
$_SESSION['nom'] = $nom;
$_SESSION['prenom']=$prenom;

Or la somme_part elle n'est jamais mémorisée en session. Ajoute donc un $_SESSION['somme_part'] = $somme_part après son calcul :
$somme_part = $second_number * $first_number;
$_SESSION['somme_part'] = $somme_part;

La ligne suivante pourra ainsi fonctionner comme voulu :
if (isset ($_SESSION['somme_part']) ) $somme_part = $_SESSION['somme_part'];

Les 2 lignes suivantes n'ont pas de sens, tu peux les supprimer :
// recuperation de la somme partielle
if (mysql_num_rows($somme_part) > 0) $resultat = mysql_fetch_assoc($somme_part);
$somme_part= $resultat['somme_part'];

$somme_part est une somme, à priori un entier. Ce n'est pas un résultat de requête sql.
mysql_num_rows sert à savoir combien il y a de lignes dans un résultat mysql et mysql_fetch_assoc permet, avec un while, de récupérer chaque ligne de résultat et de la transformer en tableau associatif.
http://php.net/manual/fr/function.mysql-num-rows.php
http://php.net/manual/fr/function.mysql-fetch-assoc.php

La variable $somme_tot elle est définit une fois à vide $somme_tot = ''; et n'est ensuite jamais alimentée, elle est donc enregistrée vide dans la base de données. Lors de l'insert du donateur, il faut mettre somme_tot = somme_part.

Si elle doit servir à mémoriser la somme total des dons d'une même personne, le cas n'est pas du tout géré.
Il faudrait, si l'email est déjà présent dans la BDD, prévoir de mettre à jour somme_tot en récupérant sa valeur et en y additionnant le nouveau somme_part puis faire une requête d'update.
A noter que dans somme_part tu n'auras jamais que la valeur du dernier don de la personne.

Je pense que ça te fait déjà une bonne base de réflexion pour arranger tout ça.
Bon courage.

Re: formulaire

Posté : 03 mai 2015, 22:16
par olicarie
Merci beaucoup, Saian pour cette réponse qui m'a enfin permis d'arriver en partie à mes fins...
Il me reste à régler le problème de la somme totale, qui doit en fait représenter la somme totale de toutes les promesses d'apport.
Je suppose qu'il s'agit là d'une requête vers la base de données, mais là, je suis complètement perdu...
Merci pour vos lumières.

Re: formulaire

Posté : 03 mai 2015, 23:35
par Saian
Une requête vers la base de données tout à fait :
$participation = mysql_fetch_object(mysql_query('SELECT SUM(somme_part) AS somme_tot FROM participation'));
echo $participation->somme_tot;
Le SUM(somme_part) va faire le total de la colonne somme_part de toutes les lignes de la table participation.

Re: formulaire

Posté : 04 mai 2015, 15:36
par olicarie
Bonjour Saian et merci pour votre aide précieuse : grâce à elle mon formulaire a nettement évolué : j'ai pu se faire afficher le montant de la promesse au retour du formulaire et inclure comme je le voulais les valeurs nom, prénom et somme_part dans le mail ; mais je reste malheureusement bloqué sur la somme globale des participations que je n'arrive pas à afficher.
Peut-être n'ai-je pas inclus le code au bon endroit ? Ou bien une variable non déclarée ? Bref, j'ai encore besoin de votre aide !
Je voudrais aussi faire en sorte que la table compteur indique non pas le nombre de visite mais le nombre de promesses... que faudrait il changer dans le code pour arriver à ce résultat ?
Merci de venir encore à mon secours !

http://icaris.org/formulaire/promesse.php

Si vous désirez tester le comportement actuel directement en ligne, vous pouvez faire une promesse fictive en incluant le mot fictif dans le champ nom ou prénom : j'effacerais le cas échéant ces lignes de la base de donnée.


1-promesse.php

Code : Tout sélectionner

<?php session_start ( ); require_once ("fonctions.php"); //initialisations $mess= ""; $nom = ""; $prenom = ""; $oui = ""; $parts=""; $somme_part = ""; $res=""; $participation= ""; $somme_tot = ""; if (isset ($_SESSION['mess']) ) $mess = $_SESSION['mess']; if (isset ($_SESSION['nom']) ) $nom = $_SESSION['nom']; if (isset ($_SESSION['prenom']) ) $prenom = $_SESSION['prenom']; if (isset ($_SESSION['compte']) ) $oui = $_SESSION['compte']; if (isset ($_SESSION['parts'])) $parts = ( $_SESSION['parts'] ); if (isset ($_SESSION['somme_part']) ) $somme_part = $_SESSION['somme_part']; if (isset ($_SESSION['res']) ) $res = $_SESSION['res']; if (isset ($_SESSION['participation']) ) $participation = $_SESSION['participation']; if (isset ($_SESSION['somme_tot']) ) $somme_tot = $_SESSION['somme_tot']; // Comptage si le visiteur est nouveau if ( empty($oui) ) { // ouverture de la base $ouvert = connect_bd (); $nombre = mysql_query( "SELECT nombre FROM compteur WHERE id='1' ;"); // recuperation du nombre de visites if (mysql_num_rows($nombre) > 0) $result = mysql_fetch_assoc($nombre); $nb= $result['nombre']; // visites +1 et prise en compte de la visite $nb ++; $_SESSION['compte']=$nb; // ré ecriteure du nouveau nombre de visites $sql ="UPDATE compteur SET nombre ='$nb' WHERE id='1' ;"; if (!mysql_query($sql) ) die('Probleme au comptage des visiteurs' . mysql_error()); // fermeture de la base mysql_close($ouvert); } else { $nb = $oui ; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr"> <head> <title>formulaire de participation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Language" content="fr" /> <link href='css/participation.css' type='text/css' rel='stylesheet' /> </script> </head> <div id="corps" > <form class="participation" action='traitement-participation.php' method='post'> <fieldset> <legend> &nbsp; </legend> <p id="question" > <h1>Faire une promesse d'apport à la future SAS<br/> "Le Village Icaris"</h1> <?php if (!empty($mess) ) echo " <br /><span style='color:red'>".$mess."</span> " ;?> <?php $date = date("d-m-Y"); $heure = date("H:i"); Print("<h2>Le $date à $heure <br/> le capital virtuel de la SAS Le Village Icaris s'élève à<br/> $participation euro</h2>"); ?> <br /> <b>Votre Nom :</b><br /><input type="text" name="nom" size="15"/><br /> <b>Votre Prénom :</b><br /><input type="text" name="prenom" size="15" /><br /> <b>Votre Mail :</b><br /><input type="text" name="mail" size="15" /><br /> <b>Nombre de parts à 10€ :</b><br /><input type="mediumint" name="parts" size="5" /><br /> <br /><input type="submit" name="valid" value="Envoyer"/> </p> </fieldset> </form> <div class="participation" > <fieldset id="cadre"> <?php if ( !empty ( $nom ) ) echo "<p>Merci pour votre promesse d'apport qui a bien été prise en compte,<em> $prenom $nom </em>.<br/>Votre promesse d'apport est de <em> $somme_part </em> euro.<br/>Vous êtes le $nb ème participant au projet Le Village Icaris ! <br/> Grâce à votre promesse d'apport, le capital virtuel de la SAS Le Village Icaris s'élève à $participation euro.</p> \n"; "<p> </p> \n"; echo ($res); ?> </fieldset> <p><a href="http://www.icaris.org"><h3>Aller sur la page d'accueil</h3></a></p> <p><a href="http://www.icaris.org/dokuwiki/doku.php"><h3>Aller sur le site participatif</h3></a></p> </div> </body> </html>
2- traitement.php

Code : Tout sélectionner

<?php require_once ("fonctions.php"); $table = "participation" ; //nom de la table recevant les mails // initialisations session_start ( ) ; $nom=""; $prenom=""; $mel=""; $parts=""; $somme_part=""; $somme_tot=""; $_SESSION['mess']=""; $_SESSION['prenom']=""; $_SESSION['nom']=""; $syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; // Récupération des infos if (isset ($_POST['nom'])) $nom = htmlspecialchars( $_POST['nom'] ); if (isset ($_POST['prenom'])) $prenom = htmlspecialchars( $_POST['prenom'] ); if (isset ($_POST['mail'])) $mel = htmlspecialchars( $_POST['mail'] ); if (isset ($_POST['parts'])) $parts = ( $_POST['parts'] ); // Verification presence des infos if ( empty($nom) ) $_SESSION['mess'] ="Le nom est manquant"; if ( empty($prenom) ) $_SESSION['mess'] ="Le prénom est manquant"; if ( empty($mel) ) { $_SESSION['mess'] ="Le mail est manquant"; }else{ if(!preg_match($syntaxe,$mel)) $_SESSION['mess'] ="Le mail est incorrect"; } if ( empty($parts) ) $_SESSION['mess'] ="Le nombre de parts est manquant"; // on ne traite que si les infos sont correctes if ( empty($_SESSION['mess']) ) { // ouverture de la base de données $ouvert = connect_bd (); // Vérification que l'adresse n'est pas deja saisie $reponse = mysql_query( "SELECT mail, nom , prenom FROM ".$table." WHERE mail='".$mel."' ;"); $_SESSION['nom'] = $nom; $_SESSION['prenom']=$prenom; if (mysql_num_rows($reponse) > 0) $_SESSION['mess'] = "Cette adresse existe déjà dans la base"; //calcul de la somme partielle $first_number = ( $_POST['parts'] ); $second_number = 10; $somme_part = $second_number * $first_number; $_SESSION['somme_part'] = $somme_part; //somme globale $participation = mysql_fetch_object(mysql_query('SELECT SUM(somme_part) AS somme_tot FROM participation')); echo $participation->somme_tot; // Ecriture des infos dans la base if ( empty($_SESSION['mess']) ) { $sql ="INSERT INTO ".$table." ( nom , prenom, mail , date, parts, somme_part, somme_tot ) VALUES ( '$nom' , '$prenom' , '$mel' , CURRENT_TIMESTAMP () , '$parts' , '$somme_part' , '$somme_tot')"; if (!mysql_query($sql) ) die('y a un probleme à l ecriture ' . mysql_error()); } } // Envoi du mail de confirmation $destinataire = $mel; $sujet = "Votre promesse de participation à la SAS Le Village Icaris" ; $entete = "From: [email protected]" ; $nom = ($_SESSION ['nom']) ; $prenom = ($_SESSION ['prenom']) ; $somme_part = ($_SESSION ['somme_part']) ; $message = 'Bonjour, '.$prenom.' '.$nom.' Ce mail vous est envoyé automatiquement par le site www.icaris.org suite à votre promesse de participation à la SAS Le Village Icaris. --------------- Le Village Icaris vous remercie pour votre promesse d\'apport de '.$somme_part.' euro à la future SAS qui en constituera la fondation. Nous vous rappelons qu\'il vous sera demandé d\'honorer cette promesse lorsque la somme des promesses cumulées sera suffisamment conséquente pour engager la constitution de la SAS. Nous vous invitons sur ce point à encourager toute personne de votre entourage à s\'engager, même pour une petite somme : les petits ruisseaux faisant les grandes rivières, un grand nombre de petites actions pourrait rapidement constituer un capital non négligeable... Nous espérons vous retrouver bientôt sur le site participatif ( http://www.icaris.org/dokuwiki/doku.php ) pour un échange destiné à forger Le Village Icaris en son corps subtil de manière à l\'instaurer plus aisément dans la matière. Nous ne manquerons pas par ailleurs de vous avertir de toute avancée notable dans sa réalisation. Nous vous encourageons également à apprendre et diffuser La Marche des Artisans d\'un Monde Nouveau, Hymne à l\'Evolution, en vous inscrivant sur le site www.hymnevolution.fr Dans l\'attente d\'un échange plus personnalisé, soyez assuré(e), cher(e) ami(e), de notre fraternelle considération. L\'équipe de icaris.org --------------- http://icaris.org/fraternite_3_destination_le_village_icaris.pdf --------------- Bien que ceci soit un mail automatique, il vous est possible d\'y répondre.'; mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail // fermeture de la base mysql_close($ouvert); // Retour à la page precedente header('Location: promesse.php'); ?>

Re: formulaire

Posté : 04 mai 2015, 15:50
par Saian
Alors tu peux ajouter la requête que je t'ai proposée quelque part entre le connect_db et le mysql_close (de promesse.php) et dans le echo récapitulatif tu mets $participation->somme_tot.
Sinon y aurai pas mal de nettoyage à faire dans ce script. ^^

EDIT
Le code que je t'ai donné c'est juste un exemple de requête + affichage du résultat. C'était pas dans l'idée que tu le copies/colles comme ça.
La requête est à faire dans la page où tu veux afficher somme_tot et le echo à faire à l'endroit où tu veux l'afficher...

Re: formulaire

Posté : 04 mai 2015, 18:41
par olicarie
Merci encore pour ta réponse.
Je me doute bien qu'il y a beaucoup de ménage à faire... mais je ne sais pas faire... alors, déjà, première étape si ça marche c'est beau ! Après j'essaierai d'enlever petit à petit... (peut être avec ton aide ?)
J'ai fait comme tu m'as dit (du moins je crois) mais je reçois invariablement cette notice d'erreur :

Notice: Trying to get property of non-object in C:\Users\Olivier d'Icarie\Documents\icaris\formulaire\promesse.php

Image

Code : Tout sélectionner

//somme globale $participation = mysql_fetch_object(mysql_query('SELECT SUM(somme_part) AS somme_tot FROM participation')); // fermeture de la base mysql_close($ouvert); } else { $nb = $oui ; } ?>

Code : Tout sélectionner

<?php $date = date("d-m-Y"); $heure = date("H:i"); Print("<h2>Le $date à $heure <br/> le capital virtuel de la SAS Le Village Icaris s'élève à<br/> $participation->somme_tot euro</h2>"); ?>

Code : Tout sélectionner

<?php if ( !empty ( $nom ) ) echo "<p>Merci pour votre promesse d'apport qui a bien été prise en compte,<em> $prenom $nom </em>.<br/>Votre promesse d'apport est de <em> $somme_part </em> euro.<br/>Vous êtes le $nb ème participant au projet Le Village Icaris ! <br/> Grâce à votre promesse d'apport, le capital virtuel de la SAS Le Village Icaris s'élève à $participation->somme_tot euro.</p> \n"; ?>
PS la requête semble marcher avant l'envoi du formulaire, mais pas à son retour (en local). En fait ça semble ne plus fonctionner dès l'obtention du cookie

La page si je la charge en ayant effacé le cookie :
http://icaris.org/formulaire/Capture_5.JPG

La même page si je la charge à nouveau :
http://icaris.org/formulaire/Capture_6.JPG

Re: formulaire

Posté : 05 mai 2015, 13:47
par Saian
Salut, je vois que la requête est dans un if else, je présume donc que quand tu as la notice, c'est parce que le code est passé dans le else et n'a donc pas fait la requête.

Si la requête doit s'exécuter tout le temps, sort la du if else, sinon déplace la dans le else et n'oublie pas, si besoin, d'ajouter la connexion à la base de données avant et la fermeture de la connexion après.

Re: formulaire

Posté : 08 mai 2015, 19:54
par olicarie
Bonjour,
merci Saian, grâce à ton aide, mon formulaire a bien évolué...
Il me reste malgré tout encore un problème à régler : j'ai supprimé la référence au compteur, car en fait je voudrais récupérer le nombre figurant dans la colonne (id) de ma bdd pour l'afficher à la place. Seulement, je n'arrive toujours pas à récupérer et afficher cette valeur. Voici mon nouveau code. Tout semble fonctionner sauf ce paramètre : cette valeur reste bloquée sur 1... Merci de me venir encore en aide.
<?php
	session_start (  );
	require_once ("fonctions.php");
//initialisations
	$mess= "";
	$nom = "";
	$prenom = "";
	$oui = "";
	$parts="";
	$somme_part	= "";
	$participant = "participant";
	
	if (isset ($_SESSION['mess']) )   $mess = $_SESSION['mess'];
	if (isset ($_SESSION['nom']) ) 	  $nom  = $_SESSION['nom'];
	if (isset ($_SESSION['prenom']) ) $prenom  = $_SESSION['prenom'];
	if (isset ($_SESSION['compte']) ) $oui  = $_SESSION['compte'];
	if (isset ($_SESSION['parts'])) $parts = ( $_SESSION['parts'] );
	if (isset ($_SESSION['somme_part']) ) $somme_part  = $_SESSION['somme_part'];
	if (isset ($_SESSION['participant']) ) $participant  = $_SESSION['participant'];
	
		//somme globale
		$ouvert = connect_bd ();
		$participation = mysql_fetch_object(mysql_query('SELECT SUM(somme_part) AS somme_tot FROM participation'));
		$_SESSION['participation'] = $participation->somme_tot;	
		
		//récupération id participant
		$participant = mysql_fetch_object(mysql_query('SELECT (id) AS participant FROM participation WHERE id="1"'));
		$_SESSION['participant'] = $participant->participant;	
?>

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr"> <head> <title>formulaire de participation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Language" content="fr" /> <link href='css/participation.css' type='text/css' rel='stylesheet' /> </script> </head> <div id="corps" > <form class="participation" action='traitement-participation.php' method='post'> <fieldset> <legend> &nbsp; </legend> <p id="question" > <h1>Faire une promesse d'apport à la future SAS<br/> "Le Village Icaris"</h1> <?php if (!empty($mess) ) echo " <br /><span style='color:red'>".$mess."</span> " ;?> <?php $date = date("d-m-Y"); $heure = date("H:i"); Print("<h2>Le $date à $heure <br/> le capital virtuel de la SAS Le Village Icaris s'élève à<br/> $participation->somme_tot euro</h2>"); ?> <br /> <b>Votre Nom :</b><br /><input type="text" name="nom" size="15"/><br /> <b>Votre Prénom :</b><br /><input type="text" name="prenom" size="15" /><br /> <b>Votre Mail :</b><br /><input type="text" name="mail" size="15" /><br /> <b>Nombre de parts à 10€ :</b><br /><input type="mediumint" name="parts" size="5" /><br /> <br /><input type="submit" name="valid" value="Envoyer"/> </p> </fieldset> </form> <div class="participation" > <fieldset id="cadre"> <?php if (!empty ( $nom ) ) echo "<p>Merci pour votre promesse d'apport qui a bien été prise en compte,<em> $prenom $nom </em>.<br/>Votre promesse d'apport est de <em> $somme_part </em> euro.<br/>Vous êtes le $participant->participant ème participant au projet Le Village Icaris ! <br/> Grâce à votre promesse d'apport, le capital virtuel de la SAS Le Village Icaris s'élève à $participation->somme_tot euro.</p> \n"; if (!empty($mess) ) echo "<p><span style='color:red'>Nous sommes désolés de n'avoir pu prendre en compte votre promesse de participation : une erreur est survenue dans la saisie de vos informations ; merci de vérifier les différents champs du formulaire</p> \n"; ?> </fieldset> <p><a href="http://www.icaris.org"><h3>Aller sur la page d'accueil</h3></a></p> <p><a href="http://www.icaris.org/dokuwiki/doku.php"><h3>Aller sur le site participatif</h3></a></p> </div> </body> </html>