[RESOLU] recuperer chaine caracteres php et variable depuis formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] recuperer chaine caracteres php et variable depuis formulaire

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 23 avr. 2021, 01:11

Ca y est c'est bon, il y avait un $ qui trainait dans trim($_POST
Dire que J'avais viré les "trim" les jugeant inutiles pour ce type de formulaire!
Merci beaucoup Or =D> , grâce a ce modèle, je vais économiser du temps machine et quelques autres scripts avec des centaines de requetes imbriquées dans des switch...

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 23 avr. 2021, 00:18

Ah oui, il y a un sacré mieux. :wink: J'ai juste la variable "usure" qui affiche maintenant 0 ? :roll:
J'ai tenté ltrim et rtrim sans succès.

Re: recuperer chaine caracteres php et variable depuis formulaire

par or 1 » 22 avr. 2021, 21:08

$produit = !empty($_POST['produit']) ? trim($_POST['produit']) : NULL;
$usure = !empty($_POST['usure']) ? trim($_POST['$usure']) : NULL;
$prix = !empty($_POST['prix']) ? trim($_POST['prix']) : NULL;

$produit = !empty($_POST['produit']);
$usure = !empty($_POST['usure']);
$prix = !empty($_POST['prix']);

quelle est la différence de résultat de ces 2 codes ?

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 22 avr. 2021, 20:50

Bon, j'ai coupé le script en deux (1 form) qui redirige vers le second (trt PHP).
TOUTES les variables sont OK, même les $_POST.
Je ne vois plus que la requète d'INSERT qui poserait problème?

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 22 avr. 2021, 17:52

Ben merci, mais je ne vois plus où chercher. toutes les variables sont OK sauf les "POST" et je ne vois toujours pas où est le soucis. Je vais continuer à prospecter.

Re: recuperer chaine caracteres php et variable depuis formulaire

par @rthur » 22 avr. 2021, 13:40

Il faut que tu debugues toi-même ton code, on ne va pas le faire à ta place...

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 22 avr. 2021, 10:07

<?php
session_start();
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT contenant, usure_contenant FROM membres WHERE id = :id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) { 
$contenant = $resultat['contenant'];
$usure_contenant = $resultat['usure_contenant'];
}
?>
<html>
bla bla bla bla
<form name="form" method="post" action="vendre_contenant_fin.php" enctype="multipart/form-data">
<table>
<td>
<fieldset><b>VENDRE</b></fieldset>
<p>
 <label for="produit"><img src="<?php echo $contenant; ?>"/></label>
<input type="hidden" name="produit" id="produit" value="<?php echo $contenant; ?>"/>
</p>
<p>
 <label for="usure"><b>USURE&nbsp;<?php echo $usure_contenant; ?>%</b></label>
 <input type="hidden" name="usure" id="usure" value="<?php echo $usure_contenant; ?>" />
</p>
<p>
 <label for="prix"><b>PRIX:</b></label>
 <input type="number" min="1" max="9999" name="prix" id="prix" size="4" value="prix"/> 
</p>
</select></p>
<div align="center"><br>
<input type="submit" name="vendre_contenant" value="VALIDER" />
</td>
</div>
</form>
</table>
<br><br><br><br><br>
<a href="page_membre.php">vers page membre</a>
</center>
</body>
</html>
puis le traitement du form
<?php
session_start();
require_once 'config.php';
if(isset($_POST['vendre_contenant']))
 {
$produit = !empty($_POST['produit']);
$usure = !empty($_POST['usure']);
$prix = !empty($_POST['prix']);
 }
if(!empty($_POST['produit'])AND !empty($_POST['usure']) AND !empty($_POST['prix']))
{
$sql = "INSERT INTO market (produit, usure, prix) VALUES(:produit, :usure, :prix );";
$prep = $bdd->prepare($sql);
$prep->bindvalue(':produit',$produit,PDO::PARAM_STR);
$prep->bindvalue(':usure',$usure,PDO::PARAM_INT);
$prep->bindvalue(':prix',$prix,PDO::PARAM_INT);
$prep->execute();
header('Location:page_membre.php');
}
?>

Re: recuperer chaine caracteres php et variable depuis formulaire

par @rthur » 22 avr. 2021, 09:35

Si tu as ce message, c'est que tu n'accèdes pas à ton script en envoyant un formulaire en POST.

##edit : Ou que tu as mal orthographié $_POST (avec l'underscore)...

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 21 avr. 2021, 23:30

le resultat du var_dump
Notice: Undefined variable: POST in C:\wamp64\www\vendre_contenant_fin.php on line 6
C:\wamp64\www\vendre_contenant_fin.php:6:null

Il n'y a rien qui passe :twisted:

Re: recuperer chaine caracteres php et variable depuis formulaire

par or 1 » 21 avr. 2021, 22:05

il faut lire et appliquer les très bons conseils :
"Il va falloir que tu debugues un peu par toi-même :
- var_dump($_POST) avant ton traitement PHP pour voir ce que PHP reçoit en POST"

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 21 avr. 2021, 21:39

Donc, les input doivent etre dans la boucle du if?

Re: recuperer chaine caracteres php et variable depuis formulaire

par or 1 » 21 avr. 2021, 19:58

if(isset($_POST['vendre']))
<input type="submit" name="vendre_contenant" value="VALIDER" />
cela ne rentre donc jamais dans le if, d'où pas de requête insert.

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 21 avr. 2021, 18:44

