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 :

requete pour verifier la presence d'une donnée avant de l'inserer [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Par défaut requete pour verifier la presence d'une donnée avant de l'inserer
    bonjour j'ai un léger soucis lorsque j'essaie de faire un contrôle avant d'insérer une donnée dans ma base de donnée mysql . j'ai une erreur qui s'affiche(x3 avec ma boucle):
    Warning: mysql_result() expects parameter 1 to be resource, string given in C:\wamp\www\mysql.php on line 84


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <?php
    	$fp = fopen("test.xml","r"); //ouverture en lecture
    	$xmlstr = "";
    	while (!feof($fp)) { //on parcourt toutes les lignes
    		$xmlstr .= fgets($fp, 4096); // lecture du contenu de la ligne
    	}
     
    	$xmlObject=new SimpleXMLElement($xmlstr);
     
    	$db=mysql_connect("localhost", "root") or die("connection impossible");
    	mysql_select_db("projet",$db) or die ("base non trouvé");
     
    	class agent
    {
    public $matricule;
    public $dateentree;
    public $civilite;
    public $nomusuel;
    public $nompatronymique;
    public $nommarital;
    public $prenom;
    }
    $i=0;
     
     
    		$result = $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="matricule"]/dsml:value');
    		$result1= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="entree"]/dsml:value');			
    		$result2= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="civilite"]/dsml:value');
    		$result3= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="nomUsuel"]/dsml:value');
    		$result4= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="nomPatronymique"]/dsml:value');
    		$result5= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="nomMarital"]/dsml:value');
    		$result6= $xmlObject->xpath('//dsml:dsml/dsml:directory-entries/dsml:entry/dsml:attr[@name="prenom"]/dsml:value');
     
    		foreach ($result as $title) {  
    		$ag[$i]=new agent;
    		$ag[$i]->matricule=$title;
    		$i+=1;
    		echo $title . "\n"; }
    		$i=0;
    		foreach ($result1 as $title1) { 
     
    		$ag[$i]->dateentree=$title1;
    		$i+=1;
    		echo $title1 . "\n"; }
    		$i=0;	
    		foreach ($result2 as $title2) { 
     
    		$ag[$i]->civilite=$title2;
    		$i+=1;		
    		echo $title2 . "\n";  }
    		$i=0;
    		foreach ($result3 as $title3) {  
    		$ag[$i]->nomusuel=$title3;
    		$i+=1;
    		echo $title3 . "\n";  }
    		$i=0;
    		foreach ($result4 as $title4) {  
    		$ag[$i]->nompatronymique=$title4;
    		$i+=1;
    		echo $title4 . "\n";  }
    		$i=0;
    		foreach ($result5 as $title5) {  
    		$ag[$i]->nommarital=$title5;
    		$i+=1;
    		echo $title5 . "\n";  }
    		$i=0;
    		foreach ($result6 as $title6) {  
    		$ag[$i]->prenom=$title6;
    		$i+=1;
    		echo $title6 . "\n";  }
    		$i=0;
    		for($i=0;$i < 3;$i++) 
    		{
    		$title=$ag[$i]->matricule;
    		$title1=$ag[$i]->dateentree;
    		$title2=$ag[$i]->civilite;
    		$title3=$ag[$i]->nomusuel;
    		$title4=$ag[$i]->nompatronymique;
    		$title5=$ag[$i]->nommarital;
    		$title6=$ag[$i]->prenom;
    		$controle="select matricule 
    		from agent
    		where matricule=$title";
    mysql_query($controle) or die("erreur sur la requete sql");
    		$res=mysql_result($controle ,0);
    		echo $res;
    		if ($res=$title)
    		{echo"enregistrement de ja present pour cet agent";
    		}
    		else{
    		$sql="INSERT INTO AGENT (idagent,matricule,entree,civilite,nomUsuel,nomPatronymique,nomMarital,prenom)
    		values('$i','$title','$title1','$title2','$title3','$title4','$title5','$title6')";
    		mysql_query($sql) or die("erreur sur la requete sql");
    		}
    		}
     
     
     
    	mysql_close($db);
    	fclose($fp);
     
    ?>
    Je recherche juste a se qu'il ni ait pas de doublon dans la base de donnée.Apparemment l'erreur viendrait du type de la valeur retournée mais je n'en suis pas sur et ne voit pas comment la résoudre .

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    Tu dois lancer la requête avec mysql_query et c'est le résultat que tu dois utiliser avec mysql_result.

    A+.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Par défaut
    merci j'avais une erreur dans le copier coller du code j'avais oublier mysql_query mais l'erreur reste la meme toujours un probleme au niveau de mysq_lresult ligne 85 maintenan avec l'ajout de mysql_query

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $controle="select matricule 
    		from agent
    		where matricule=$title";
    $result=mysql_query($controle) or die("erreur sur la requete sql");
    		$res=mysql_result($result ,0);

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Par défaut
    Merci de répondre aussi rapidement j'ai testé se que vous m'avez dit et voila une nouvelle erreur :
    Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 6 in C:\wamp\www\mysql.php on line 85


    Commençant avec mysql je ne voit pas trop d'où vient l'erreur.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Parce que la requête ne retourne pas un enregistrement.
    Si le champ matricule n'est pas un entier, tu dois la valeur a testé dans deux single quote. N'utilise pas mysqul_result mais mysql_num_rows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $controle="select matricule 
    		from agent
    		where matricule=$title";
    $result=mysql_query($controle) or die("erreur sur la requete sql");
    if(mysql_num_rows ($result )>0){
    echo"enregistrement de ja present pour cet agent";
    }
    A+.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Tu dois lancer la requête avec mysql_query et c'est le résultat que tu dois utiliser avec mysql_result.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql_query($controle) or die("erreur sur la requete sql");
    $res=mysql_result($result, 0);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. verifier la presence d'une fenetre
    Par azamharir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/03/2009, 15h51
  2. Réponses: 3
    Dernier message: 04/06/2008, 10h19
  3. Requete pour trier un état sur une somme partielle ?
    Par thierry.drouet dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2006, 16h45
  4. Probleme de requete pour remplir les champs d'une table
    Par Jim_Nastiq dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/04/2006, 14h56
  5. requete pour compter les valeurs ds une colonne
    Par smariteau dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/02/2006, 17h37

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