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 de requete


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Points : 53
    Points
    53
    Par défaut problème de requete
    J'ai un problème avec une requete dans mon code php:

    voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    if(count($CriteresAjout)>0){		
    			$Insert_Criteres = "INSERT INTO criteres_annonce";
    			$Insert_Criteres .= "(No_Annonce, No_Critere_Categorie, No_Critere_Index, Valeur, ValeurMax, Complement) VALUES ";
     
    			$iCtr = 1;
     
    			foreach($CriteresAjout as $unCritere){
     
    				if($iCtr > 1){
    					$Insert_Criteres .= ",";
    				}
    				$Insert_Criteres .= "('".$unCritere['no_annonce']."','".$unCritere['No_Critere_Categorie']."','".$unCritere['No_Critere_Index'];
    				$Insert_Criteres .= "','".$unCritere['valeur']."','".$unCritere['valeur_max']."','".$unCritere['Complement']."')";
     
    				$iCtr++;
     
    			}
    			$Insert_Criteres .= ";";
    		}
     
    		if(count($CriteresModifi)>0){
     
    			foreach($CriteresModifi as $unCritere){
     
    				$Insert_Criteres .= "UPDATE criteres_annonce SET ";
    				$Insert_Criteres .= "No_Annonce = '".$unCritere['no_annonce']."', No_Critere_Categorie = '".$unCritere['No_Critere_Categorie']."', No_Critere_Index = '".$unCritere['No_Critere_Index']."', Valeur = '".$unCritere['valeur']."', ValeurMax = '".$unCritere['valeur_max']."', Complement = '".$unCritere['Complement']."' WHERE ";
    				$Insert_Criteres .=	"No_Annonce = '".$unCritere['no_annonce']."' and No_Critere_Categorie = '".$unCritere['No_Critere_Categorie']."' and No_Critere_Index = '".$unCritere['No_Critere_Index']."';";
     
    			}			
    		}
     
    		if(count($CritereDelete)>0){
     
    			foreach($CritereDelete as $unCritere){
     
    				$Insert_Criteres .= "DELETE FROM criteres_annonce WHERE No_Annonce = ".$no_Annonce." and  ";
     
    				$Insert_Criteres .= "No_Critere_Categorie = '".$unCritere['No_Critere_Categorie']." AND No_Critere_Index = '".$unCritere['No_Critere_Index'];
     
    				$Insert_Criteres .= ";";	
    			}			
    		}
     
    		if($Insert_Criteres != ''){
    			if(MODE_TEST){echo $Insert_Criteres.'<br />';}
    			if (($SQL_Result = mysql_query($Insert_Criteres))){//Ajout dans la table criteres_annonce
    				$Retour['criteres'] = true;
    			}
    		}

    voici un exemple de requete envoyé a mysql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO criteres_annonce(No_Annonce, No_Critere_Categorie, No_Critere_Index, Valeur, ValeurMax, Complement) VALUES ('5','4','0','2007','2007','');UPDATE criteres_annonce SET No_Annonce = '5', No_Critere_Categorie = '1', No_Critere_Index = '0', Valeur = '149', ValeurMax = '149', Complement = '$' WHERE No_Annonce = '5' and No_Critere_Categorie = '1' and No_Critere_Index = '0';UPDATE criteres_annonce SET No_Annonce = '5', No_Critere_Categorie = '3', No_Critere_Index = '0', Valeur = 'neuf', ValeurMax = '', Complement = '' WHERE No_Annonce = '5' and No_Critere_Categorie = '3' and No_Critere_Index = '0';UPDATE criteres_annonce SET No_Annonce = '5', No_Critere_Categorie = '0', No_Critere_Index = '1', Valeur = 'salon', ValeurMax = '', Complement = '' WHERE No_Annonce = '5' and No_Critere_Categorie = '0' and No_Critere_Index = '1';DELETE FROM criteres_annonce WHERE No_Annonce = 5 and No_Critere_Categorie = '2 AND No_Critere_Index = '0;

    elle passe dans mon exécution mais n'affecte aucun enregistrement...
    si je prend cette requete et je l'exécute directement dans mysql, tout fonctionne correctement...

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Pour voir les éventuels messages d'erreur SQL tu dois ajouter au bout de toutes tes lignes utilisant une fonction mysql_XXX "or die(mysql_error())".

    En regardant vite fait on voit déjà un problème de quotes dans le DELETE à la fin...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    salut,
    pour simplifier et pour éciter des erreurs :

    si tu insert qqch dans TOUTES les colonnes de ta table, ca va plus vite d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO criteres_annonce values (tous tes trucks a insérer);
    comme ca, t'es sur d'oublier aucune colone et ca t'évite des fautes de frppes inutiles...

    mais essayes déja ta requete directement avec mysql pour voir déja si c'est bon, après insert la dans ta page php
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    en gros j'ai des annonces avec des critères. chaque annonce a plusieur critères qui sont des enregistrements dans une table. qu'est-ce qui peu faire que les requète s'exécute tous correctement dans la base de données et non dans mon code php...

    est-ce qu'un série de requete séparé par des ";" fonctionne par le php?

    et pour l'insertion je fait déjà un insertion de tout dans la meme commande

    mais je dois faire des update des critères déjà existant et je ne crois pas pouvoir faire plusieur update sur plusieur tuple dans la meme requete s'il n'ont pas la meme clause WHERE

    et supprimer ceux qui ne sont plus utile

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Et avec ce que j'ai mis plus haut
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Insert_Criteres .= "('".$unCritere['no_annonce']."','".$unCritere['No_Critere_Categorie']."','".$unCritere['No_Critere_Index'];
    				$Insert_Criteres .= "','".$unCritere['valeur']."','".$unCritere['valeur_max']."','".$unCritere['Complement']."')";
    quelle est l'intérêt de le faire en deux fois....


    ensuite +1 avec jwhite.. et répond à ce qu'on te dit c'est pas super de parler dans le vide ...
    Stay in Bed .. Save Energy

Discussions similaires

  1. [EJBQL] Problème de requete
    Par rivierem dans le forum Java EE
    Réponses: 3
    Dernier message: 16/10/2004, 10h05
  2. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  3. Problème de Requete...
    Par sebiv dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/04/2004, 16h21
  4. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54
  5. Problème de requete multis-selections
    Par tripper.dim dans le forum SQL
    Réponses: 9
    Dernier message: 03/09/2003, 13h08

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