Form PHP (ou HTML ?) d'incrémentation uniquement chiffres

Fermé
TsunaJima Messages postés 502 Date d'inscription samedi 21 septembre 2013 Statut Membre Dernière intervention 4 juillet 2021 - Modifié par TsunaJima le 11/03/2015 à 23:37
codeurh24 Messages postés 761 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 - 12 mars 2015 à 03:22
Bonsoir,

je dois organiser une bachelor party.
Je souhaite savoir quel est le budget de chacun pour les activité. Donc ce que chacun accepte de mettre comme € pour les activités (kart, striptease etc...).

Je cherche à faire une page simple avec 3 champs :

1 - Prénom
2 - Combien peux-tu dépenser pour les activités ? : (impossible de rentrer autre chose que des chiffres. Le chiffre 0 est accepté)
3 - Un champs ou on demande un mot de passe (histoire de pas avoir de personnes qui viennent sur la page sans y être invité) Pas besoin d'être sécurisé contre le FBI.
- Un bouton Submit.

Et pour finir le montant total disponible : ---- €
Le nbr de participant : ---/20 participants ont donné leur budget activité.

Je pense que pour stocker les infos, le plus simple est un ou plusieurs fichiers .txt mais je suis chez OVH et j'ai une Mysql donc si besoin pas de souci.

L'objectif c'est que moi j'ai les noms des personnes et les montants qui correspondent (que les gens sont prets à mettre) mais que le reste des personnes ne sache pas qui peux mettre combien d'euros. J'ai pas envi que certains se sentent obligé de mettre un gros montant sous prétexte qu'ils auraient l'air ridicules (aux yeux de certains seulement) etc...

Est-ce que quelqu'un sait faire ça sans que ça lui prenne 1 heure ou... c'est pas possible ? Je comprends bien que je demande quelque chose de complètement gratuit etc... Mais bon autant demander.

Merci
A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 12/03/2015 à 10:34
Bonjour,

Je ne comprend pas... tu as un hébergement chez ovh... tu connais donc le html/php un minimum non ?

bon..
voici le code brut de fonderie....
A toi d'y ajouter de la mise en page si necessaire
<?php
//$password = "Bachel0r";

// Ici .. mettre le code à la BDD 
// par exemple :
$VALEUR_hote='localhost';
$VALEUR_port='port';
$VALEUR_nom_bd='nom_de_la_BDD';
$VALEUR_user='root';
$VALEUR_mot_de_passe='mot_de_passe';
$oPdo = new PDO('mysql:host='.$VALEUR_hote.';port='.$VALEUR_port.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);


function getPost($name){
 return isset($_POST[$name])?$_POST[$name]:'';
}

