formulaire insertion bdd
Posté : 14 juil. 2014, 17:11
Salut.
J'ai créer 2 formulaire, un ou l'utilisateur saisie les information et l'autre ou on vérifié les info et on procéde au payement.
Mon problème est que en bdd cela devrait être enregistré sous le même id et en fait il me créer 2 id .....:/
Page ma_pub.php
J'ai créer 2 formulaire, un ou l'utilisateur saisie les information et l'autre ou on vérifié les info et on procéde au payement.
Mon problème est que en bdd cela devrait être enregistré sous le même id et en fait il me créer 2 id .....:/
Page ma_pub.php
<?php
$erreurs = array(); //tableau contenant des messages d'erreurs
if(!empty($_POST)) {//soumission du formulaire
//Verification titre
if(empty($_POST['titre']))
{
$erreurs['titre'] = 'Renseigner un nom de sortie';
}
//Verification ville
if(empty($_POST['city']))
{
$erreurs['city'] = 'Renseigner une ville';
}
//Verification code postal
if(empty($_POST['postcode']))
{
$erreurs['postcode'] = 'Renseigner un code postal';
}
if( empty( $erreurs) ){
$req = $bdd->prepare('INSERT INTO orders ( titre, phone, street, postcode, city)
VALUES (:titre, :phone, :street, :postcode, :city)');
$retour= $req->execute(array(
'titre'=>$_POST['titre'],
'phone'=>$_POST['phone'],
'street'=>$_POST['street'],
'postcode'=>$_POST['postcode'],
'city'=>$_POST['city']
));
if( $retour ===false) echo "Problème lors de l'insertion";
}else{//le tableau ne contient
echo "<p> renseignez les champs vides</p>";
}
header('Location: verification.php');
}//fin de la soumission du formulaire
?>
<form action="ma_pub.php" method="post" enctype="multipart/form-data">
<!-- titre de la sortie -->
<label>titre :</label>
<input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
<div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>
<!-- Ville de la sortie -->
<label>Ville *</label>
<input class="form-control" type="text" name="city" value="<?php if(isset($_POST['city'])) echo $_POST['city'];?>" />
<div class="error"><?php if(isset($erreurs['city'])) echo $erreurs['city'];?></div>
<!-- Ville de la sortie -->
<label>Rue</label>
<input class="form-control" type="text" name="street" value="<?php if(isset($_POST['street'])) echo $_POST['street'];?>" />
<div class="error"><?php if(isset($erreurs['street'])) echo $erreurs['street'];?></div>
<!-- Code postal de la sortie -->
<label>Code postal *</label>
<input class="form-control" type="text" name="postcode" value="<?php if(isset($_POST['postcode'])) echo $_POST['postcode'];?>" />
<div class="error"><?php if(isset($erreurs['postcode'])) echo $erreurs['postcode'];?></div>
<label>Télephone</label>
<input class="form-control" type="text" name="phone" value="<?php if(isset($_POST['phone'])) echo $_POST['phone'];?>" />
<div class="error"><?php if(isset($erreurs['phone'])) echo $erreurs['phone'];?></div>
<input type="submit" value="S'abonner" class="btn primary">
</form>
et page verification.php
<?php session_start();?>
<?php echo $_SESSION['phone']; ?><br>
<?php echo $_SESSION['titre']; ?><br>
<?php echo $_SESSION['street']; ?><br>
<?php echo $_SESSION['city']; ?>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" >
<label> Choix du type d'offre publicitaire</label>
<select name="amount">
<?php
$req = $bdd->query('SELECT * FROM offers');
while($d = $req->fetch(PDO::FETCH_ASSOC)){
?>
<option value="<?php echo $d['price']; ?>"><?php echo $d['name'];?> -<?php echo $d['price'];?> Euros</option>
<?php
}
?>
</select>
<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://www......./succes.php" />
<input name="cancel_return" type="hidden" value="URL_ANNULATION" />
<input name="notify_url" type="hidden" value="http://www................./ipn.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value=".............." />
<input name="item_name" type="hidden" value="offre publicitaire" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden"value="user_id=<?php echo $_SESSION['user']['id'] ?>" />
<input type="submit" value="S'abonner" class="btn primary">
</form>
Page ipn.php ( c'est la page de traitement et de payement pour paypal avec la seconde partie qui s'insere en bdd )
<?php session_start (); ?>
<?php
//permet de traiter le retour ipn de paypal
$email_account = "........................";
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// renvoyer au systeme Paypal pour validation
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: http://www.sandbox.paypal.com\r\n"; // http://www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$first_name = $_POST['first_name'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
parse_str($_POST['custom'],$custom);
if (!$fp) {
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
if ( $email_account == $receiver_email) {
/**
* C'EST LA QUE TOUT SE PASSE
* PS : tjrs penser à vérifier la somme !!
*/
file_put_contents('log', print_r($_POST,true));
$db = new PDO('mysql:host=.............;dbname=.............','..............','...............');
$req = $db->query('SELECT * FROM offers WHERE price='.$payment_amount.' LIMIT 1');
$d = $req->fetch(PDO::FETCH_ASSOC);
if(!empty($d)){
$duration = $d['duration'];
$uid = $custom['user_id'];
$data = serialize($_POST);
//On met à jour la date d'expiration
$db->query('UPDATE users SET expiration = DATE_ADD(NOW(), INTERVAL '.$duration.' MONTH) WHERE id = '.$uid);
//On sauvegarde la commande
$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id) VALUES(".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."')");
file_put_contents('log','Le paiement à bien était confirmé');
}else{
file_put_contents('log','Le paiement ne correspond à aucune offre');
}
/**
* FIN CODE
*/
}
}
else {
// Statut de paiement: Echec
}
exit();
}
else if (strcmp ($res, "INVALID") == 0) {
// Transaction invalide
}
}
fclose ($fp);
}