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 :

Une requête update qui ne renvoie pas d'erreur mais qui n'update pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut Une requête update qui ne renvoie pas d'erreur mais qui n'update pas
    Bonjour,

    j'essaye de faire un classement de foot.

    Lorsqu'on entre le score d'un match, par exemple Marseille 1 1 Caen. j'aimerais que dans la base, le résultat s'inscrive pour que le classement s'actualise.

    Mais je n'arrive pas à modifier mes champs lorsque je rentre dans ma condition "else", alors que pour le if, ça marche très bien.

    exemple pour une équipe

    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
    		if(isset($_POST['score_Marseille'])){
    		
    		echo 'n° journée '.$_POST['journee'];
    		
    			$sql="SELECT COUNT (*) FROM $stats.calendrier WHERE equipe1='Marseille' AND journee='".$_POST['journee']."' ;";
    			
    			if(mysql_query($sql)==1){echo "dom";
    				$sql1="UPDATE $stats.calendrier set score1='".$_POST['score_Marseille']."' where journee='".$_POST['journee']."' AND equipe1='Marseille' ;";
    				mysql_query($sql1) or die (mysql_error());}
    			else{
    				$sql2="UPDATE $stats.calendrier set score2='".$_POST['score_Marseille']."' where journee='".$_POST['journee']."' AND equipe2='Marseille' ;";
    				mysql_query($sql2) or die (mysql_error());
    				echo "ext";
    			}
    		}
    Le echo de ext s'affiche très bien.

    à noter qu'avant le "count" dans mysql, j'ai tenté des fonctions php, mysql_num_rows, mysql_result, etc... mais en vain.

    Le or die (mysql_error()) que j'ai souligné ne m'affiche rien ! Mais aucun update alors que c'est le même code que dans le if. J'ai modifié les 2 champs qu'il fallait c'est tout.

    J'espère que vous pourrez m'aider et que c'est une faute évidente que je n'ai pas trouvé.

    merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    c'est quoi ce truc en rouge?
    $sql2="UPDATE $stats.calendrier set score2='".$_POST['score_Marseille']."' where journee='".$_POST['journee']."' AND equipe2='Marseille' ;";
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  3. #3
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    C'est un point virgule, des fois je les mets, d'autre fois non. Sur phpmyadmin il les mets toujours comme délimiteur, donc je doute que ce soit ça qui pose problème.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    tu fais un update ; mais t'es sur qu'il existe un enregistrement à modifier?
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  5. #5
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Oui, mais je comprends encore moins, lorsque je vais sur la partie SQL de phpmyadmin et que je tape ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT journee FROM stats.calendrier WHERE equipe2 = 'Lyon' ;
    Aucun enregistrement, alors qu'il devrait me sortir tous les enregistrements de lyon qui joue à l'extérieur.

    Si je fais la même requête mais sur les journées, par exemple tous les enregistrements correspondant à la journée 2, ça marche...

    dans ma table calendrier j'ai ces champs :

    journee equipe1 score1 score2 equipe2
    journee, score1 et score2 sont des int(11)
    equipe1 et equipe2 sont des varchar(255)

    aucune faute sur les équipes, elles sont bien orthographiées. franchement je comprends plus rien. La requête la plus simple du monde.

    Est ce dû à un beug qui ferait que comme à la moitié des journées, lyon joue à domicile, il n'existe qu'une fois sur 2 la valeur "Lyon" dans le champ equipe2, donc peut être que quand il fait le where, il s'attend au moins à une valeur.

    bref, je pige plus.

  6. #6
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Et pour la même requête sur equipe1, CA MARCHE !

    à me rendre fou ! Pourquoi sur equipe2 ça ne marche pas?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    $sql="SELECT COUNT (*) FROM $stats.calendrier WHERE equipe1='Marseille' AND journee='".$_POST['journee']."' ;";
    décortique ton résultat pour savoir ce qui ce passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql="SELECT COUNT (*) FROM $stats.calendrier WHERE equipe1='Marseille' AND journee='".$_POST['journee']."' ;";
    $res=mysql_query($sql) or die(mysql_error());
    $nb= mysql_num_rows($res);			
    print($nb);
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  8. #8
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Il ne me met aucune erreur, c'est ça le problème.

    Même dans phpmyadmin, je n'ai pas d'erreur, il me dit "0 enregistrement".

  9. #9
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Quand je fais


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nb=mysql_query($sql_);
    print($nb);
    il m'affiche

    Resource id #8
    et pour le num_rows, il n'affiche rien.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    si tu as pas d'enregistrement, tu pas faire d'update, faut faire un insert
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  11. #11
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Oui mais là je cherche juste à faire un select. Même le select bloque.

    ps : je t'ai répondu aussi juste au dessus.

  12. #12
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Sans aucune raison apparente, lorsque j'entre un nouvel enregistrement, par exemple 39e journée, lens 4 - 4 lens, n'importe quoi quoi,

    et bien là j'arrive à trouver UN SEUL enregistrement dans equipe2=lens à l'extérieur. Alors que je devrais en trouver 20.

    Ca doit être quand j'ai tout updater d'un fichier txt, mais je ne vois pas pourquoi... peut être qu'un délimiteur manquait...

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Essai en rajoutant un alias :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS total ... etc ...
    Ensuite récupère directement le résultat avec mysql_fetch_array().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = mysql_fetch_array();
    Et exploiter : $resultat['total']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((int)$resultat['total'] > 0) {
        // Ok ...
    }
    Il est théoriquement inutile de faire un mysql_num_rows() car la réquête retournera obligatoirement 1 résultat, soit 0 soit le nombre de tuples.
    (sauf si la requête plante, comporte une erreur)
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    le select ne bloque pas
    Resource id #8
    il te retourne une ressource; ce qui est normal.
    mysql_num_rows() ne te retourne rien parce qu'il n'y a pas d'enregistrement
    ya pas d'erreur => ya rien.
    apres ta requête fais un while et mets dedans une chaine de caractères, tu verras qu'elle ne s'affiche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql="SELECT COUNT (*) FROM $stats.calendrier WHERE equipe1='Marseille' AND journee='".$_POST['journee']."' ;";
    $res=mysql_query($sql) or die mysql_error());
    while($result=mysql_fetch_array($res)){
    print("çà s'affiche autant de fois qu'il y a des enregistrements<br />");
    }
    essaie; tu verras.
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  15. #15
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Merci pour ton aide,

    j'ai tout reuploader, si je peux me permettre l'expression.

    J'ai pensé que quand j'upload tous les matchs du calendrier avec pour délimiteur une virgule :

    Auxerre,0,0,Lorient,
    Lens,0,0,Nancy,
    Lyon,0,0,Monaco,
    ...

    Au départ j'avais mis ça

    Auxerre,0,0,Lorient
    Lens,0,0,Nancy
    Lyon,0,0,Monaco
    ...

    J'avais pas mis de virgule à la fin. Et encore maintenant j'ai un doute, je doute que ce soit ça qui ait fait planter le truc, mais même si c'est long je vais faire un test après et je te dirai.

    Du coup là ça marche sinon. Mais ça m'énerve quand même.

  16. #16
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    C'était ça...

    Comme quoi je l'ignorais, mais lorsqu'on fait un explode avec un délimiteur, pour que la dernière valeur soit BIEN prise en compte, je dis bien prise en compte, car moi tout s'affichait et paraissait normal, mais les requêtes étaient impossibles sur la dernière valeur.

    Bref, pour que ce soit bien pris en compte, il faut terminer chaque ligne par ce délimiteur. Un retour à la ligne naturel ne suffit apparemment pas. Pourtant je faisais un fgets au départ.

    Enfin bref, c'est résolu c'est ce qui compte.

    Merci pour ta patience.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    pour info, tu peux me mettre comment tu as fait ton explode, faut que je vérifie un truc
    Emmanuel
    --------------------------------------
    aucune réponse en message privé.
    les discussions doivent profiter à tous.

  18. #18
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Oui le voici :

    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
     
    /*								*******************************************************************
    							**  	Insertion des données du fichier texte dans la boucle	 **
    							*******************************************************************							*/					
     
    	$c=1;
    	for ($i = 0 ; $i <= $nbLignes ; $i++){   
     
    		if($i%10==0 && $i!=0) { $c++; }
     
    			$texte = explode ( ",", fgets($fic) );
     
    			$cal=	"INSERT INTO $stats.calendrier (`journee`, `equipe1`, `score1`, `score2`, `equipe2`) VALUES
    							('$c', '$texte[0]', '$texte[1]', '$texte[2]', '$texte[3]');";
     
    			mysql_query($cal);
     
    	}

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 10/07/2011, 17h49
  2. Réponses: 2
    Dernier message: 07/02/2011, 09h39
  3. Réponses: 2
    Dernier message: 14/04/2009, 08h35
  4. pas d'erreur mais ma procédure ne fait pas ce qui est demandé
    Par mennou dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 15/06/2008, 16h14
  5. pas d'erreur mais update qui marche pas
    Par gloppy dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/12/2006, 15h49

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