//Traitement ....
// Il faudra bien entendu..créer une table dans la BDD
// pour stocker les résultats...
// La table aura comme noms de colonnes 
// les mêmes que les "input"
if(isset($_POST['enregistrer']){
 $prenom=getPost('prenom');
 $montant=getPost('montant');
$pwd = getPost('pwd');
// on vérifie le password
if($pwd==$password ){
 $sql="INSERT INTO nom_de_la_table (prenom,montant) VALUES('$prenom','$montant')";
 $oPdo->exec($sql);
 }

}

// récupération du montant total de la cagnote..
$sql = "SELECT SUM(montant) as TOTAL 
              ,count(prenom) as NB
        FROM nom_de_la_table";
$result = $oPdo->query($sql);
$result->setFetchMode(PDO::FETCH_OBJ);
$fetchResult = $result->fetch()
$sommeMontant = isset($fetchResult['TOTAL'])?$fetchResult['TOTAL']:0;
$NB = isset($fetchResult['NB'])?$fetchResult['NB']:0;

?>

<html> 
<meta charset=UTF-8>
<head> 
<title>BP</title>
 </head>
<body>
<h1><center>Bachelor Party</center></h1></br></br></br>
  <div style="margin:10px">
  <form method="post" action="">
  <pre>
   Prenom : <input type="text" size="50" name="prenom" style="margin-left:75px">
   <br>
   Participation : <input type="number" size="10" name="montant" style="margin-left:20px">
   <br>
   Password : <input type="password" name="pwd" style="margin-left:60px">
   <br>
    <input type="submit" value="valider" name="enregistrer">
    </pre>
   </form>
   </div>
   <div style="margin:40px">
    Le nbr de participant : <?php echo $NB;?>/20 participants ont donné leur budget activité. 
    Total : <?php echo $sommeMontant  ?> euros
   </div>
   
  </body>
 </html>


NB : je l'ai codé de tête sans tester.. si il y a des erreurs dis le nous ici qu'on t'aide à les corriger.

NB2 : Il faut que tu modifies les infos de connexion à la BDD par tes infos OVH

NB3: Il faut que tu créé une table pour stocker les résultats avec comme champs :
id (auto incrémenté), prenom(varchar), montant(integer)

EDIT : Ajout de la prise en compte du Password



Cordialement,
Jordane
0
codeurh24 Messages postés 761 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
Modifié par codeurh24 le 12/03/2015 à 03:18
Bonjour.

Tu peux t'aider de ce code et le modifier pour l'ajuster a tes besoins.
il utilise un fichier texte gérer en xml.
je n'utilise pas de session php.
Le mot de passe est 123456



<?php

if(createDataBase() === false){

//echo "bdd xml deja creer";

}


if( $_POST['pass'] == '123456'){

if( isset($_POST['prenom']) and
isset($_POST['somme']) and
!empty($_POST['somme']) and
!empty($_POST['prenom'])){

$data_brute = file_get_contents('data.xml');
if( substr_count($data_brute , '<prenom>'.$_POST['prenom']) == 0 ){
$data_brute = file_get_contents('data.xml');
$sxe = new SimpleXMLElement($data_brute);

$movie = $sxe->addChild('participant');
$movie->addChild('prenom', $_POST['prenom']);
$movie->addChild('somme', $_POST['somme']);


$fp = fopen('data.xml', 'w');
fwrite($fp, $sxe->asXML());
fclose($fp);

echo "Choix enregistrer, merci";

}else{
echo "Vous avez deja voté";
}

}


if( montantTotal() !== false)
{
echo "<br /><br />Il y a ".nbrParticiapant().' participant<br />';
echo "Montant total ".montantTotal()."€'<br /><br />";
}


?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>bachelor party</title>
</head>
<body>
<br />
<br />
<a href="./">deco</a>
<br />
<br />
<form action="" method="post">
<input name="pass" type="hidden" value="<?php echo $_POST['pass'] ;?>" />
<div>
<label>Prenom</label><input name="prenom" type="text" value="<?php echo @$_POST['prenom']?>" />
</div>
<div>
<label>Somme</label><input name="somme" type="text" pattern="[0-9]{1,3}" value="<?php echo @$_POST['somme']?>" />
</div>
<div>
<input id="submit" type="submit" value="valider" />
</div>
</form>
</body>
</html>

<?php

}else{

?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>bachelor party</title>
</head>
<body>
<form action="" method="post">
<div>
<label>Mot de Passe</label><input name="pass" type="password" />
</div>
<div>
<input id="submit" type="submit" value="valider" />
</div>
</form>
</body>
</html>

<?php

}

function createDataBase(){


if(!file_exists( "data.xml" )){
echo "creation de la bdd et de la table par defaut: OK<br />";
createTable();
return true;
}else{
$f = file_get_contents('data.xml');
if( empty($f) )
{
echo "récuperation de la table par defaut: OK<br />";
createTable();
return true;
}

return false;
}


}

function createTable(){

$xmlstr ='<?xml version=\'1.0\' standalone=\'yes\'?><data></data>';

$fp = fopen('data.xml', 'w');
fwrite($fp, $xmlstr);
fclose($fp);
}



function montantTotal(){

if(createDataBase() === false and nbrParticiapant() > 0)
{
$data_brute = file_get_contents('data.xml');
$data = new SimpleXMLElement($data_brute);

$montant = 0;
foreach ($data->participant as $participant) {
$montant += $participant->somme.'<br />';
}
return $montant;
}else{
return false;
}
}


function nbrParticiapant(){
$data_brute = file_get_contents('data.xml');
return substr_count($data_brute , '<participant>');
}

?>


0
codeurh24 Messages postés 761 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
12 mars 2015 à 03:22
puis le code pour lister les participants et leur budgets.


<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>bachelor party</title>
</head>
<body>
<?php

$data_brute = file_get_contents('data.xml');
$data = new SimpleXMLElement($data_brute);

$montant = 0;
foreach ($data->participant as $participant) {
echo $participant->prenom.': '.$participant->somme.'<br />';
}

?>

</body>
</html>
0