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 :

PHP/ODBC : fonction ODBC_COLUMN


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut PHP/ODBC : fonction ODBC_COLUMN
    Bonjour,
    j'aimerais faire la copie d'une base de données Access vers une base de données MySql mais je n'arrive pas à utiliser la fonction : ODBC_COLUMN

    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
     
    // Chaîne utilisée pour la connection ODBC sans DSN
    $connectionString = sprintf("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=%s;SystemDB=%s", $cheminDeMaBase,$cheminSecurite);
    // Connexion à la base Access
    $cnx_basicq = odbc_connect($connectionString, "dbadmin", "");
    // Connexion MySql
    $sql_cnx=mysql_connect("localhost", "root", "") ;	
    //Création de la base de données MySql			
    $bdd_sql = "export_access";	
    mysql_query("CREATE DATABASE $bdd_sql",$sql_cnx);
    //Connexion à la base de données Mysql
    mysql_select_db($bdd_sql);
     
    //partie qui ne fonctionne pas
    $column_info=odbc_columns($cnx_basicq,"%","","une_table","%") ;
    while (odbc_fetch_row($column_info)) {
                echo odbc_result_all($column_info);
            }
        } 
    }
    odbc_result_all($column_info) ne renvoi rien.

    Pourtant c'est quasiment un copie collé d'un code que j'ai trouvé sur http://fr2.php.net/manual/fr/function.odbc-columns.php

    J'ai essayé longtemps mais vraiment je ne vois pas :/

    Merci de votre aide

  2. #2
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 153
    Points
    153
    Par défaut
    si ca peu aider, j ai fait un script pour faire l'import mais d'une base interbase vers mysql

    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > 
    <head> 
     
    <title>base de donnée</title> 
    <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
    <link rel="icon" type="image/gif" href="images/favicon.gif" /> 
    <link href="style.css" rel="stylesheet" type="text/css"> 
    </head> 
     
    <body> 
    <?php
    header("Cache-Control: no-cache");
    include ("tblnote.php");
    #######################################################
    #           SCRIPT DE CONVERSION DE BDD               #
    #               INTERBASE -> MYSQL                    #
    #             le 19/05/2008 par Gérald GAIGA                  #
     
    #######################################################
    #FONCTIONS
     
    function TypeChamp ($champ,$taille) {
        switch ($champ) {
         case 7:
         return array('SMALLINT',$taille);
         break;
         case 8:
         return array('INT',$taille);
         break;
         case 16:
         return array('BIGINT',$taille);
         break;
         case 10:
         return array('FLOAT','');
         break;
         case 11:
         //return 'D_Float';
         return 'erreur';
         break;
         case 27:
         return array('DOUBLE','');
         break;
         case 9:
         //return 'Quad';
         return 'erreur';
         break;
         case 14:
         return array('CHAR',$taille);
         break;
         case 37:
         return array('VARCHAR',$taille);
         break;
         case 40:
         //return 'CString';
         return 'erreur';
         break;
         case 13:
         return array('TIME','');
         break;
         case 12:
         return array('DATE','');
         break;
         case 35:
         return array('TIMESTAMP','');
         break;
         case 261:
         return array('BLOB','');
         break;
        }
    }
    #FIN FONCTIONS
    #PARAMETRES
    //C'est ici que vous devez entrer les paramètres de connexions aux BDD InterBase et MySQL
    //Assurez-vous d'avoir un serveur InterBase (ex: Firebird) et MySQL (ex: EasyPHP, WAMP) en activité.
    //PARAMETRES INTERBASE
     
      $hote = 'SIC'; //nom du dsn
      $utilisateur = 'SYSDBA'; //User par défaut
      $passe ='syscreas'; //Pass par défaut
      $bdd_interbase = odbc_connect($hote, $utilisateur, $passe, 'IscDbc'); //Connexion
    //PARAMETRES MYSQL
      $hote_mysql = 'localhost';
      $utilisateur_mysql = 'admin';
      $passe_mysql = '123456';
      $nom_mysql = 'test'; //Nom de la BDD MySQL
      mysql_query('DROP DATABASE test');
     mysql_query( 'CREATE DATABASE test');
     
      $bdd_mysql = mysql_connect($hote_mysql,$utilisateur_mysql,$passe_mysql);
      mysql_select_db($nom_mysql,$bdd_mysql);
     
    #FIN PARAMETRES
    //ON PARCOURT LA BDD INTERBASE
     
     
      //ON PARCOURT LA BDD INTERBASE
      $requete = 'SELECT DISTINCT rdb$relation_name FROM rdb$relation_fields
    WHERE rdb$view_context IS NULL
    ';
      $resultat = odbc_do($bdd_interbase, $requete);
     
     
    $result = odbc_columns($bdd_interbase, $hote, "","", "%");
     
     
      //Récupérer le noms des champs
      //Initialisation
    $k=0;
    //Connection
    while ($ligne = odbc_fetch_array($resultat)) {
    $result = odbc_columns($bdd_interbase, $hote, "", "%");
    }
    //Récupération du nom des colonnes
    while (odbc_fetch_array($result)) {
     
      $tablechamp[$k]= odbc_result($result,"COLUMN_NAME");
     
     
      echo ($tablechamp[k]);
      $k++;
     
    }
     
     
     
     
     
      //Boucle
      $i=0;
      while ($ligne = odbc_fetch_array($resultat)) {
     
        foreach ($ligne AS $table) {
     
        $req_struc_table = 'SELECT *
                            FROM rdb$relations rel
                              JOIN rdb$relation_fields rel_field
                                ON rel_field.rdb$relation_name = rel.rdb$relation_name
                              JOIN rdb$fields field
                                ON rel_field.rdb$field_source = field.rdb$field_name
                            WHERE rel.rdb$relation_name = \''.$table.'\'
                            ORDER BY rel_field.rdb$field_position, rel_field.rdb$field_name';
           $res_struc_table = odbc_do($bdd_interbase,$req_struc_table);
       //initialisation
     
           //Construction de la requête de création de la table
     
     
     
     
           $req_create_table = "CREATE TABLE `".trim($table)."` (";
     
           while ($tab_struc_table = odbc_fetch_array($res_struc_table) ) {
     
             $struct_champ = TypeChamp($tab_struc_table['RDB$FIELD_TYPE'],$tab_struc_table['RDB$FIELD_LENGTH']);
             if ($prem) {
                $req_create_table .= " , ";
             } else { $prem = 1; }
    echo($tablechamp[$i]);
             $req_create_table .= "`".trim($tablechamp[$i])."` ".$struct_champ[0];
             if ($struct_champ[1]) {
                $req_create_table .= "(".$struct_champ[1].")";
             }
             if ($tab_struc_table['RDB$NULL_FLAG'] == 0) {
                $req_create_table .= " NULL";
             } else {
                $req_create_table .= " NOT NULL";
     
             }
    $i++;
    }
     
     
           $req_create_table .= ") ENGINE = MyISAM";
     
           unset($prem);
           mysql_query($req_create_table) or die ("Impossible de créer la table : ".mysql_error()."<br>Requete : ".$req_create_table);
     
           odbc_free_result($res_struc_table);
           $requete2 = 'SELECT * FROM '.$table; //On récupère les champs de la table et leurs valeurs
           $resultat2 = odbc_do($bdd_interbase, $requete2);
           while ($ligne2 = odbc_fetch_array($resultat2)) {
              //Construction de la requête d'insertion des données
              $req_insert = "INSERT INTO `".trim($table)."` SET ";
              foreach ($ligne2 AS $champ => $valeur) {
                if ($prem) {
                   $req_insert .= " , ";
                } else { $prem = 1; }
                #Correction des valeurs texte
                $valeur = str_replace("\'","'",$valeur);
                $valeur = utf8_decode($valeur);
                $req_insert .= "`".$champ."`='".addslashes($valeur)."'";
              }
              unset($prem);
              mysql_query($req_insert) or die ("Insertion impossible : ".mysql_error()."<br>Requete : ".$req_insert);
     
          }
        }
      }
      odbc_free_result($resultat);
      execute();
      odbc_close($bdd_interbase);
    ?>
     
    </body> 
    </html>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Je vois pas comment tu défini les clés primaire dans ton code?

  4. #4
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 153
    Points
    153
    Par défaut
    c'est normal ça ne les définit pas mais tu peux soit améliorer le script selon tes besoins soit rajouter les clefs primaires dans phpmyadmin

Discussions similaires

  1. [ODBC] Fonction Replace en ODBC
    Par Alexandre T dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2007, 11h02
  2. [PHP-JS] passage d'une variable php à une fonction javascript
    Par pimpmyride dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/04/2006, 16h17
  3. [FTP] php serveur fonction copy
    Par Silvia12 dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2006, 18h23
  4. [PHP-JS] fonction .innerHTML="" + PHP
    Par sigmar_avenger dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/01/2006, 12h20
  5. [XSLT] [PHP 5] fonction position()
    Par sharper dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/12/2005, 12h58

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