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

Langage PHP Discussion :

update sql, avec php/ajax


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2020
    Messages : 25
    Points : 19
    Points
    19
    Par défaut update sql, avec php/ajax
    Bonjour a vous,

    Voici mon code, et je cherche a faire la mise a jour automatique de ma table sql en ajax, mais j'y arrive pas,
    voici le code de ma page :
    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
                    <table>
                        <?  while ($row = mysqli_fetch_assoc($result)) { ?>
                        <tr>
                            <td><?php echo $row['model_oem']; ?></td>
                            <td><?php echo "WV-" . $row['model_horizontal']; ?></td>
                            <td><?php echo $row['quantity']; ?></td>
                            <td><?php echo "<input type=\"text\" id=" . $row['model_oem'] . " name=\"product_qts\" value=\"0\">"; ?></td>
                            <td><?php echo "<input type=\"hidden\" id=" . $row['product_id'] . " name=\"product_id\" value=". $row['product_id'] . ">"; ?></td>
                            <script>
                                $(document).ready(function(){
                                    $("#<?php echo $row['model_oem']?>").on('change', function postinput(){
                                        var product_qts = $('#<?php echo $row['model_oem']?>');
                                        var product_id = $('<?php echo $row['product_id']?>');
                                        $.ajax({
                                            url: 'editqts.php',
                                            data: { product_id: <?php echo $row['product_id']?>, product_qts: product_qts },
                                            type: 'post'
                                        }).done(function(responseData) {
                                            console.log('Done: ', responseData);
                                        }).fail(function() {
                                            console.log('Failed');
                                        });
                                    });
                                });
                            </script>
                        </tr>
                        <?php } ?>
                    </table>
    et voici le code de mon fichier editqts.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $product_id = $_POST['product_id'];
    $product_qts = $_POST['product_qts'];
     
    if (isset($_POST['product_qts'])) {
        $sql_qts_update = "UPDATE oc_product SET quantity = '$product_qts' WHERE product_id = '$product_id' ";
        $conn->query($sql_qts_update);
    }
    je suis pas super avec le ajax encore.
    Merci pour votre aide

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Plutôt que de dupliquer trente six fois le code jQuery, tente d'en écrire un seul qui concerne toutes tes balises input de type texte; et plutôt que de le générer en incrustant les valeurs des ids grâce à PHP, utilise le DOM et les sélecteurs pour les retrouver. Quelque chose comme ça (à vérifier mais c'est l'idée):
    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
    <table>
    <?php while ( $row = mysqli_fetch_assoc($result) ): ?>
        <tr>
            <td><?= $row['model_oem'] ?></td>
            <td>WV-<?= $row['model_horizontal'] ?></td>
            <td><?= $row['quantity'] ?></td>
            <td>
                <input type="text" id="<?= $row['model_oem'] ?>" name="product_qts" value="0" />
                <input type="hidden" id="<?= $row['product_id'] ?>" name="product_id" value="<?= $row['product_id'] ?>" />
            </td>
        </tr>
    <?php endWhile; ?>
    </table>
    <script>
    $(document).ready(function() {
        $("td input[type='text']").change(function() {
            $.ajax({
                url: 'editqts.php',
                data: { 
                    product_id: $(this).next().val(),
                    product_qts: $(this).val()
                },
                type: 'post'
            }).done(function (responseData) {
                console.log('Done: ', responseData);
            }).fail(function () {
                console.log('Failed');
            });
        });
    });
    </script>

    Pour ce qui est de editqts.php, ce script doit absolument vérifier ce qu'il reçoit, en vérifiant que les variables POST sont bien définies et qu'elles contiennent bien une id (en vérifiant le format) pour l'une et une quantité (un entier) pour l'autre. Utilise une requête préparée et si ce n'est pas déjà le cas utilise un colonne de type INT NOT NULL pour les quantités dans ta table oc_product. Bref, blinde le plus possible.

Discussions similaires

  1. Erreurs SQL avec PHP et AJAX
    Par theo_fleury dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2018, 00h52
  2. [SQL] Comparer résultat d'une requête Sql avec php
    Par nicoxweb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/09/2007, 22h46
  3. [SQL] Executer un fichier .sql avec php
    Par Mouchi93 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/08/2007, 16h08
  4. [SQL] probleme de syntaxe sql avec php
    Par kaygee dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2006, 14h32
  5. Update sql, avec une table à deux colonnes ...
    Par dcz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/04/2006, 18h06

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