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 :

Fonction générique 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
    fey
    fey est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Par défaut Fonction générique d'insertion
    bonjour,

    je voulais faire une fonction general qui me permettais de spécifier le nom de la table + les champs a inserer grace a des variables php mais en fait je me craque quelque part (function inserercode)

    voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	//Execution d'une requete
    	function execQuery($query) {
    		$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); ;
    		if (!$result) { header("Location:erreur_sql.html"); }
    		return $result;
    	}
    	function inserercode($nomtable,$champsinserer){
    		$this -> execQuery("INSERT INTO ".$nomtable." VALUES('".$champsinserer."')");
    	}
    et la les declarations des variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $nomtable="article";
    $champsinserer=$code.','.$categorie.','$nom','$quantite;
    $db->inserercode($nomtable,$champsinserer);
    donc la c'est $champsinserer qui fonctionne pas.
    je crois que je me suis plante au niveau des ""

    si quelqu'un peut me dire comment corriger ce probleme ?

    merci
    fey

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    C'est chaque valeur textuelle qui doit être encadrée par des apostrophes (simple quotes).
    Donc, si je suppose que code et quantite sont numériques, tandis que categorie et nom sont textuels, ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $champsinserer="$code, '$categorie', '$nom', $quantite";
    ...
    $this -> execQuery("INSERT INTO ".$nomtable." VALUES(".$champsinserer.")") ;
    Par ailleurs, tu peux alléger l'écriture de cette dernière ligne en utilisant l'interpolation de chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this -> execQuery("INSERT INTO $nomtable VALUES($champsinserer)") ;

  3. #3
    fey
    fey est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Par défaut
    en fait les champs numerique c'est categorie et quantite ^^
    donc j'ai mis des cotes a code(cela commence par du texte + un nimero a la fin)

    mais ca marche pas, il ne m'enregistre pas en base, sachant que quand je passe chaque champs au lieu de les concatener et donc que dans ma fonction quand je rentre les champs a la main dans ma fonction sql ca passe.

    donc il doit y avoir un truc qui foire dans mon $champsinserer

  4. #4
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    Essaie un peu ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $champsinserer=$code.','.$categorie.',\'$nom\','$quantite;

  5. #5
    fey
    fey est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Par défaut
    marche pas non plus

  6. #6
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    houps pardon, essaye ceci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $champsinserer="$code,$categorie,\'$nom\',$quantite";

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Citation Envoyé par fey Voir le message
    en fait les champs numerique c'est categorie et quantite ^^
    Donc normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $champsinserer = "'$code', $categorie, '$nom', $quantite" ;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->execQuery("INSERT INTO $nomtable VALUES($champsinserer)");

  8. #8
    Membre expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Par défaut
    il faut que tu affiches ta requête avant de l'exécutée
    ainsi on pourra voir où est le soucis...

    je ne pense pas qu'il vienne du php, mais plutôt au niveau requête elle-même

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

Discussions similaires

  1. [AJAX] [vos avis] fonction "générique" pour les requetes
    Par gorgonite dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/07/2007, 19h40
  2. fonction générique pour get set et change
    Par tretsois dans le forum C++
    Réponses: 9
    Dernier message: 18/02/2007, 18h28
  3. [VB.Net] fonctions génériques pour le new
    Par ohcysp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/09/2006, 11h47
  4. Fonctions génériques et listes
    Par DevloNewb' dans le forum C++
    Réponses: 6
    Dernier message: 13/01/2006, 14h47
  5. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04

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