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 :

Erreur d'insertion [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Par défaut Erreur d'insertion
    Bonjour à tous.
    j'ai rencontré le problème avec mon code PHP aujourd'hui. l'erreur vient surement de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reqInsertObjet="insert into `objets`(`ref`, `nom`, `descriptif`, `type`) values ('$ligne[0]',$ligne[2],'${ligne[4]}','$ligne[6]')";
    mysql_query($reqInsertObjet) or die("Erreur insertion de la requete " .$reqInsertObjet . " l'erreur est ". mysql_error());
    j'explique: je dois lire un fichier csv, ensuite j'extrais les informations et ensuite faire deux traitements:
    le premier faire la mise à jour des references déja existant dans la base ensuite rajouter les nouveaux produits à la base.

    je ne suis pas fort en programmation et donc si quelqu'un peut m'aider je lui serai reconnaissant:
    j'ai détecté d'ou ça vient le probleme mais je ne sais pas comment faire.
    dans la requete avec les valeurs des champs elle ressemble à ceci:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into `objets`(`ref`, `nom`, `descriptif`, `type`) values ('OM190031', DELGADO CHROME/DORE STYLO PLUME,'Instruments d'écriture avec corps en métal et attributs en métal dorés. Plume en acier inoxydable doré à pointe iridium (M).','Objet')";
    en fait dans le 3eme champs il y'a la cote simple dans la chaine de caractère que je veux inserer. et du coup mysql refuse.
    j'ai essayé avec double cote ça ne marche pas non plus.(remarquez bien ceci
    'Instruments d'écriture avec corps en métal et attributs en métal dorés. Plume en acier inoxydable doré à pointe iridium (M).'
    les cote en rouge sont les cotes normale de la syntaxe mysql et la coté verte est celle contenu dans le champ.

    au passage voici 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
    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
    103
    104
    105
    106
    107
    <?php
    //include("login.php");
     
    $monfichierCSV=getFichierCSV();
    OuvertureFichier($monfichierCSV);
    /* cette fonction sert أ* recuperer le nom du fichier envoyer par le formulaire et renvoie donc ce nom du fichier*/
    function getFichierCSV()
    {
    	/*on stocke le fichier dans un endroit sur le serveur*/
    	$stock="/var/www/apache2-default/script/";
    	if (move_uploaded_file($_FILES['fichierEnvoi']['tmp_name'], $stock.$_FILES['fichierEnvoi']['name']))
    	{
        		echo "Le fichier ".$_FILES['fichierEnvoi']['name']." a ete telecharge avec succes dans ".$stock."<br /><br /><hr>";
    	}
    	$monfichierCSVF=$_FILES['fichierEnvoi']['name'];
    	return $monfichierCSVF;
    }
     
    function connection()
    {
    	$link=mysql_pconnect("localhost","root","") or die("Connexion au serveur impossible");
    	$db=mysql_select_db("omnipub",$link) or die("Selection de la base impossible");
    }
     
    function OuvertureFichier($fichier)
    {
    	$memeRef=false; //teste si la reference du fichier csv=ref de la table objets
    	//echo "appel de la fonction getReferenceTableObjets <br /><br />";
    	$tabRefObj=getReferenceTableObjets();
    	//echo "Fin appel de la fonction getReferenceTableObjets <br /><br />";
    	$taille=1027;
    	$delimiteur=";";
    	/*ouverture du fichier*/
    	if($fp= fopen($fichier,"r"))
    	{	/* extraction d'une ligne */
    		while($ligne=fgetcsv($fp,$taille,$delimiteur))
    		{	//cette boucle affiche les noms des champs du fichier csv
    			/*for($j=0;$j<sizeof($ligne);$j++)
    			{
    				echo "Le champ du fichier csv numero  " .$j . " = <b>".$ligne[$j] . "</b><br />";
    			}*/
    			//$ligne[0] contient toutes les references contenues dans le fichier csv
    			for($j=0;$j<sizeof($tabRefObj);$j++)
    			{
    				//if($ligne[0]=='ref OM');break;
    				$comp=strcmp($ligne[0],$tabRefObj[$j]);
    				//echo "La reference  csv est <b> : " .$ligne[0];echo "</b> Et      "; echo "La ref dans la table objets via la requete  est : <b> " . $tabRefObj[$j]. "</b>";echo "<br />";
    				if($comp==0)
    				{
    					$memeRef=true;
    					echo "Le Champ reference csv <b> " .$ligne[0]. " </b>= a La reference objets <b>" . $tabRefObj[$j];echo "</b><br />";
    					connection();
    					$resultQuery=mysql_query("update prix set P1=$ligne[11],P2=$ligne[12],P4=$ligne[13],P5=$ligne[14],P10=$ligne[15],
    					P15=$ligne[16],P20=$ligne[17], qte=$ligne[9] where ref='$ligne[0]'") 
    					or die("Execution impossible de la requete des mise a jour des references des produits existants , l'erreur est ". mysql_error());
    				}
    				//else echo "le champ csv <b> ".$ligne[0]."</b> est different de la reference de la table objet <b> ".$tabRefObj[$j] ." </b><br />";
    			}
    			if($memeRef==false)
    			{ 
    				echo "Le boolean vaut  false donc on procede a l'insertion de nouveau produit " .$ligne[0]. " dans la base<br /> <br />";
    				connection();
     
    				$reqInsertObjet="insert into `objets`(`ref`, `nom`, `descriptif`, `type`) values ('$ligne[0]',$ligne[2],'${ligne[4]}','$ligne[6]')";
    				mysql_query($reqInsertObjet) or die("Erreur insertion de la requete " .$reqInsertObjet . " l'erreur est ". mysql_error());
     
     
    				$reqInsertInt_Obj_Cat="insert into int_obj_cat(ref)values('$ligne[0]')";
    				mysql_query($reqInsertInt_Obj_Cat) or die("Erreur insertion de la requete " .$reqInsertInt_Obj_Cat . " l'erreur est ". mysql_error() );
     
     
    				$reqInsertPrix="insert into prix(ref,P1,P2,P4,P5,P10,P15,P20,qte) values('$ligne[0]','$ligne[11]','$ligne[12]','$ligne[13]','$ligne[14]','$ligne[15]','$ligne[16]','$ligne[17]','$ligne[9]')";
    				mysql_query($reqInsertPrix) or die("Erreur insertion de la requete " .$reqInsertPrix . " l'erreur est ". mysql_error() );
     
     
    				$reqInsertInt_Obj_Coul="insert into int_obj_coul values('$ligne[7]','$ligne[0]')";
    				mysql_query($reqInsertInt_Obj_Coul) or die("Erreur insertion de la requete " .$reqInsertInt_Obj_Coul . " l'erreur est ". mysql_error() );
    			}
     
    		}
     
    	}
    	else
    	{
    		echo "Ouverture du fichier ". $fichier ." impossible";
    	}
    	fclose($fp);	
    }
     
    /* cette fonction fonctionne*/
    function getReferenceTableObjets()
    {
    	$tteReferences=array();
    	connection();
    	$i=0;
    	$requete="select distinct ref from objets";
    	$refObjet=mysql_query($requete) or die("Execution de la requete".$requete." dans la fonction getReferenceTableObjets impossible");
    	while($mesRef=mysql_fetch_array($refObjet))
    	{
    		$tteReferences[$i]=$mesRef['ref'];
    		//echo "la reference dans la base num ".$i. " est ". $tteReferences[$i];echo "<br />";
    		$i++;
    	}	
    	return $tteReferences;
    }
     
    ?>

  2. #2
    Membre expérimenté Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Par défaut
    Utilises la fonction mysql_escape_string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $reqInsertObjet="insert into `objets`(`ref`, `nom`, `descriptif`, `type`) values ('".mysql_escape_string($ligne[0])."','".mysql_escape_string($ligne[2])."','".mysql_escape_string($ligne[4])."','".mysql_escape_string($ligne[6])."')";
    mysql_query($reqInsertObjet) or die("Erreur insertion de la requete " .$reqInsertObjet . " l'erreur est ". mysql_error());
    Ca devrait fonctionner ...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Par défaut
    Merci beucoup AurelBUD.
    tu m'as sauvé vraiment.
    Je ne sais pas comment te remercier.
    encore GRAND MERCI.
    bonne journée

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

Discussions similaires

  1. [SQL Server]Erreur d'insertion dans la DB
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h55
  2. [Format Date] erreur sur insertion d'une date
    Par philobedo dans le forum SQL
    Réponses: 4
    Dernier message: 14/06/2005, 10h41
  3. Warning et Erreur en Insertion
    Par minimoi1234 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/04/2005, 10h30
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

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