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 :

Créer une Insertion dynamique


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut Créer une Insertion dynamique
    Bonjour à tous,
    Il y a peu, je devait modifier les champs d'une table, sans savoir a l'avance combien de champs contenait cette table, j'avais posté, mais au final, personne n'avait pu m'aider, et j'avais trouvé la solution moi même... j'avais fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //Tant qu'il y a des champs, on fait
    for($a=$colonneDepart+1; $a<$nombreTotalColonnes; $a++){
     
                      $updateSQL = "UPDATE $tableChoisie SET $nomDeColonne = '$value' WHERE $idTable='$idDemandee'";
                     mysql_select_db($database_maintenance, $maintenance);
                     $Result = mysql_query($updateSQL, $maintenance) or die(mysql_error());
    				}
    ce qui donnait pour effet qu'on mettait a jour chaque champs, dans une requette séparée...

    ici, je voudrais inserer un nouvel enregistrement, sans savoir a l'avance combien de champs il y aura dans la table... (Ceci afin de travailler n'importe quelle table que l'on pourrait ajouter...)
    Malheureusement, je patauge sévère...
    Bref, l'un d'entre vous aurait une idée à me suggérer???

    merci d'avance à tous...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut
    Ce que tu peux faire c'est faire une fonction qui prend le nom de la table en paramétreset un tableau contenant tous les champs. Attention les champs doivent etre dnas le bonne ordre. Ensuite tu parcours ton tableau et tu formes ta requete. Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function insert($table, $champ)
    {
         $requete="INSERT INTO $table VALUES(";
         foreach($champ as $val)
         {
              $requete .="'$val',";
         }
         $requete = substr($requete, 0, $strlen($requete)-1);//On enleve le ; de trop 
         $requete .=")";
         mysql_select_db($database_maintenance, $maintenance);
         $Result = mysql_query($updateSQL, $maintenance) or die(mysql_error());
     
    }

  3. #3
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Salut!

    Oui...j'ai été devancé! t'as été plus vite que moi Psymon ;-)

    ou un truc dans le genre :
    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
     
    <?php
    /**
    *
    */
    function insertTable($table_name,$Tvalue){
    	foreach ($Tvalue as $key => $value){
    		$cols .= $key.",";
    		$values .= "'".$value."',";
    	}
    	$cols = substr_replace($cols, '', -1, 1);
    	$values = substr_replace($values, '', -1, 1);
    	$sql = "INSERT INTO {$table_name} ({$cols}) VALUES ({$values})";
    	echo $sql;
    }
     
    insertTable("matable",array("col1"=>"val1","col2"=>"val2","col3"=>"val3","col4"=>"val4"));
    ?>
    ++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut
    Devancé possible mais ton code est meilleur ^^
    Juste une question : Comment marche substr_replace?

  5. #5
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Merci mais c juste de la courtoisie ;-)

    Je ne peux pas être plus explicite que la doc de php pour expliquer la fonction substr_replace

    ++

Discussions similaires

  1. [VBA/VB] créer une page dynamiquement dans un WebBrowser
    Par SilkyRoad dans le forum Contribuez
    Réponses: 3
    Dernier message: 13/03/2013, 22h24
  2. créer une méthode dynamique delphi
    Par ougueye dans le forum Delphi
    Réponses: 4
    Dernier message: 09/04/2007, 14h33
  3. [reports] comment créer une requete dynamiquement
    Par lifeisgood dans le forum Reports
    Réponses: 4
    Dernier message: 31/01/2007, 12h15
  4. [Tableaux] Créer une ligne dynamiquement
    Par Lenaick dans le forum Langage
    Réponses: 11
    Dernier message: 24/01/2007, 10h58
  5. [WebForms]créer une formulaire dynamiquement
    Par lamiae18 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 16/01/2007, 18h43

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