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 :

Accès à une base Access avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut Accès à une base Access avec PHP
    voici j'essaye de faire une connection a une base Access via PHP

    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
    <?php
    // Sélection du driver et de la base de données
     
    $DSNLess='DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=C:\wamp\www\Administrateur\donnees.mdb';
     
    // Connexion au DSN nouvellement créé
     
    $cnx=@odbc_connect($DSNLess,'','');
     
    if(!$cnx)
    {
    // Si erreur de connexion
    echo "Impossible de se connecter";
    }
     
    $id = $_GET["ident"];
     
    $sql = "SELECT * FROM ParcelNet WHERE ident = ".$id;
     
    $requete = odbc_do($cnx,$sql);
     
    $valeur = odbc_exec($cnx,$requete);
     
    $count = 0;
    echo'<table border="1"><tbody>
         <tr>';
    for ($j=1; $j<odbc_num_fields($valeur)+1;$j++)
    {
    	echo '<td align="center"><strong>'.odbc_field_name($result,$j).'</strong></td>';
    	$count++;
    }
    echo'</tr>';
    $resultnumber = 0;
    while(odbc_fetch_row($result))
    {
    	echo '<tr>';
    	for ($i = 1; $i<$count+1;$i++)
    	{
    		if(odbc_result($result,$i))
    			$data = odbc_result($result,$i);
    		else
    			$data = "-";
    		echo '<td align="center">'.$data."</td>";
    	}
    	echo '</tr>';
    	$resultnumber ++;
    }
     
    echo'</tbody></table>';
     
    odbc_close ($cnx);
     
    ?>
    ce code me fournis des erreurs :

    Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'ident = AB 1'., SQL state 37000 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 20

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access]Utilisation non valide de pointeur null , SQL state S1009 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 22

    Warning: odbc_num_fields(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 27

    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 34
    cela viendrais t il de ma création de DSN?
    car je veux pouvoir créer un DSN automatiquement sans que l'utilisateur ai besoin de le faire

    merci d'avance de votre aide

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    a priori ton $id n'est pas un chiffre mais une chaine de char.
    Il faut donc la mettre entre guillemets dans ta requete.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    ça m'affiche toujour la même erreur

    j'ai corrigé ça comme ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM ParcelNet WHERE ident = $id";

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    En fait c'est plutot comme cela que je le voyais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM ParcelNet WHERE ident = '$id'";
    [/QUOTE]
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    merci la premiere erreur c'est enlever
    maintenant il reste celle ci :

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus., SQL state 37000 in SQLExecDirect in C:\wamp\www\Administrateur\requete.php on line 22
    je vois pas du tout pourquoi ma requete serait non valide?

  6. #6
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Je ne connais rien a ODBC mais a priori c'est ou odbc_do ou odbc_exec et pas en s'enchainant
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    ouai j'ai vu mon erreur
    c'était une erreur de frappe d'ailleur
    j'executeai deux fois ma requete

    allez plus que 2 erreurs (en attendant les erreurs d'execution ^^ )

    Warning: odbc_num_fields(): supplied argument is not a valid ODBC result resource in C:\wamp\www\AdministrateurP\requete.php on line 26


    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in C:\wamp\www\Administrateur\requete.php on line 33

  8. #8
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    va voir la doc pour comprendre mais je pense que tu ne lui donne pas le bon parametre (ressource de l'execution de la requete)
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    bon je poste ma correction

    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
    <?php
    // Sélection du driver et de la base de données
     
    $DSNLess='DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=C:\wamp\www\Administrateur\donnees.mdb';
     
    // Connexion au DSN nouvellement créé
     
    $cnx=odbc_connect($DSNLess,'','');
     
    if(!$cnx)
    {
    // Si erreur de connexion
    echo "Impossible de se connecter";
    }
     
    $id = $_GET["ident"];
     
    $sql = "SELECT * FROM ParcelNet WHERE ident = '$id'";
     
    $valeur = odbc_exec($cnx,$sql);
    $result = odbc_do ($cnx,$sql);
     
    $count = 0;
    echo'<table border="1"><tbody>
         <tr>';
    for ($j=1; $j<odbc_num_fields($valeur)+1;$j++)
    {
    	echo '<td align="center"><strong>'.odbc_field_name($result,$j).'</strong></td>';
    	$count++;
    }
    echo'</tr>';
    $resultnumber = 0;
    while(odbc_fetch_row($result))
    {
    	echo '<tr>';
    	for ($i = 1; $i<$count+1;$i++)
    	{
    		if(odbc_result($result,$i))
    			$data = odbc_result($result,$i);
    		else
    			$data = "-";
    		echo '<td align="center">'.$data."</td>";
    	}
    	echo '</tr>';
    	$resultnumber ++;
    }
     
    echo'</tbody></table>';
     
    odbc_close ($cnx);
     
    ?>

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    bon apres reflection
    j'ai un petit problème
    donc je voudrais faire une requete SQL du type :

    SELECT NOM_VILLE FROM VILLE WHERE ID = '$id'

    vu que le nom de la ville et l'id apparait plusieur fois il m'indique plusieur fois le nom de la ville comment faire pour le faire apparaitre qu'une seul fois?

    j'ai rechangé la méthode de connection a la base et de consultation mais maintenant pour une ville il m'affiche qu'un seul nom de commune (je voudrais qu'il me les affiche toutes )

    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
    $base="C:\wamp\www\Administrateur\donnees.mdb"; 
    $table="ParcelNet"; 
    $id = $_GET["ident"];
    if (!$conn = new COM("ADODB.Connection"))                        // Declaration Objet 
         exit("impossible de créer la connection ADODB<br />"); 
     
    $conn->open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$base");     // ouverture du fichier 
     
    $requete = "SELECT * FROM $table WHERE ident = '$id'";     // Selectionne une table 
    $resultat = $conn->execute($requete);     // execute la requete 
     
    $col2 = $resultat->Fields(1); 
    $col3 = $resultat->Fields(2);
    $col4 = $resultat->Fields(4);
    $col10 = $resultat->Fields(10);
    $col13 = $resultat->Fields(13);
    echo "<table>"; 
     echo "<tr>"; 
     echo "<td>$col2->value </td>"; 
     echo "</tr>"; 
     echo "<tr>";
     echo "<td>$col3->value </td>"; 
     echo "</tr>"; 
      echo "<tr>";
     echo "<td>$col4->value </td>"; 
     echo "</tr>";
      echo "<tr>";
     echo "<td>$col10->value </td>"; 
     echo "</tr>";
      echo "<tr>";
     echo "<td>$col13->value </td>"; 
     echo "</tr>";
    echo "</table>"; 
    $resultat->Close();                        // ferme la requete 
    $conn->Close();
    je suis novice dans le PHP/SGBD

    a la fin je voudrais :une page du style
    VILLE : LYON
    POPULATION : ....
    COMMUNE : ...., ...., ....

    merci d'avance pour votre aide

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Oman

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut presque c'est le meme sujet
    salut
    S'il vous plait, je suis entrain de creer un site web dinamyque en PHP mais je veux que ma base soit en Access et installer sur mon ordinateur de telle facon que lorsque les etudiants font leur inscription en ligne les donnees serons envoyer sur mon ordinateur. est ce que c'est possible? et merci d'avance

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/04/2006, 23h19
  2. [MFC] Accès à une base access sur le net
    Par LapinGarou dans le forum MFC
    Réponses: 4
    Dernier message: 21/03/2006, 12h11
  3. Comment compacter une base Access avec ADO ?
    Par langela94 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/12/2005, 16h24
  4. Créer une base Access avec Delphi
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/10/2005, 16h55
  5. Modification d'une base Access avec MySQL
    Par Wyatt dans le forum Administration
    Réponses: 2
    Dernier message: 07/01/2005, 19h20

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