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 :

Problème d'Incrémentation dans une table


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
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut Problème d'Incrémentation dans une table
    Bonjour,

    Je souhaite incrémenter la valeur présente dans le champ 'hits' de la table `HitsParItems` lorsque le champ id est égal à la variable de session $_SESSION['idItem'].
    Mon code est le suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    			$select = "SELECT * FROM `HitsParItems` WHERE id = '".$_SESSION['idItem']."'";
    			$result =mysql_query($select,$link) or die ('Erreur :'.mysql_errno().mysql_error());
    			$rows = mysql_num_rows($result);
     
    			if ($rows > 0)
    				{
    					while ($rows=mysql_fetch_array($result))
    						{
    							$hits=$rows['hits'] +1;
    							$requete = mysql_query("UPDATE `HitsParItems` SET hits='".$hits."' WHERE id = '".$_SESSION['idItem']."'");
    						}
    				}
    Ceci étant, ce champ ne s'incrémente pas donc .... j'ai une erreur que je ne vois pas.
    Pouvez-vous m'aider, svp ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tout ton code se résume à :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    	$requete = mysql_query("UPDATE `HitsParItems` SET hits=hits+1 WHERE id = '".intval($_SESSION['idItem'])."'", $link);

    N.B. Tu es bien conscient que l'extension mysql_ est obsolète depuis plusieurs années ?
    Dernière modification par Invité ; 15/08/2015 à 08h50.

  3. #3
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour Jreaux62,

    Merci de ton aide, contrairement à ce que je croyais dans un premier temps, cela ne fonctionne pas même si c'est beaucoup plus succinct.
    Le nouveau script est donc le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    			include "mysql_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
    			$link=mysqli_connect($host,$login,$password) or die ('Erreur :'.mysqli_errno().mysqli_error());	
    			$base = mysqli_select_db($base,$link);
     
    			$requete = mysqli_query("UPDATE `HitsParItems` SET hits=hits+1 WHERE id = '".intval($_SESSION['idItem'])."'", $link);
    Quant au changement de l'extension, même si je programme de façon bénévole, il va effectivement falloir que je me mette à la page ...

  4. #4
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut Problème d'incrémentation
    Bonjour,
    Mon code devenu le suivant grâce au conseil de Jreaux62 n'incrémente toujours pas ma variable hits.
    Pouvez-vous m'aider, svp ? Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    include "mysql_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
    			$link=mysqli_connect($host,$login,$password) or die ('Erreur :'.mysqli_errno().mysqli_error());	
    			$base = mysqli_select_db($base,$link);
     
    			$requete = mysqli_query("UPDATE `HitsParItems` SET hits=hits+1 WHERE id = '".intval($_SESSION['idItem'])."'", $link);

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    TU UTILISES A L'ENVERS la fonction mysqli_query() !
    => mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
    mysql_query() et mysqli_query() n'ont pas la même syntaxe !
    => peux-tu nous montrer le contenu du fichier mysql_conf.inc.php ? ? (en masquant tes paramètres perso de connexion, bien entendu !)
    Car il ne faut pas mélanger mysql_ et mysqli_ !

    Question subsidiaire :
    Pour quoi ne pas avoir simplement mis la ligne $link=mysqli_connect(...................); DANS le fichier mysql_conf.inc.php ?


    En phase de test, tu peux afficher les erreurs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $query = "UPDATE `HitsParItems` SET hits=hits+1 WHERE id = '".intval($_SESSION['idItem'])."'";
        $requete = mysqli_query( $link, $query ) or die ('Erreur :'.mysqli_errno().mysqli_error()); // or die...... à enlever en production
    Cette écriture te permet aussi de vérifier la requête :


    UTILISATION DE REQUÊTES PRÉPARÉES :
    Quand tu as des paramètres à transmettre via une requête SQL, il faut SYSTÉMATIQUEMENT utiliser une REQUÊTE PRÉPARÉE !
    Voir :
    La requêtre ci-dessus devient alors :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        $query = "UPDATE `HitsParItems` SET hits=hits+1 WHERE id = ? ";
        $requete = mysqli_prepare( $link, $query ) or die ('Erreur :'.mysqli_errno().mysqli_error()); // or die...... à enlever en production
        /* Lecture des marqueurs */
        mysqli_stmt_bind_param( $requete, 'i', $_SESSION['idItem'] ); // 'i' correspond à un entier. Donc plus besoin de intval()
        /* Exécution de la requête */
        mysqli_stmt_execute( $requete );
    Dernière modification par Invité ; 15/08/2015 à 09h21.

  6. #6
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonsoir à tous et plus particulièrement à Jreaux62 qui m'a encore aidé.
    Le fichier mysql_conf.inc.php ne contient que mes paramètres de connexions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    // Paramètres de configuration de la base de données
    $host = 'XXX'; // Nom du serveur MySQL
    $base = 'XXX'; // Nom de la base de données
    $login = 'XXX'; // Nom d'utilisateur d'accès à la base de données
    $password = 'XXX'; // Mot de passe d'accès à la base de données
    ?>
    Je vais regarder de plus près les requêtes préparées mais je ne comprends pas comment fonctionne le ? de la 1ère ligne. Aurais-tu la gentillesse de m'éclairer, stp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "UPDATE `HitsParItems` SET hits=hits+1 WHERE id = ? ";

  7. #7
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour,

    Après avoir regardé les liens envoyés par Jreaux62, je considère mon problème résolu.
    Merci à tous (surtout à Jreaux62 )

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

Discussions similaires

  1. Problème de Type dans une table liée
    Par tangueros78 dans le forum Access
    Réponses: 19
    Dernier message: 16/03/2006, 09h14
  2. [MySQL] Problème d'insertion dans une table
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/03/2006, 17h43
  3. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34
  4. Problème de suppression dans une table
    Par Splinter dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/10/2005, 10h55
  5. Problème de dépendances dans une table
    Par PrinceMaster77 dans le forum Outils
    Réponses: 1
    Dernier message: 22/11/2004, 12h39

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