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

PHP & Base de données Discussion :

Probleme Upgrade champ time dans MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut Probleme Upgrade champ time dans MySQL
    Bonjour,

    Je suis tombé sur un problème dont je comprend pas le pourquoi, j'ai un formulaire avec un champ heure de début et heure de fin, c'est un champ texte banal... je veux l'enregistrer par POST et aucun Update dans la base ne se fait a part une remise a Zéro. si je passe par la l'heure courante cela marche. mais ce n'est pas ce que je veux bien évidemment. j'ai essayé également avec un Timepicker, même problème...

    je formate mon heure comme cela 00:00:00, rien de plus basic, si je passe par la fonction $autom_depart=date("H:i:s"); cela fonctionne...

    Voila le formulaire
    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
    <form action="<?php echo $_SERVER["PHP_SELF"];?>?lang=<?php echo $lang ?>&user=<?php echo $userID ?>&save=1" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <table width="90%" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="<?php echo $couleur_ligne; ?>" background="<?php echo $couleur_ligne ?>">
      <tr>
        <td width="14%"></td>
        <td width="15%"><font size="2" face="Arial"><?php echo $nom_pays ?></font></td>
        <td width="15%"><input name="autom_depart" type="text" id="autom_depart" onblur="this.style.backgroundColor='#ffffff'" onfocus="this.style.backgroundColor='#FFFFBF';" style="width:70px; -moz-border-radius: 4px;-webkit-border-radius: 4px;border-radius: 4px;" value="<?php echo $autom_depart ?>" />
     
     
    </td>
        <td width="16%"><input name="autom_fin" type="text" id="autom_fin" onblur="this.style.backgroundColor='#ffffff'" onfocus="this.style.backgroundColor='#FFFFBF';" style="width:70px; -moz-border-radius: 4px;-webkit-border-radius: 4px;border-radius: 4px;" value="<?php echo $autom_fin ?>" /></td>
        <td width="11%"><?php if($userID_verif==$userID){?>En ligne<?php } else { ?>Hors ligne<? } ?></td>
        <td width="19%"> <table width="100%" border="0" cellspacing="1" cellpadding="1">
          <tr>
            <td width="10%">&nbsp;</td>
            </tr>
        </table></td>
        <td width="10%">
          <input type="submit" name="Submit" value="Envoyer" />
     
        </td>
      </tr>
    </table>
    </form>
    Et le script d'update MySQL dans un champ TIME
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $save=$_GET['save']; 
    $user=$_GET['user']; 
     
    if($save==1){ 
    $autom_depart=$_POST['autom_depart'];
    //$autom_fin=$_POST['autom_fin']; 
    $autom_activ='1';
    $result3 = mysql_query("UPDATE users SET autom_depart='$autom_depart' WHERE userID='$user'");	
     
    };
    Faut'il un formatage particulier pour les TIME Mysql?
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pense à la sécurité de tes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($save==1){ 
       $user = mysql_real_escape_string($_GET['user']); 
       $autom_depart = mysql_real_escape_string($_POST['autom_depart']);
    Ensuite pour debuguer, affiche la requête et les erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result3 = mysql_query("UPDATE users SET autom_depart='$autom_depart' WHERE userID='$user'");
    echo "UPDATE users SET autom_depart='$autom_depart' WHERE userID='$user'";
    echo mysql_error();
    Et passe à PDO, l'extension mysql est obsolète.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Bonjour Sabotage,

    Ok pour tes conseils, mais mon problème reste le même...

    le résultat de la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE users SET autom_depart='' WHERE userID='160215110325'
    pourquoi ce POST n'est pas prix en compte ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    retire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    j'avais déjà essayé sans, c'est pareil...

    Alors maintenant le echo sur l'update est bon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE users SET autom_depart='18:20:30' WHERE userID='160215110325'
    mais cela ne s'enregistre pas dans la base...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est pareil mais tu as la bonne valeur ? Tu m'expliques ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    c'est pareil avec ou sans enctype="multipart/form-data" rien ne s'enregistre dans la base.

    Et bien j'ai un affichage correcte sur l’écho de la requête, mais rien ne s'enregistre dans la base, je rappel pour info que c'est un champ MySQL TIME...

    si par exemple j'insere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $autom_depart=date('H:i:s');
    et bien, je n'ai aucun problème avec l'update, mais l'heure actuel ne m’intéresse pas bien sur...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ah donc tu me rassures, il ne fallait bien retirer l'enctype.

    Si tu copies/colles la requête dans phpmyadmin, l'update se fait ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    oui ça marche correctement dans phpmyadmin.
    c'est vraiment curieux ce truc...

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et si dans ton code tu mets directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE users SET autom_depart='18:20:30' WHERE userID='160215110325'");
    ?

    Que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($autom_depart);
    ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    j'avais déjà essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE users SET autom_depart='18:20:30' WHERE userID='160215110325'");
    et ça marche, tout marche sauf quand je passe par le $_POST

    var_dump($autom_depart);
    ça donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(8) "18:22:00" UPDATE users SET autom_depart='18:22:00' WHERE userID='160215110325'

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux nous donner le fichier .php entier et un dump de la table ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Ok j'ai un peu nettoyé la table... des autres enregistrements

    test_connex_auto.php

    test_afrika.sql

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et bien on pourra dire que ça n'a pas été facile à debuguer
    Le problème est là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    background="<?php echo $couleur_ligne ?>"
    La propriété background attend une URL pour une image de fond, et comme tu n'en as pas mis, le navigateur va lire l'url actuelle.
    Comme ton PHP est mal écrit et que tu executes la requête même quand le formulaire n'a pas été validé, tu executes en arrière plan une deuxième fois la requête UPDATE, cette fois-ci sans valeur.

    Donc solution immédiate : retirer cette déclaration background qui n'a rien à faire là.
    solution générale : bien écrire ton PHP en vérifiant que les variables sont définies avant de les utiliser.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Bonjour Sabotage,

    C'est très curieux, il est vrai que je n'avais pas vu ce background, car normalement cela devrait être uniquement..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bgcolor="<?php echo $couleur_ligne; ?>"
    Qui n'appel pas un fichier mais une couleur... juste au dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $couleur_ligne = ($i % 2) 
                      ? '#FFFFFF' 
                      : '#d0eafe';
    Bon il est vrai que je ne t'ai pas donné non plus tous les fichiers "include" de fioriture, de déclaration de variables ou de session, pour ne pas embrouiller..
    cela vient sans doute du fait que je me sers d'une page Template qui me sert de base, je vais corriger cela.

    Je trouve incroyable qu'un simple background puisse empêcher un update, cela me servira de leçon, on en apprends tous les jours, je regarderais tout dorénavant...

    Pour l’écriture du code, cette page était loin d’être fini... j'en étais au début... je vais bien sur optimiser mon code.

    En tout cas merci, tu es un chef... cela fonctionne correctement.

    Décidément, a chaque fois que j'ai une galère, c'est toi qui me trouve la solution...

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En fait le background n'empêche la requête mais il en fait une deuxième qui efface la valeur dans ton dos.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Ha ok, bon, comme quoi il ne faut jamais rien négliger, merci en tout cas Sabotage...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Champ graphique dans MySQL
    Par chikha dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/05/2007, 20h03
  2. Probleme de Champ identique dans une CListCtrl
    Par poseidon2 dans le forum MFC
    Réponses: 2
    Dernier message: 27/12/2006, 18h48
  3. champ interval dans mysql
    Par acipeg dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2006, 11h44
  4. probleme insertion de date dans mysql
    Par alpking dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/11/2006, 14h12
  5. PROBLEME : chiffre avec virgule dans MySQL
    Par cedre22 dans le forum Requêtes
    Réponses: 11
    Dernier message: 15/12/2005, 16h41

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