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

Requêtes MySQL Discussion :

Insérer dans un tableau le résultat d'une moyenne


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte sys d'info géographique
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte sys d'info géographique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Par défaut Insérer dans un tableau le résultat d'une moyenne
    Bonjour,

    je cherche à obtenir la moyenne des notes (colonne 'rate') du tableau piwigo_rate concernant un même objet (element_id) par exemple l'élement n°880 qui a eu deux votes, et différents.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MariaDB [piwigo]> SELECT * FROM piwigo_rate;
    +---------+------------+----------------+------+------------+
    | user_id | element_id | anonymous_id   | rate | date       |
    +---------+------------+----------------+------+------------+
    |       2 |        911 | 77.136.67      |    4 | 2024-01-14 |
    |       1 |        911 | 77.136.66      |    4 | 2024-02-17 |
    |       1 |        152 | 77.136.67      |    4 | 2024-09-02 |
    |       1 |        469 | 77.136.67      |    3 | 2024-09-03 |
    |       2 |        469 | 77.136.67      |    3 | 2024-09-03 |
    |       2 |       1070 | 91.151.115.234 |    4 | 2024-09-16 |
    |       2 |       3854 | 91.151.115.234 |    4 | 2024-09-16 |
    |       2 |        880 | 91.151.115.234 |    4 | 2024-09-16 |
    |       1 |        880 | 91.151.115     |    2 | 2024-09-16 |
    +---------+------------+----------------+------+------------+
    pour pouvoir mettre à jour la moyenne figurant dans la table piwigo-images, dans la colonne 'rating_score' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MariaDB [piwigo]> select * from piwigo_images where id='1070';
    +------+----------------+---------------------+---------------------+-----------+---------------------+-----------+-----+----------+-------+--------+------+--------------------+----------------------+--------------+-------------------------------------------------+---------------------+-------+----------------------------------+----------+----------+-----------+-----------+---------------------+
    | id   | file           | date_available      | date_creation       | name      | comment             | author    | hit | filesize | width | height | coi  | representative_ext | date_metadata_update | rating_score | path                                            | storage_category_id | level | md5sum                           | added_by | rotation | latitude  | longitude | lastmodified        |
    +------+----------------+---------------------+---------------------+-----------+---------------------+-----------+-----+----------+-------+--------+------+--------------------+----------------------+--------------+-------------------------------------------------+---------------------+-------+----------------------------------+----------+----------+-----------+-----------+---------------------+
    | 1070 | DSCF3166-1.jpg | 2022-05-01 17:30:54 | 2019-06-25 00:26:00 | Le Trayas | Massif de l Esterel | Vincent D | 935 |      574 |  1800 |   1350 | NULL | NULL               | 2022-05-01           |         3.73 | ./upload/2022/05/01/20220501173054-c019e69f.jpg |                NULL |     0 | c019e69f003ffa0c2ff355ce5af93738 |        1 |        0 | 43.468618 |  6.923180 | 2024-09-16 16:53:04 |
    +------+----------------+---------------------+---------------------+-----------+---------------------+-----------+-----+----------+-------+--------+------+--------------------+----------------------+--------------+-------------------------------------------------+---------------------+-------+----------------------------------+----------+----------+-----------+-----------+---------------------+
    Par ce moyen, je cherche en effet à attribuer, par un site externe, des notes à des images stockées sur Piwigo, en émulant la fonctionnalité interne de ce CMS : d'abord j'ajoute une note, et après j'inscris la moyenne quelque part.

    J'opère par PHP.

    Ce code est loin de faire les opérations de moyenne (chiffre 4 par défaut).. mais il réussit à inserer des votes dans piwigo_rate

    Comment faire ? merci

    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
    <?php
    include ("dbconfig.php");
    if(!isset($_SESSION)) {    session_start();  };
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    header("Access-Control-Allow-Origin: *");
     
    $dbcon7 = new mysqli($myshost, $mysuser, $myspass, 'piwigo');
     
    $commentcontent = filter_var($_GET['commentcontent'], FILTER_UNSAFE_RAW);
    $commentphoto = filter_var($_GET['commentphoto'], FILTER_UNSAFE_RAW);
    $visitorip = $_SESSION['visitorip'];
     
     
    $sql8 = "INSERT INTO piwigo_rate (user_id, date, element_id, anonymous_id, rate) VALUES ('2',CURDATE(), '$commentphoto', '$visitorip', '$commentcontent')";
     
    $stmt6 = $dbcon7 -> prepare($sql8);
    $stmt6-> execute();
     
    $sql9 = "UPDATE piwigo_images SET rating_score = '4' WHERE id = $commentphoto";
    $stmt7 = $dbcon7 -> prepare($sql9);
    $stmt7-> execute();
     
    $dbcon7-> close();
     
    ?>

    Mon autre tentative ne va pas être bonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE piwigo_images P
     
    SET rate = SELECT AVG(rate)
     
    FROM piwigo_rate
     
    WHERE id = $commentphoto

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte sys d'info géographique
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte sys d'info géographique
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Par défaut
    réussi avec ceci, même si il faut que je prépare mes statements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE piwigo_images a
    INNER JOIN
    (
    SELECT element_id, AVG(rate) avg_rate
    FROM piwigo_rate
    WHERE element_id = $commentphoto 
    ) b ON a.id = b.element_id
    SET a.rating_score = b.avg_rate
    WHERE a.id = $commentphoto;

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/08/2009, 02h45
  2. enregister dans un tableau les données d'une table
    Par warning dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/10/2008, 16h10
  3. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  4. Réponses: 6
    Dernier message: 28/06/2007, 11h17
  5. Réponses: 3
    Dernier message: 19/03/2007, 18h29

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