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 :

Besoin d'un nouveau regard sur mon code [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut Besoin d'un nouveau regard sur mon code
    Bonjour
    En effet j'ai besoin d'un nouveau regarde sur mon code cela fait plus de 20h que j'y suis je devais rendre le script hier soir.
    Le problème est que je dois lire les données (données sur des clients) dans un fichier Excel et les mettre dans une BDD si ces clients n'y sont pas déjà.
    Donc pour lire le fichier Excel après quelque heure de recherche sur l'utilisation des COM et constat que les cours sur le Web ne sont plus d'actualité par rapport à ma version du COM Excel j'ai décidé d'utiliser une Lib phpExcelReader cala fonction sans problème.
    Maintenant je parcours les éléments du fichier Excel et je fais une requète pour compté le nombre d'élément de la table avec le même nom, prénom et adresse (j'ai considéré ces critères suffisants).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $result_select = mysql_query("SELECT * FROM confirmation WHERE nom = '".addslashes($cell[$i][1])."' AND prenom = '".addslashes($cell[$i][2])."' AND adresse = '".addslashes($cell[$i][4])."'") or die("wesh");
    			$total = mysql_num_rows($result_select);
    Lorsque j'affiche le résultat de ma requête j'ai Ressource id#7, ... 45 (à chaque fois que je l'appel la première fois c'est 7 et à la fin c'est 45).
    Puis si $total == 0 alors j'ajoute le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $result_insert = mysql_query("INSERT INTO confirmation VALUES(	'".$empty."',
    '".$cell[$i][1]."',
    '".$cell[$i][2]."',
    '".$cell[$i][3]."',
    '".$cell[$i][4]."',
    '".$cell[$i][5]."',
    '".$cell[$i][6]."',
    '".$cell[$i][7]."',
    '".$cell[$i][8]."',
    '".$cell[$i][9]."',
    '".$inconnu."' ");
    avec :
    $empty = "";
    $inconnu = "inconnu";
    Si semblerais que le problème soit dans ma requête d'insertion puisque l'affichage de $total me donne le résultat prévu malgré les Ressource id#...
    Alors que la requête INSERT ne fait rien.

    Récapitulatif du 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
     
    <form enctype="multipart/form-data" action="index.php" method="POST">
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        Envoyer ficher base de confirmation : <input name="userfile" type="file" />
        <input type="submit" value="Envoyer &agrave; la base de donnéeacute;e" />
    </form>
    <?php
    	define("FILENAME", $_FILES['userfile']['tmp_name']); //constante: nom du fichier à générer
    	$link = mysql_connect("localhost", "root", "") or die("Impossible de se connecter : ".mysql_error());
    	mysql_select_db("thermikoncept") or die("Impossible de ce connecter &agrave; la base : ".mysql_error());
    	$queryRealAdd = "SELECT * FROM confirmation";
    	require_once 'Excel/reader.php';
     
    	$is = false;
     
    	$reader = new Spreadsheet_Excel_Reader();
    	$reader->setOutputEncoding("UTF-8");
     
    	$reader->read(FILENAME);
     
    	$exist = 0;
     
    	for ($i = 1; $i <= $reader->sheets[0]["numRows"]; $i++)
    	{
    		if ($is)
    		{
    			$cell = $reader->sheets[0]["cells"];
    			echo 	"Nom : ".$cell[$i][1]
    					." Pr&eacute;nom : ".$cell[$i][2]
    					." T&eacute;l&eacute;phone : ".$cell[$i][3]
    					." Adresse : ".$cell[$i][4]
    					." Compl&eacute;ment d\'adresse : ".$cell[$i][5]
    					." Ville : ".$cell[$i][6]
    					." Date : ".$cell[$i][7]
    					." Heure : ".$cell[$i][8].
    					"</br>";
    			//$select = 'SELECT * FROM confirmation WHERE (nom = \''.$cell[$i][1].'\') AND (prenom = \''.$cell[$i][2].'\') AND (adresse = \''.$cell[$i][4].'\')';
    			//$result_select = mysql_query($select) or die (mysql_error());
    			$result_select = mysql_query("SELECT * FROM confirmation WHERE nom = '".addslashes($cell[$i][1])."' AND prenom = '".addslashes($cell[$i][2])."' AND adresse = '".addslashes($cell[$i][4])."'") or die("wesh");
    			$total = mysql_num_rows($result_select);
    			//echo mysql_num_rows($result_select);
    			//echo $select;
    			echo $result_select;
    			//echo $total;
    			if ($total == 0)
    			{
    				$empty = "";
    				$inconnu = "inconnu";
    				$result_insert = mysql_query("INSERT INTO confirmation VALUES(	'".$empty."',
    																				'".$cell[$i][1]."',
    																				'".$cell[$i][2]."',
    																				'".$cell[$i][3]."',
    																				'".$cell[$i][4]."',
    																				'".$cell[$i][5]."',
    																				'".$cell[$i][6]."',
    																				'".$cell[$i][7]."',
    																				'".$cell[$i][8]."',
    																				'".$cell[$i][9]."',
    																				'".$inconnu."' ");
    			}
    			else
    				$exist++;
    		}
    		else
    			if ($reader->sheets[0]["cells"][$i][1] == "nom")
    				$is = true;
    		echo "\n";
    	}
    	echo "il existait ".$exist." &eacute;l&eacute;ment d&eacute;j&agrave; pr&eacute;sent dans la base de donn&eacute;e.";
    	mysql_close($link);
    ?>
    Merci à vous si vous trouvez une erreur dans mon code qui solverais mon problème.
    PS : Je n'y connais rien en prog Web je suis un habitué du C++. J'était en train de chercher le mode DEBUG .

  2. #2
    Membre confirmé Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    Salut,
    si tu penses que ton soucis vient de ta requête d'insertion, tu devrais faire un echo de ta requête pour voir. Un petit echo mysql_error() peut être pas mal aussi.
    P.S: dans ta requête de test d'existence, comme tu ne nécessites que le nombre de résultats, tu devrais juste faire un SELECT sur les clés et non sur tous les champs de ta table. Ce sera moins gourmand...

  3. #3
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    En effet je n'est pas donnée cette information donc lorsque je fais dans un for :
    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
     
    $insert = "INSERT INTO confirmation VALUES(	'".$empty."',
    '".$cell[$i][1]."',
    '".$cell[$i][2]."',
    '".$cell[$i][3]."',
    '".$cell[$i][4]."',
    '".$cell[$i][5]."',
    '".$cell[$i][6]."',
    '".$cell[$i][7]."',
    '".$cell[$i][8]."',
    '".$cell[$i][9]."',
    '".$inconnu."' ";
    				echo $insert."<br/>";
    				$result_insert = mysql_query($insert);
    				echo mysql_error()."<br/>";
    J'ai en out :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Nom : Nom1 Prénom : Prenom1 Téléphone : Phone1 Adresse : Adres1 Complément d\'adresse : cpt1 Ville : code_ville Date : date_rdv Heure : heure_rdv
    INSERT INTO confirmation VALUES( '', 'nom1', 'prenom1', 'phone1', 'Adres1', 'cpt1', 'code_ville', 'date_rdv, 'heure', '', 'inconnu'
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 11
    Nom : Nom2 Prénom : Prenom2 Téléphone : Phone2 Adresse : Adres2 Complément d\'adresse : cpt2 Ville : code_ville Date : date_rdv Heure : heure_rdv
    INSERT INTO confirmation VALUES( '', 'nom2', 'prenom2', 'phone2', 'Adres2', 'cpt2', 'code_ville', 'date_rdv, 'heure', '', 'inconnu'
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 11
    Voilà en gros on ne sait pas grand chose.
    Merci à vous

    PS0 : nom1, prenom1, ... ce sont des valeurs exemples : 'DUPOND', 'Marc', '0102030405', '1234 rue de paix', '94000 Paris', '12/12/12', '05:42', '', 'inconnu' je n'allais quand même pas donnée les coordonnées des personnes.
    PS1 : J'ai remplacé le SELECT

  4. #4
    Membre confirmé Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    modulo une faute de copié/collé, il te manque une simple-quotte fermante sur l'item date_rdv. C'est d'ailleur ce qu'il t'indique dans son message d'erreur... Tu le vois aussi avec la coloration syntaxique du bloc code de ton message...

  5. #5
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    L'erreur d'oubli de quotte est présent que dans le "out" que j'ai fais à la main et copier coller.
    Alors que dans ma requête je n'est pas fait cette erreur :
    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
     
    $insert = "INSERT INTO confirmation VALUES(	'".$empty."',
    '".$cell[$i][1]."',
    '".$cell[$i][2]."',
    '".$cell[$i][3]."',
    '".$cell[$i][4]."',
    '".$cell[$i][5]."',
    '".$cell[$i][6]."',
    '".$cell[$i][7]."',
    '".$cell[$i][8]."',
    '".$cell[$i][9]."',
    '".$inconnu."' ";
     
    echo $insert."<br/>";
    $result_insert = mysql_query($insert);
    echo mysql_error()."<br/>";

  6. #6
    Membre confirmé Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    la parenthèse de fermeture de ton bloc VALUE aussi ?

  7. #7
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    Merci à force de toucher ma requête dans tous les sens lors que la conception j'ai viré le ')' en effet j'avais besoin d'un nouveau regarde je l'aurais jamais vu

  8. #8
    Membre confirmé Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Par défaut
    de rien, il ne te manque plus qu'un petit tag résolu et hop...

  9. #9
    Membre éclairé Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Par défaut
    c'est bon

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

Discussions similaires

  1. Demande d'aide sur mon code
    Par b.soufiane dans le forum C++
    Réponses: 6
    Dernier message: 07/12/2007, 16h36
  2. petit probleme sur mon code
    Par MORPHEUS50 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/05/2007, 18h16
  3. Besoin de votre avis svp sur mon site www.monwebcv.com
    Par italiasky dans le forum Mon site
    Réponses: 14
    Dernier message: 19/03/2007, 11h57
  4. [FFT] Votre avis sur mon code
    Par deubelte dans le forum C++
    Réponses: 1
    Dernier message: 10/02/2007, 20h14
  5. Doute sur mon code, découpage de texte
    Par goblin dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2006, 20h26

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