SQL - ACCESS

flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 11 janv. 2006 à 17:51
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 12 janv. 2006 à 14:38
Bonjour, j'ai le code suivant, comment est ce que je peux l'adapter pour une basse access et non SQL...??

<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";
//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;
$req = mysql_query("SELECT * FROM $Annuaire"); // on sélectionne les enregistrements
$res = mysql_numrows($req); // on compte le nombre de résultats

$file = ("contacts.xls"); // le fichier doit déjà exister
if(!$myfile = fopen($file, "w")) //on ouvre le fichier
{
print("'$filename' n'existe pas!\n");
exit;
}

WHILE($res!=$i) // 5. chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{ //on récupère les champs
$Societe = mysql_result($req,$i,"societe");
$Activite = mysql_result($req,$i,"activite");
$Localisation = mysql_result($req,$i,"localisation");

//ecriture
fputs($myfile,"$Societe\t $Activite\t $Localisation\n"); //une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne

$i++; // on ajoute un au compteur et on retourne à WHILE
}

?>

Merci d'avance!!

11 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
11 janv. 2006 à 21:18
Salut,

Les base de données ACCESS (c) sont généralement connues sous le nom de ODBC.

Il va donc falloir que tu remplace tous les 'mysql_' par des 'odbc_'... entre autres !

Je te laisse aller voir ici :
http://fr.php.net/manual/fr/ref.uodbc.php

A+
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
12 janv. 2006 à 08:25
Merci beaucoup pour l'info, j'ai modifié mon code et j'ai l'erreur suivante :

Wrong parameter count for odbc_result()........

MON CODE :
<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;
$i = "abcdefghijkl" ;
$requete = "SELECT * FROM $Annuaire" ; // on sélectionne les enregistrements
$req = odbc_do($cnx, $requete);
$res = odbc_num_rows($req); // on compte le nombre de résultats

$file = ("..\Annu\Annuaire.xls"); // le fichier doit déjà exister
if(!$myfile = fopen($file, "w")) //on ouvre le fichier
{
print("'$file' n'existe pas!\n");
exit;
}

WHILE($res!=$i) // 5. chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{ //on récupère les champs
$Nom = odbc_result($req,$i,"Nom");
$Societe = odbc_result($req,$i,"Societe");
$Service = odbc_result($req,$i,"Service");
$Fixe = odbc_result($req,$i,"Fixe");
$Fixe_abrege = odbc_result($req,$i,"Fixe_abrege");
$Fax = odbc_result($req,$i,"Fax");
$Portable = odbc_result($req,$i,"Portable");
$Abrege_fp = odbc_result($req,$i,"Abrege_fp");
$Mail = odbc_result($req,$i,"Mail");


//ecriture
fputs($myfile,"$Nom\t $Societe\t $Service\t $Fixe\t $Fixe_abrege\t $Fax\t $Portable\t $Abrege_fp\t $Mail\n"); //une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne

$i++; // on ajoute un au compteur et on retourne à WHILE
}

?>

Merci encore!!
0
cs_kairel Messages postés 6 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 12 janvier 2006
12 janv. 2006 à 08:49
Salut

Je vais pas t aider enormement mais au cas ou tu utilisises php5 il y a
maintenant une couche d abstraction sur les bases de données que tu
peux peut etre utiliser ,car que tu attaques sql, access ou n importe
quelle base de données la syntaxe reste la meme , il y a juste un
script de conf a mofifier c est tout
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
12 janv. 2006 à 09:00
Apparemment, cette erreur voudrait dire que je n'indique pas assez de paramètres... où trop...??? lors des requetes odbc_result....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 09:17
Hello,

je n'ai jamais utilisé ces fonctions, mais moi, sur la doc, pour odbc_result(), je vois 2 paramètres demandés, pas 3.
http://fr2.php.net/manual/fr/function.odbc-result.php
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
12 janv. 2006 à 09:33
Oui j'étais en train de modifier les paramètres que j'ai pour cette fonction...
Donc maintenant, j'ai :
<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;


$requete = "SELECT * FROM $Annuaire" ; // on sélectionne les enregistrements
$req = odbc_do($cnx, $requete);
$res = odbc_num_rows($req); // on compte le nombre de résultats

