Post - php -
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

Post - php -



  1. #1
    invite0efeecaa

    Post - php -


    ------

    Bonjour à tous,

    Je suis en plein projet et je dois modifier des valeurs depuis une page web sur ma bdd... et je ne trouve pas de solutions

    Je viens de créer une base de donnée.

    Table 'seuils_alerte' avec les colonnes suivantes :
    - une colonne pour indiquer le type de capteur (C0, CO2, TEMP, etc)
    - une colonne pour le seuil mini
    - une colonne pour le seuil maxi.

    http://82.233.223.249:8088/seuils_alerte/alerte.html
    En modifiant les valeurs des différents capteurs, après avoir Validé. Cela change les données dans ma BDD.

    Avez-vous des exemples pour faire ça ?
    Car nage vraiment là...

    Je sais qu'il faut utiliser FORM dans le quel je choisi le mode de transmission : soit GET, soit POST.

    Le mieux serais POST

    Ensuite je devrais récupéré les variables transmises en POST pour les utiliser dans mes requêtes SQL...

    Merci d'avance

    -----
    Images attachées Images attachées  

  2. #2
    Ikhar84
    Animateur Informatique

    Re : Post - php -

    Salut !
    Projet perso ? Devoir scolaire ?
    J'ai glissé Chef !

  3. #3
    vande545

    Re : Post - php -

    Bonjour
    Des exemples, il y en des tonnes sur le WEB car c'est la meilleure illustration de PHP couplé à une BDD
    (au passage, tu ne dis rien à son sujet. MySQL ?)

    Dans ton code HTML, tu dois ajouter la balise <FORM....> avant le 1er input
    et la balise </FORM> après le dernier input
    la balise <FORM....> doit pointer sur un fichier script.php
    Celui-ci doit ouvrir une connexion avec la BDD sinon exit car inutile d'aller plus loin si la connexion échoue.
    le script PHP doit récupérer le contenu des variables $_POST que lui a transmis le fichier HTML.
    PHP doit créer une requête d'insertion(*) sur la BDD

    Tu l'auras compris, je te guide mais je n'écrirai pas le script à ta place

    (*) requête d'insertion est une phrase absurde mais je ne sais pas comment dire dans ce sens ?
    Dernière modification par vande545 ; 07/04/2020 à 18h59.

  4. #4
    invite0efeecaa

    Re : Post - php -

    Merci de vos réponses, pour être franc. C'est pour mon projet de BTS. Il me manque plus que ça et j'ai finis.. :c

    Alors j'ai un serveur 2016 R2 Standard qui se trouve dans le lycée.. Avec un serveur Web (MySQL) phpMyAdmin..

    Alors j'ai regardé un peu les tutos et j'ai essayer de me connecté avec la BDD pour commencer.. en ajoutant les PDO pour les erreurs..
    Je suis pas très bon en Web mais je ferais mon maximum pour apprendre..

    Voici mes codes : :

    Database.php :

    Code PHP:
    <?php

    class Database {

        private 
    $host "172.16.40.81";
        private 
    $username "Projet2020";
        private 
    $password "xxxxx";
        private 
    $database "meshliumdb";

        public 
    $connection;

        public function 
    getConnection() {
            
    $this->connection null;

            try{
    $bdd =new PDO('mysql:host=localhost;
     dbname=mabdd; charset=utf8'
    'user''password');
    // Activation des erreurs PDO
     
    $bdd->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
     
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_ASSOC);
    } catch(
    PDOException $e) {
        die(
    'Erreur : ' $e->getMessage());
    }

            return 
    $this->connection;
        }

        public function 
    closeConnection() {
            
    $this->connection null;
        }
    }
    error_reporting(E_ALL);
    ini_set('display_errors'TRUE);
    ini_set('display_startup_errors'TRUE);

    ?>
    alerte.html :

    Code HTML:
    <!DOCTYPE html>
    <html>
        <head>
    		<include 'Database.php'>
            <title>Seuils_Alerte</title>
            <meta charset="utf-8">
            <link rel="stylesheet" href="seuils.css" />
        </head>
        <body>
            <p>Modification des seuils d'alertes :  </p>
    <form method="post">
    <table>
      <tr>
        
        <td><b>Capteur</b></td>
        <td><b>Seuils_Mini</td>
        <td><b>Seuils_Max</b></td>
        
      </tr>
      <tr>
        <td>CO</td>
        <td><input type="text" name="SmCO" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMCO" minlength="4" maxlength="8" size="10"></td>
        
      </tr>
      <tr>
        <td>BAT</td>
        <td><input type="text" name="SmBAT" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMBAT" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
      <tr>
        <td>STR</td>
        <td><input type="text" name="SmSTR" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMSTR" minlength="4" maxlength="8" size="10"></td>
        
      </tr>
      <tr>
        <td>LUX</td>
        <td><input type="text" name="SmLUX" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMLUX" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
        <tr>
        <td>CO2</td>
        <td><input type="text" name="SmCO2" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMCO2" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
      <tr>
        <td>PIR</td>
        <td><input type="text" name="SmPIR" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMPIR" minlength="4" maxlength="8" size="10"></td>
        
      </tr>
      <tr>
        <td>LP</td>
        <td><input type="text" name="SmLP" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMLP" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
        <tr>
        <td>TC</td>
        <td><input type="text" name="SmTC" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMTC" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
      <tr>
        <td>HUM</td>
        <td><input type="text" name="SmHUM" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMHUM" minlength="4" maxlength="8" size="10"></td>
        
      </tr>
      <tr>
        <td>PRES</td>
        <td><input type="text" name="SmPRES" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMPRES" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
      <tr>
        <td>HALL</td>
        <td><input type="text" name="SmHALL" minlength="4" maxlength="8" size="10"></td>
        <td><input type="text" name="SMHALL" minlength="4" maxlength="8" size="10"></td>
       
      </tr>
    
    </table>
    </br>
    <input type="submit">
    </form>
    </br>
    
    
        </body>
    
    </html>
    Mon css..
    Code:
    table{
      border-collapse: collapse
    }
    
    td{
      border: 1px solid black;
      padding: 10px;
    }
    Merci d'avance.. je ne voie pas comment faire avec le POST
    Dernière modification par JPL ; 07/04/2020 à 20h10.

  5. A voir en vidéo sur Futura
  6. #5
    vande545

    Re : Post - php -

    Code:
    je ne voie pas comment faire avec le POST
    Au début du PHP :
    $SmCO=$_POST["SmCO"];
    $SMCO=$_POST["SMCO"];
    Et ainsi de suite

    Si tu as accès à PHPMyAdmin, fais une insertion "à la main" dans la table. Si ce n'a pas changé, PHPMyAdmin devrait te montrer le code d'insertion que tu n'auras plus qu'à copier-coller en remplaçant les valeurs insérées par les variables

  7. #6
    invite0efeecaa

    Re : Post - php -

    Bonjour vande545,

    Voici ce que j'ai réaliser en suivant vos indications

    Code PHP:
    <?php

    $SmCO
    =$_POST["SmCO"];
    $SMCO=$_POST["SMCO"];

    $SmBAT=$_POST["SmBAT"];
    $SMBAT=$_POST["SMBAT"];

    $SmSTR=$_POST["SmSTR"];
    $SMSTR=$_POST["SMSTR"];

    $SmLUX=$_POST["SmLUX"];
    $SMLUX=$_POST["SMLUX"];

    $SmCO2=$_POST["SmCO2"];
    $SMCO2=$_POST["SMCO2"];

    $SmPIR=$_POST["SmPIR"];
    $SMPIR=$_POST["SMPIR"];

    $SmLP=$_POST["SmLP"];
    $SMLP=$_POST["SMLP"];

    $SmTC=$_POST["SmTC"];
    $SMTC=$_POST["SMTC"];

    $SmHUM=$_POST["SmHUM"];
    $SMHUM=$_POST["SMHUM"];

    $SmPRES=$_POST["SmPRES"];
    $SMPRES=$_POST["SMPRES"];

    $SmHALL=$_POST["SmHALL"];
    $SMHALL=$_POST["SMHALL"];



    class 
    Database {

        private 
    $host "xxxxxxxx";
        private 
    $username "Projet2020";
        private 
    $password "xxxxx";
        private 
    $database "meshliumdb";

        public 
    $connection;

        public function 
    getConnection() {
            
    $this->connection null;

            try{
    $bdd =new PDO('mysql:host=localhost;
     dbname=mabdd; charset=utf8'
    'user''password');
    // Activation des erreurs PDO
     
    $bdd->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
     
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_ASSOC);
    } catch(
    PDOException $e) {
        die(
    'Erreur : ' $e->getMessage());
    }

            return 
    $this->connection;
        }

        public function 
    closeConnection() {
            
    $this->connection null;
        }
    }
    error_reporting(E_ALL);
    ini_set('display_errors'TRUE);
    ini_set('display_startup_errors'TRUE);

    ?>
    Je ne voie pas du tout, concernant "insertion"
    J'ai effectivement accès à la BDD et phpMyAdmin à distance

    Peut-être "Créer le code source PHP"
    Code PHP:
    $sql "SELECT * FROM `seuil_alertes`"
    Merci d'avance
    Dernière modification par JPL ; 07/04/2020 à 20h12.

  8. #7
    vande545

    Re : Post - php -

    Code PHP:
    $sql "SELECT * FROM `seuil_alertes`"
    Non ça c'est pour extraire des données, toi tu veux en insérer. De mon temps on utilisait insert into mais je crois que ce n'est plus d'actualité

    Pour ton code php, j"ai l"impression que tu as copié-collé du code glané sur le web.
    Si j'étais ton prof, je me ferais un malin plaisir à te planter en te demandant d'expliquer tout ça !

  9. #8
    invite0efeecaa

    Re : Post - php -

    Ahhh oui je viens de comprendre... désolé c'est toujours insert into

    Code PHP:
    $sql ="INSERT INTO `seuil_alertes` (`id`, `capteur`, `seuil_min`, `seuil_max`) VALUES (NULL, '', '', '')"
    Il faudrait mettre un paramètre ? Après tout dépend de la valeurs depuis mon site Web ..

    Le site Html c'est moi, concernant la Database j'ai juste repris pour les erreurs PDO.

    Si j'ai bien compris ta solution


    Code PHP:
    class Database {

        private 
    $host "172.16.40.81";
        private 
    $username "xxxxxx";
        private 
    $password "xxxxxxxxx";
        private 
    $database "meshliumdb";

        public 
    $connection;

        public function 
    getConnection() {
            
    $this->connection null;

            try{
    $bdd =new PDO('mysql:host=localhost;
     dbname=mabdd; charset=utf8'
    'user''password');
    // Activation des erreurs PDO
     
    $bdd->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
     
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_ASSOC);
    } catch(
    PDOException $e) {
        die(
    'Erreur : ' $e->getMessage());
    }

            return 
    $this->connection;
        }

        public function 
    closeConnection() {
            
    $this->connection null;
        }
    }

    $mysqli->real_query(INSERT INTO `seuil_alertes` (`id`, `capteur`, `seuil_min`, `seuil_max`) VALUES (NULL''''''));
    $res $mysqli->use_result();

    error_reporting(E_ALL);
    ini_set('display_errors'TRUE);
    ini_set('display_startup_errors'TRUE);

    ?> 
    Merci d'avance
    Dernière modification par JPL ; 08/04/2020 à 00h04.

  10. #9
    vande545

    Re : Post - php -

    Pour l'insertion c'est
    Code PHP:
    insert into nom_de_la_table('$SmCO','$SMCO') or die("insertion impossible"); 
    Je n'ai pas regardé le reste du code
    Dernière modification par vande545 ; 07/04/2020 à 22h50.

  11. #10
    invite0efeecaa

    Re : Post - php -

    Mais j'imagine qu'il faut que je fasse 11 requêtes ? Car il y a 11 capteurs

    Et tu penses qu'il fraudait que je mette un bouton validé pour chaque capteurs.

    Car si je veux modifier juste un capteur..

    Quand je vais faire validé tout les capteurs vont avoir 0 par logique je pense non ?

  12. #11
    vande545

    Re : Post - php -

    Combien de tables ?
    Il faut autant de requêtes que de tables à alimenter : un seul insert into pour une seule table et pour une seule ligne de données. En tous cas moi je ne sais pas faire autrement.
    Tu peux mettre les instructions SQL dans une boucle for de PHP si plusieurs lignes à insérer

  13. #12
    invite0efeecaa

    Re : Post - php -

    Une table seuil_alerte

    Avec 4 colonnes : id , capteur , seuil_min , seuil_max
    Il y a 11 lignes en tout (BAT, CO2, CO,...)

  14. #13
    vande545

    Re : Post - php -

    Si tu es un peu astucieux, tu peux écrire une seule instruction insert into et tout balancer avec une boucle For à 11 itérations et ça épatera ton prof (c'est le nom des variables qui change automatiquement) ;
    Sinon il y a la manière bourrin qui marche aussi et qui consiste à écrire 11 insert into

  15. #14
    vande545

    Re : Post - php -

    Et tu penses qu'il fraudait que je mette un bouton validé pour chaque capteurs.
    Car si je veux modifier juste un capteur..
    Tu peux mettre un test sur les variables $_POST et ne pas faire d'insertion si le capteur n'est pas renseigné.
    Ceci étant, une insertion avec des valeurs nulles ne gêne personne hormis les puristes !

  16. #15
    invite0efeecaa

    Re : Post - php -

    J'ai mis la méthode bourrin car l'autre méthode je sais pas faire (Je remplacerais plus tard)

    J'ai modifier plein de chose (simplifier) . Je pense que ça devrais être bon.. Et j'aimerais aussi savoir :

    Quand je clique sur le bouton Validé que ça Validé les champs qui on était remplir et que ça fasse la transaction avec la bdd

    J'essaie que pour le moment tout marche, sans trop compliqué juste basik.

  17. #16
    vande545

    Re : Post - php -

    Quand je clique sur le bouton Validé que ça Validé les champs qui on était remplir et que ça fasse la transaction avec la bdd
    Je ne comprends pas la question ?

  18. #17
    invite0efeecaa

    Re : Post - php -

    Ouii désolé.. c'est le soir, je craque un peu

    Je voulais dire, quand j'appuie sur le Bouton Validé dans le site web. Je voudrais que ça accepte (ça change les valeurs dans la BDD) ou non (Erreurs ip par exemple)

    En cas d'erreurs = Message

    Avez-vous un idée pour ça ?

  19. #18
    vande545

    Re : Post - php -

    Je te l'ai dit au début, c'est la balise <form...> qui pointe vers le script PHP et l'exécute quand tu cliques sur le bouton Submit

  20. #19
    invite0efeecaa

    Re : Post - php -

    Ahhh ouii excuse..

    J'ai réfléchis cette nuit,

    Et concernant la requêtes SQL c'est pas plutôt un UPDATE ? à la place de INSERT INTO ?

    Car Update vas juste modifier les valeurs
    Alors que INSERT INTO va inséré un nouvelle ligne ou colonnes non ?

    Le mieux serais Update ?

  21. #20
    vande545

    Re : Post - php -

    Je n'ai pas vu qu'il s'agissait de mises à jour. Au cours de mes messages précédents, j'ai toujours employé le mot insertion que tu n'as jamais corrigé.
    Si c'est une mise à jour, il faut effectivement utiliser UPDATE avec la condition WHERE

    Autre chose, je n'aurais jamais constitué une seule table avec la structure que tu lui as donné. J'aurais créé autant de tables que de capteurs.
    Pour ce cas d'école, ce n'est pas grave mais pour une BDD un poil plus plus complexe, elle serait rapidement incompréhensible, voire inexploitable.
    Une table de base de données doit être simple : une colonne = un seul type d'information.
    Exemple : dans une table classique, tu obtiens facilement des statistiques comme la moyenne, la somme, les min, max...
    Dans ton cas, il faudra d'abord faire une extraction et calculer les stats seulement après. Le code SQL devient vite inutilement compliqué.
    Il faut avoir à l'esprit que stocker tout dans une seule table ou dans plusieurs ne change pas grand chose alors que des requêtes complexes sont énormément gourmandes en ressources serveur
    Dernière modification par vande545 ; 08/04/2020 à 12h47.

  22. #21
    Ikhar84
    Animateur Informatique

    Re : Post - php -

    Non un capteur est une Entité, et donc une table regroupe bien tous les capteurs. Hors de question de faire une table par capteur.

    Par contre, pour respecter les normes, il faudra deux tables: une qui "liste" les capteurs et une deuxième avec l'id de capteur comme clé étrangére et deux champs, mini et maxi.

    Là ce serait parfait.

    Pour le code html. Idem. Interdiction totale d'utiliser une table pour la mise en forme.
    La mise en forme passe exclusivement par le css.
    Tu peux englober chaque input par un label et donner une propriété display: block, par exemple, pour une mise en forme de base.

    De plus comme c'est une mise à jour et non une insertion, comme tu vas devoir "selectionner" le capteur grâce à son id, via une clause WHERE, il te faut impérativementun moyen d'identifier de manière unique chaque capteur à "updater", ce qui implique obligatoirement un formulaire par capteur, avec un champ caché qui contiendrait l'id du capteur.

    Le top serait même de récuperer en php tes capteurs et les valeurs depuis la base, les afficher en html, et permettre la mise à jour de chaque valeur, tout cela sur la même page, avec des messages de confirmation ou d'erreurs...

    Bien sûr, ceci pour réaliser une conception propre.
    Imagines que tu doivent ajouter un capteur à ta base. Devras tu te retaper tout ton code... html, php et même sql...

    Coder ne s'improvise pas.
    Dernière modification par Ikhar84 ; 08/04/2020 à 13h27.
    J'ai glissé Chef !

  23. #22
    invite0efeecaa

    Re : Post - php -

    Oui, je me ne comprenais pas pourquoi Insert into..

    Concernant la commandes SQL j'ai éffectué sans le WHERE :

    Code PHP:
    $mysqli->real_query(Update seuil_alertes SET seuil_mini 'SmCO'seuil_max ='SMCO' or die("insertion impossible"); 
    J'ai effectué une table toute simple.
    Je comprends
    J'ai juste 3 colonnes alors il n'y a pas beaucoup à stocker.

  24. #23
    vande545

    Re : Post - php -

    Code PHP:
    $mysqli->real_query(Update seuil_alertes SET seuil_mini 'SmCO'seuil_max ='SMCO' or die("insertion impossible"); 
    ça ne marchera pas parce que tu ne mets pas les variables et le nom de colonne n'est pas conforme à la copie d'écran de la table. On ne peut pas s'en sortir comme ça.
    SOIT PLUS SOIGNEUX ET PLUS RIGOUREUX !
    Et si ça marchait, ça mettrait à jour la 1ère ligne (ou la dernière) sans tenir compte du capteur ; c'est n'importe quoi !

  25. #24
    invite0efeecaa

    Re : Post - php -

    Merci Ikhar84, avec toute t'es conseils je vais essayer de m'occuper de ça toute la semaine

  26. #25
    umfred

    Re : Post - php -

    il manque la clause Where avec le nom du capteur, sinon tu vas remplacer toutes les valeurs par ces 2 valeurs uniquement.

Discussions similaires

  1. Réponses: 18
    Dernier message: 07/12/2018, 10h15
  2. Différence entre ingénieur dune école post bac et dune école post prépa
    Par invitecc62921e dans le forum Orientation après le BAC
    Réponses: 8
    Dernier message: 29/01/2012, 14h15
  3. Orientation Post-prépa,post-intégration
    Par invited9663e40 dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 07/01/2010, 17h10
  4. Finlandaise cherchant post de post doc en France
    Par invite317d0c7a dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 11/04/2005, 14h36