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 :

explication sur cette erreur


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut explication sur cette erreur
    Bonjour,

    quelqu'un peux m'expliquer pourquoi j'ai cette erreur

    Erreur table statistiques_philaUPDATE statistiques_phila SET page = (page+1) WHERE date = 2020-05-30
    Incorrect date value: '1985' for column 'date' at row 1
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		$date_courante=date("Y-m-d");
     
    		if($date_courante==$date_enregistre)
    			{
     
    			// insertion des éléments dans la base de données
    				// ajout d'une page
    				$sql = 'UPDATE statistiques_phila SET page = (page+1) WHERE date = '.$date_courante;
    				mysqli_query($base_gene,$sql)or die ('Erreur table statistiques_phila'.$sql.'<br>'.mysqli_error($base_gene));
    				// ajout d'une visite
    				$sql = 'UPDATE statistiques_phila SET visite = (visite+1) WHERE date = '.$date_courante;
    				mysqli_query($base_gene,$sql)or die ('Erreur table statistiques_phila'.$sql.'<br>'.mysqli_error($base_gene));
     
    			} // fin de if($date_courante==$date_enregistre)
    Ma table
    Nom : Sans titre-2 copie.jpg
Affichages : 105
Taille : 56,1 Ko

    Merci

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour,
    Jeter un coup d'oeil sur la fonction STR_TO_DATE() de Mysql
    L'idée c'est que ça n'est pas parce que l'on indique un format /type sous php que c'est le bon format/type sous Mysql (par exemple) ...

    Vérifier aussi les apostrophes ... afficher par echo ou var_dump le contenu de $sql et le retaper sous phpmyadmin ...

    Voici mes pistes, les dates et datetime c'est toujours chiant quelque soit le SGBD

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour,


    Tu dois commencer par tester tes requêtes EN SQL avant de jouer avec en PHP et d'y intégrer des variables.

    Tes messages d'erreur sont relativement clairs :

    Erreur table statistiques_philaUPDATE statistiques_phila SET page = (page+1) WHERE date = 2020-05-30
    Incorrect date value: '1985' for column 'date' at row 1
    En SQL, date="2020-05-30", guillemets simples ou doubles OBLIGATOIRES
    Attention, date est un mot réservé en SQL. Ce serait plus sain d'appeler ta colonne 'phila_date'

    De plus, comme c'est une requête en écriture, et la plus dangereuse, un update sans filtre sur un enregistrement, prends soin de copier d'abord ta table originale.
    Renomme la statistiques_phila_test puis teste ceci dans un PHPMyAdmin

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE statistiques_phila_test SET page = (page+1) WHERE phila_date = "2020-05-30";

    edit : peux-tu nous expliquer quel est ton but final ?
    mettre page 1 à tous les enregistrements de ta première date, puis page 2 à tous ceux à la date suivante etc. etc. ?
    Mais alors, pourquoi faire exactement de même à la colonne visite ?

    70 ans quelques dents en moins, mais toujours envie d'apprendre
    Le temps passe 73 ......
    Dendrite, 54 ans, et qui remplace ses dents par des implants + couronne, d'ailleurs elle y passe toutes ses économies. Donc Dendrite bosse pour garder ses crocs !
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    Bonjour et merci pour vos réponses

    Concernant mon problème avec «* WHERE date = '.$date_courante;*» j’ai résolu le problème donc pas d’urgence pour l’instant (mais je me pencherai dessus plus tard histoire de comprendre)

    Pour Dendrite

    Sur mon site j’ai des scripts qui me fournissent des stats basiques mais ça me suffit. Par contre ces scripts ont été créés depuis un moment et sont éparpillés un peu partout. De plus ils ont été bidouillé et re-bidouillé
    et c’est un peu le basar.

    Donc je me suis lancé à reprendre tout ça pour faire un truc propre et simple.
    J’ai donc créé un beau répertoire «*statistiques*»

    qui est construit comme ceci*:
    statistiques
    stat include compte_visiteur
    include detetct_robot
    scripts ...

    le site est construit avec un bandeau haut, un corps et un bandeau bas

    Tout ceci fonctionne sauf ……

    dans le bandeau bas j’ai mis un include*: pour lancer stat (adresse site/statistiques/stat.php)

    Le problème c’est je n’arrive pas à récupérer l’ip du visiteur dans le script "compte_visiteur"(je récupère l’ip du serveur ???) C’est peut être du à la position du répertoire*? alors que ce script fonctionne parfaitement là ou il se trouve actuellement

    Je voudrais bien rester sur le bandeau bas car je suis sur qu’il s’affiche sur toutes les pages du site

    le script
    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
    <?php
     
    // Script de comptage du nombre de visiteurs en ligne
     
        // récupération de l'adresse IP du client 
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
          $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
          $ip  = $_SERVER['HTTP_CLIENT_IP'];
        }
        else {
          $ip = $_SERVER['REMOTE_ADDR'];
        }
     
     
    $retour=mysqli_query($base_gene, 'SELECT COUNT(*) AS nbre_entrees FROM connectes_phila WHERE ip=\'' . $ip . '\'');
    $donnees = mysqli_fetch_array($retour);
     
    if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
    {
        mysqli_query($base_gene,'INSERT INTO connectes_phila VALUES(\'' . $ip . '\', ' . time() . ')');
    }
    else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
    {
        mysqli_query($base_gene,'UPDATE connectes_phila SET timestamp=' . time() . ' WHERE ip=\'' . $ip . '\'');
    }
     
    // -------
    // On stocke dans une variable le timestamp qu'il était il y a 10 minutes :
    $timestamp_5min = time() - (60 * 10); 
    mysqli_query($base_gene,'DELETE FROM connectes_phila WHERE timestamp < ' . $timestamp_5min);
     
    // -------
    //  on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
    $retour = mysqli_query($base_gene,'SELECT COUNT(*) AS nbre_entrees FROM connectes_phila');
    $total = mysqli_fetch_array($retour);
    $total_connect=$total['nbre_entrees'];

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

Discussions similaires

  1. [Android] Qui peut m'aider sur cette erreur?
    Par Teddy dans le forum Composants FMX
    Réponses: 0
    Dernier message: 11/04/2016, 19h20
  2. Besoin d'explication sur cette commande
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2011, 15h16
  3. --Erreurs de script sur cette page !
    Par belaggoun2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/10/2009, 13h16
  4. [filter2] Demande d'explication sur cette fonction
    Par ranell dans le forum Images
    Réponses: 3
    Dernier message: 10/05/2007, 09h19
  5. Explication sur message d'erreur
    Par cjacquel dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 13/12/2006, 13h47

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