Problème dans conditions pur faire rentrer requete

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 : Problème dans conditions pur faire rentrer requete

Re: Problème dans conditions pur faire rentrer requete

par moogli » 21 mars 2017, 17:18

<input type='text' name='modif[]' value='$val' hidden/>
<input type='text' name='modif1[]' value='$req[InstdAmt]'/>
<input type='text' name='modif2[]' value='$req[N2]'/>
<input type='text' name='modif3[]' value='$req[IB]'/><br />

la valeur sera ce qu'il y a dans le value html

par contre je te conseil
- d'oublier l'utilisation des " pour délimiter les chaines de caractère et d'utiliser les ' et la concaténation (en fait tu peux aussi utiliser la concaténation avec les ") ou alors heredoc mais il faut vraiment une syntaxe correcte c'est n'importe quoi la. Les indexs sont des chaines de caractères (dans ce cas) il doivent être délimité comme tel
- utiliser des " pour les attribut html (et nom les ") c'est le plus standard
- utiliser la structure foreach pour parcourir l'un des tableau issue de $_POST et avec l'index avoir les données correspondante des autres ;)


@+

Re: Problème dans conditions pur faire rentrer requete

par Jenjak77 » 21 mars 2017, 17:03

Salut Moogli, merci beaucoup pour ta réponse, pour les injections effectivement j'ai simplifié au max mon code le temps de voir ou mon problème venait...

Je suis ultra débutant en PHP, si j'ai bien compris l'écriture doit être la suivante ?

<input type='text' name='modif[$val]' value='$val' hidden/>
<input type='text' name='modif1[$val]' value='$req[InstdAmt]'/>
<input type='text' name='modif2[$val]' value='$req[N2]'/>
<input type='text' name='modif3[$val]' value='$req[IB]'/><br />

Pour la boucle j'essaie de m'imagine, ça ressemblera plus à du while ?

Re: Problème dans conditions pur faire rentrer requete

par moogli » 21 mars 2017, 16:54

salut,

ceci est une bonne façon de permettre les injections SQL

Code : Tout sélectionner

"UPDATE temp_$sep SET InstdAmt='$_POST[modif1]', N2='$_POST[modif2]', IB='$_POST[modif3]' WHERE id = '$_POST[modif]'

pour le reste il faut que tu nommes tes input avec la notation tableau pour récupérer tout le monde
exemple <input type='text' name='modif[]' value='$val'/>

coté validation tu auras des tableaux dans les index associé du tableau $_POST.
Reste a boucler dessus ils auront le même index pour chaque ligne de ta base de donnée et donc faire ta requête SQL.

Je te conseil aussi d'utiliser une requête préparée pour améliorer cela.


@+

Problème dans conditions pur faire rentrer requete

par Jenjak77 » 21 mars 2017, 16:27

Bonjour à tous,

Alors voilà mon problème, j'ai une liste d'éléments avec une checkbox ($_POST['choix']) pour chaque, je peux choisir ceux que je veux et cliquer sur "modifier", j'atteri sur une page avec les éléments sélectionnés dans des input text, jusque là tout va bien !

Je voudrais maintenant changer des choses dans ces input et cliquer sur (un autre) modifier pour que la modification soit faite dans la base de données.

j'y arrive pour une ligne, par contre pour plusieurs ça ne fonctionne pas, normal ça ne fait parti d'aucune boucle (cela prend je pense le dernier "id")

Je ne parviens pas à trouver la solution, soit pour faire rentrer dans une boucle, soit pour faire autrement...

Voici mon code:
if (isset($sep) && !empty($_POST['choix']) && isset($_POST['modifier'])) {
    echo "ENTREE(S) A MODIFIER";
    echo "<form action='' method='post' enctype='multipart/form-data'>";

    foreach($_POST['choix'] as $val) {

        $req_select = $bdd->query("SELECT * FROM temp_$sep WHERE id = $val");

        foreach($req_select as $req):
            echo "
            <input type='text' name='modif' value='$val'/>
            <input type='text' name='modif1' value='$req[InstdAmt]'/>
            <input type='text' name='modif2' value='$req[N2]'/>
            <input type='text' name='modif3' value='$req[IB]'/><br />
            ";
        endforeach;
    }
        echo "
        <input type='submit' name='modification' value='VALIDER LA MODIFICATION'>
        </form>
        ";
}
if (isset($_POST['modification'])) {
    $req_modif = $bdd->query("UPDATE temp_$sep SET InstdAmt='$_POST[modif1]', N2='$_POST[modif2]', IB='$_POST[modif3]' WHERE id = '$_POST[modif]'");
    var_dump($req_modif);
}
Pour info, mon isset($_POST['modifier']) qui m'affiche mes input m'empeche d'inserer le isset($_POST['modification']) par exemple dans le foreach vu qu'une fois cliqué il ne suit plus...

merci d'avance pour vos explications !