Merci pour les corrections et explications, je sais que j'ai un peu de mal avec la concaténation. En fait, je me mélange un peu les crayons (d'où le "<img src" dans le input de la valeur produit par exemple!) Ton script corrigé me parait beaucoup plus propre, clair et cohérent. Merci. hélas, la table ne prend toujours pas les valeurs issues de ce formulaire. #-o
J'ai testé en dur en mettant "test", "25" et "99" ça déconne toujours !!!

Re: recuperer chaine caracteres php et variable depuis formulaire

par Saian » 21 avr. 2021, 11:44

Je ne t'ai pas fait retirer des double quote, je t'ai fait ajouter un echo.
<!-- tu avais ça -->
<input type="hidden" name = "usure" id = "usure"  value="$usure_contenant">
<!-- j'ai suggéré ça -->
value="<?php echo $usure_contenant; ?>"

Plusieurs problèmes.

Déjà une base, je sais pas si ça fait réellement une différence mais en html pour les attributs (for, type, name, value, etc) on ne met pas d'espace avant ou après le signe = et on met les valeurs entre " et non entre '.
<!-- non -->
<label for = 'usure'>
<!-- oui -->
<label for="usure">

Pour le produit pas sur que ça fasse une différence non plus mais tu as des espaces qui ne servent à rien et peuvent potentiellement poser problème.
// non
echo '<img src=" '.$contenant.' ">';// donne <img src=" /objets/sacoche.gif "> le  src contient un espace au début et à la fin
// oui
echo '<img src="' . $contenant . '"/>';// donne <img src="/objets/sacoche.gif"/> le  src est comme il faut

Maintenant le value de l'input produit...
<input type='hidden' name='produit' id='produit' value="<?php echo '<img src= '.$contenant.' >'; ?>"/>
<!-- va donner -->
<input type='hidden' name='produit' id='produit' value="<img src= /objets/sacoche.gif>">
<!-- avant le retrait des " tu obtenais ceci, remarque le problème de coloration du value qui bug avec les " en trop. La valeur est donc <img src= -->
<input type='hidden' name='produit' id='produit' value="<img src=" /objets/sacoche.gif">">

C'est tout de même un peu mieux qu'avec les " du img src mais c'est quand même étrange d'avoir une valeur de produit qui est égale à une balise image... ceci dit je vais pas chercher à comprendre, le plus simple étant surement à mon sens de ne mettre que la valeur de $contenant et au besoin de rajouter la partie balise <img> dans le php en traitement du formulaire.

Je reviens maintenant sur le $usure_contenant. Veux tu que l'input prennent la valeur de $usure_contenant ou veut tu que l'input prenne pour valeur $usure_contenant ? comprends tu la différence ?

Je suppose que tu veux la valeur de $usure_contenant.
<input type="hidden" name="usure" id="usure"  value="<?php echo '$usure_contenant'; ?>"/>
<!-- va donner -->
<input type="hidden" name="usure" id="usure"  value="$usure_contenant"/>
<!-- hors tu veux -->
<input type="hidden" name="usure" id="usure"  value="valeur de $user_contenant"/>

Il faut bien que tu fasses la différence ici
echo $usure_contenant;// affiche la valeur de $usure_contenant
echo '$usure_contenant';// affiche $usure_contenant
echo "$usure_contenant";// affiche la valeur de $usure_contenant

Si tu echo une variable, tu n'as pas besoin de la mettre entre ". C'est utile seulement si tu veux afficher un texte avec une variable dedans.
$prenom = 'toto';
echo "Bonjour $prenom !";

Ensuite il te manque 2 fermetures de <p>.

Bref faut revoir les bases.

Le code au propre sans garantie que ça règle tous tes problèmes, je ne suis responsable que de ce que j'ai écris.
<p>
  <label for="produit"><img src="<?php echo $contenant; ?>"/></label>
  <input type="hidden" name="produit" id="produit" value="<?php echo $contenant; ?>"/>
</p>
<p>
  <label for="usure"><b>USURE <?php echo $usure_contenant; ?>%</b></label>
  <input type="hidden" name="usure" id="usure" value="<?php echo $usure_contenant; ?>"/>
</p>
<p>
  <label for="prix"><b>PRIX:</b></label>
  <input type="number" min="1" max="9999" name="prix" id="prix" size="4" value="prix"/>
</p>

Bon courage pour la suite.

Re: recuperer chaine caracteres php et variable depuis formulaire

par nestor94 » 21 avr. 2021, 00:25

Pour <input type="hidden" name="produit" id="produit" value="<img src=" /objets/sacoche.gif ">
le produit c'est <img src=" /objets/sacoche.gif"> (image dans dossier objets)

ensuite, c'est bien $usure_contenant qui est attendu.
dernieres modifs faites.
<p><label for = "produit"><?php echo '<img src=" '.$contenant.' ">'; ?> </label><input type='hidden' name='produit' id='produit' value="<?php echo '<img src= '.$contenant.' >'; ?>"/>
<p><label for = 'usure'><b>USURE&nbsp;<?php echo "$usure_contenant"; ?>&nbsp;%</b></label><input type='hidden' name = 'usure' id = 'usure'  value="<?php echo $usure_contenant; ?>"/>
<p><label for ="prix"><b>PRIX:</b></label><input type='number' min='1' max='9999' name="prix" id="prix" size="4" value="prix"></p>