$file = ("..\Annu\Annuaire.xls"); // le fichier doit déjà exister
if(!$file = fopen($file, "w")) //on ouvre le fichier
{
print("'$file' n'existe pas!\n");
exit;
}
$i = "0" ;
WHILE($res!=$i) // chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{ //on récupère les champs
$Nom = odbc_fetch_row($req,"Nom");
$Societe = odbc_fetch_row($req,"Societe");
$Service = odbc_fetch_row($req,"Service");
$Fixe = odbc_fetch_row($req,"Fixe");
$Fixe_abrege = odbc_fetch_row($req,"Fixe_abrege");
$Fax = odbc_fetch_row($req,"Fax");
$Portable = odbc_fetch_row($req,"Portable");
$Abrege_fp = odbc_fetch_row($req,"Abrege_fp");
$Mail = odbc_fetch_row($req,"Mail");


//ecriture
fputs($file,"$Nom\t $Societe\t $Service\t $Fixe\t $Fixe_abrege\t $Fax\t $Portable\t $Abrege_fp\t $Mail\n"); //une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne

$i++; // on ajoute un au compteur et on retourne à WHILE
}

?>
Ce me donne 'fatal error : maximum execution of 30 seconds exceeded.... on line 38 (ligne du i++).
J'ai du définir ma variable $i, je lui ai donc donné la valeur 0 , j'ai peut etre fait une boulette, je comprends pas pourquoi ca ne fonctionne pas.....

Merci!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 janv. 2006 à 09:36
essaye plutôt avec $i = 0;
tu veux un entier, pas une chaîne.
Et tu incrémentes un entier avec $i ++; pas une chaîne.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 janv. 2006 à 13:29
"$i = "0" ;
WHILE($res!=$i) // chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{ //on récupère les champs
$Nom = odbc_fetch_row($req,"Nom");
$Societe = odbc_fetch_row($req,"Societe");
$Service = odbc_fetch_row($req,"Service");
$Fixe = odbc_fetch_row($req,"Fixe");
$Fixe_abrege = odbc_fetch_row($req,"Fixe_abrege");
$Fax = odbc_fetch_row($req,"Fax");
$Portable = odbc_fetch_row($req,"Portable");
$Abrege_fp = odbc_fetch_row($req,"Abrege_fp");
$Mail = odbc_fetch_row($req,"Mail");


//ecriture
fputs($file,"$Nom\t
$Societe\t $Service\t $Fixe\t $Fixe_abrege\t $Fax\t $Portable\t
$Abrege_fp\t $Mail\n"); //une tabulation \t pour changer de colonne
et un retour chariot \n pour changer de ligne

$i++; // on ajoute un au compteur et on retourne à WHILE
}

?>"

$i = 0;
while ( $i < $res ) {
//}
Ou alors :
for ( $i = 0; $i < $res ; $i++) { // }

Mais je ne comprend pas pourquoi tu ne fais pas :
while ( odbc_fetch_row($req) ) {
$var = odbc_result($req, 'var');
//etc...
}

Enfin bon ...
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
12 janv. 2006 à 13:35
J'ai fait ceci :
<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;


$requete = "SELECT * FROM $Annuaire" ; // on sélectionne les enregistrements
$req = odbc_do($cnx, $requete);
$res = odbc_num_rows($req); // on compte le nombre de résultats

$file = ("..\Annu\Annuaire.xls"); // le fichier doit déjà exister
if(!$file = fopen($file, "w")) //on ouvre le fichier
{
print("'$file' n'existe pas!\n");
exit;
}

while ( odbc_fetch_row($req) ) { // chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{ //on récupère les champs
$Nom = odbc_result($req,"Nom");
$Societe = odbc_result($req,"Societe");
$Service = odbc_result($req,"Service");
$Fixe = odbc_result($req,"Fixe");
$Fixe_abrege = odbc_result($req,"Fixe_abrege");
$Fax = odbc_result($req,"Fax");
$Portable = odbc_result($req,"Portable");
$Abrege_fp = odbc_result($req,"Abrege_fp");
$Mail = odbc_result($req,"Mail");


//ecriture
fputs($file,"$Nom\t $Societe\t $Service\t $Fixe\t $Fixe_abrege\t $Fax\t $Portable\t $Abrege_fp\t $Mail\n"); //une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne


}

?>

Ca me sort l'erreur suivante : Parse error : syntax error, unexpected $end in... on line 40
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
12 janv. 2006 à 13:48
Mille excuses!!!! Je suis encore plus mauvais que ce que je pensais, j'ai oublié une } à la fin......

Merci pour tout!!
Par contre, comment peut on faire pour que lorsque l'utilisateur clique sur le bouton qui lance ce script, cela propose de télécharger le fichier ou alors que ca affiche un lien de téléchargement en bas de page...??
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 janv. 2006 à 14:38
"while ( odbc_fetch_row($req) ) { // chaque fois que "$res" est dif. de "$i", donc qu'il y a un enreg.

{" Non tu as mis une accolade de trop surtout !
0
Rejoignez-nous