IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Envoi de plusieurs variables dans une page PHP avec AJAX


Sujet :

AJAX

  1. #1
    Invité
    Invité(e)
    Par défaut Envoi de plusieurs variables dans une page PHP avec AJAX
    Bonjour à tous,

    Je suis en train d'élaborer un script qui permet de supprimer certaines photos après un choix par des checkboxs.

    Pour le moment, les éléments cochés, sont récupérés dans des input hidden générés dans un formulaire html.
    Celui-ci est envoyé dans une page de traitement, mais lorsque j'affiche le résultat dans la console, avant de poursuivre, plutôt que de m'afficher le nom des images une à une, il m'affiche ça (pour 3 photos/images cochées par exemple, il m'affichera 3 fois cela) :

    pictures-insert.php:255 <br />

    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>

    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: imgSup in C:\UwAmp\www\leSporting\admin\suppImgs.php on line <i>2</i></th></tr>

    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>

    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>

    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>129728</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\UwAmp\www\leSporting\admin\suppImgs.php' bgcolor='#eeeeec'>...\suppImgs.php<b>:</b>0</td></tr>

    </table></font>

    Pour commencer, je vais déjà envoyé mon code php généré car puisque c'est justement un tableau qui est généré, cela donnera éventuellement d'autres informations sur mon bug (après là où je ne comprends pas trop, c'est que la valeur de la checkbox est égale au nom de l'image, donc en théorie ça n'est pas censé être tout le tableau.....)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    $chemin = './pics/';
    $repertoire = opendir($chemin);
    while($elements = readdir($repertoire)) {
        $liste[] = $elements;
    }
     
    natsort($liste);
    $nbcol=5;
    $liste = array_values($liste);
    $nombre = count($liste);
    if($nombre != 0)
    {
        echo "<table class=\"gallery\">";
        for ($i=0; $i<$nombre; $i++) {
            if($i%$nbcol==0){echo '<tr>';}
            if ($liste[$i] != "." && $liste[$i] != "..") {
                if(is_dir($chemin.$liste[$i])){
                    $scan_dir = array_diff(scandir($chemin.$liste[$i]), array('..', '.'));
                    $nbr = count($scan_dir);
                    echo "<td class=\"alb\">
                            <a href=\"details-album.php?name=".$liste[$i]."\" class=\"aLienAlbum\">
                                <div class=\"lienAlbum\" style=\"background-image: url('".$chemin.$liste[$i]."/".$scan_dir[2]."');\">
                                    <h5>".$liste[$i]. "</h5>
                                    <div class=\"petitFooter\">
                                        <p class=\"valign-wrapper\">";
                                            echo "(".$nbr." photos)";
                    echo                "</p>
                                    </div>
                                </div>
                            </a>
                          </td>";
                }
     
                // C'est cette partie qui nous intéresse !
     
                else echo   "<td class=\"imgAlb\">
                                <div>
                                    <input type=\"checkbox\" class=\"imgAsup\" style=\"display:none;\" value=\"". utf8_encode($liste[$i]) ."\"/>
                                    <img src=\"./pics/". utf8_encode($liste[$i]) ."\" class=\"materialboxed\" alt=\"Image\" width=\"200\" height=\"200\" />
                                </div>
                            </td>";
     
            }
            if($i%$nbcol==($nbcol-1)){echo '</tr>';}
        }
        echo "</table>";
    }
    else echo "<div class=\"textInfo valign-wrapper\"><p>- Aucune média à afficher -</p></div>";
     
    if (isset($erreur)) echo "<br />" , $erreur;
     
    closedir ($repertoire);
    ?>

    Ensuite, mon code Jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    $('.imgAsup').hide();
    $('#supImgGal').on('click',function(){
        $(this).toggle();
        $('.validSup').show();
        $('.imgAlb').addClass('anim');
        $('.imgAsup').show();
        $('.alb').hide(1000);
        $("input[type=checkbox]").change(function() {
            $(this).each(function(i) {
                if (this.checked) {
                    var imgASup = $(this).val();
                    input = $("<input[type=hidden]/>");
                    input.attr({
                        "class" : "imgASupprim",
                        "name" : "imgSup",
                        "valeur" : imgASup,
                    });
                    $(".formImgAsup div").append(input);
                    $(".formImgAsup").submit(function(e){
                        var postData = $(this).serializeArray();
                        var formURL = $(this).attr("action");
                        $.ajax(
                        {
                            url : formURL,
                            type: "POST",
                            data : postData,
                            success:function(data, textStatus, jqXHR)
                            {
                                console.log(data);
                            },
                            error: function(jqXHR, textStatus, errorThrown)
                            {
                                alert("Attention, problème.");    
                            }
                        });
                        e.preventDefault(); //STOP default action
                    });
                }
            });
        });
    });

    Le fameux formulaire où les input seront générés :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form class="formImgAsup" method="POST" action="suppImgs.php">
        <div>
            //Viendront se placer ici les input générés.
        </div>
        <button type="submit" name="valid" class="validSup sup" style="display:none;"/><i class="fa fa-trash-o"></i></button>
    </form>


    Et mon traitement php pour le moment qui se résume à : <?php print $_POST['imgSup']; ?> (mais qui m'affiche la bêtise précisée au dessus).


    J'ai pourtant sérializé mes données.... Quelqu'un peut-il m'aider ?
    Bonne journée à vous !
    Lucie MUTEREL
    Dernière modification par NoSmoking ; 29/03/2017 à 18h47. Motif: Merci d'indiquer le langage utilisé, [CODE=xxxx], pour activer la coloration syntaxique.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    ton message est un message Erreur PHP
    Notice: Undefined index: imgSup in C:\UwAmp\www\leSporting\admin\suppImgs.php on line 2
    regarde ce qu'il y à dans var postData = $(this).serializeArray().

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2011, 09h10
  2. envoi de variables vers une page php avec WGET
    Par Othasm dans le forum VBScript
    Réponses: 0
    Dernier message: 20/06/2011, 16h45
  3. plusieurs check_all_box dans une page php
    Par IJL_EM dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/01/2011, 14h56
  4. copier plusieurs champs dans une boucle php avec javascript
    Par groskanel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/08/2010, 14h47
  5. Réponses: 11
    Dernier message: 11/03/2005, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo