Jump to content
  • 0

Php Avec Filemaker


Question

Bonjour tout le monde,

Est ce que quelqu'un peut me dire comment je peux traduire ce bout de code en php5 pour qu'il marche avec une une base de donnée filemaker?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><?php	/**	* FileMaker PHP Site Assistant Generated File	*/	require_once 'fmview.php';	require_once 'FileMaker.php';	require_once 'error.php';	$cgi = new CGI();	$cgi->storeFile();	$databaseName ='FMServer_Sample';	$layoutName = 'Client';	$userName = $cgi->get('userName');	$passWord =$cgi->get('passWord');	$fm = & new FileMaker();	$fm->setProperty('database', $databaseName);	$fm->setProperty('username', $userName);	$fm->setProperty('password', $passWord);	ExitOnError($fm);	$layout = $fm->getLayout($layoutName);	ExitOnError($layout);	// formats des dates et heures	$displayDateFormat = '%d/%m/%Y';	$displayTimeFormat = '%H:%M:%S';	$displayDateTimeFormat = '%d/%m/%Y %H:%M:%S';	$submitDateOrder = 'mdy';	class EmptyRecord {		function getRelatedSet($relationName) {			return array(new EmptyRecord());		}		function getField($field, $repetition = 0) {		}		function getRecordId() {		}	}	$record = new EmptyRecord();	$sqlpseudo=mysql_query("SELECT * FROM client WHERE Email='$_POST[Email]' AND MDP='$_POST[MDP]'") or die(mysql_error());$numpseudo=mysql_num_rows($sqlpseudo);if($numpseudo==0){echo("Mauvais pseudo ou mot de passe");}else{$respseudo=mysql_fetch_array($sqlpseudo);$_SESSION['Email']=$respseudo['Email'];$_SESSION['Id']=$respseudo['Id'];?> <script language="javascript">parent.window.location.href="index_fati.php";</script> <?}   include("pied.php");?>

il affiche un Fatal error: Call to undefined function mysql_query() in C:\Inetpub\wwwroot\Mon site\connection.php on line 49

une idée SVP?

Merci

Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Bonjour,

tout d'abord, il faut savoir que le code PHP4 est compatible avec PHP5, donc, à mon avis, là n'est pas la question.

Fatal error: Call to undefined function mysql_query() in C:\Inetpub\wwwroot\Mon site\connection.php on line 49

La fonction "mysql_query" est bien une fonction existante dans PHP4 et PHP5 mais celà suppose que votre serveur web (Apache, IIS ...) ait chargé l'extension MySQL et que cette extension soit déjà installée au préalable, bien entendu.

Si la question est de traduire la partie de code PHP interrogeant la base MySQL en code PHP interrogeant la base FileMaker,

( la question est plutôt mal posée ;) )

Celà pourrait ressembler à celà (à insérer à la place de la partie relative à MySQL) :

$Request =& $fm->newFindCommand("Layout_users");$Request->addFindCriterion("Email", '="'.$_POST['Email'].'"');$Request->addFindCriterion("Password", '="'.$_POST['MDP'].'"');$Result = $Request->execute();$num_error = "";if( isset($Result->code) ) {	$num_error = $Result->code;	}if( Filemaker::isError($Result) && $num_error != '401' ) {	// Erreur de requête FileMaker, à gérer ...} else if( $num_error == '401' ) {	// Cas de l'erreur FileMaker qui n'en est pas une : Aucun enregistrement ne correspond à cette requête	$foundcount = 0;} else {	if( get_class($Result) == "FileMaker_Record" ) {		$foundcount = 1;		$Record 	= $Result;		unset($Result);	} else {		$foundcount = $Result->getFoundSetCount();	}}if( $foundcount == 1 ) {	// Authentification OK	$_SESSION['Email'] 	= $Record->getField("Email");	$_SESSION['Id'] 	= $Record->getField("Id");	// ... suite du code ...} else {	// Authentification erronée ...}

Ici, le code considère que :

- "Layout_users" est le nom du modèle FileMaker à interroger où figure les rubriques "Email", "Password" et "Id"

- La base FileMaker est correctement paramétrée

- La connexion via PHP a été initialisé avec succès

- "$_POST['Email']" et "$_POST['MDP']" supposent que vous avez envoyé ces 2 informations via un formulaire en method POST

- "$_SESSION['Email']" et "$_SESSION['Id']" supposent que vous avez initialisé une session php ("session_start()") avec succès

De mémoire, je crois que FM Studio permet de générer du code PHP pour gérer un système d'authentification via les données d'une base FileMaker

et non via le système de comptes FileMaker (vu à la FM Conf 2009).

Mais c'est tellement plus drôle de le programmer soi-même :D (et plus instructif !)

Link to post
Share on other sites
  • 0

Je confirme les dires de Sebastien, en ajoutant une précision.

FMP n'utilise absolument pas la logique SQL. Donc, dès que tu vois du "mysql_query", "mysql_trucmuche" ou assimilé, il faut réécrire.

Cela nécessite un peu de connaissance de l'API PHP/FMP, mais surtout de bonnes bases de PHP "pur" (équivalent à une semaine de stage, donc pas non plus la mer à boire)

Yvan

Link to post
Share on other sites
  • 0

Bonjour à tous,

Merci beaucoup pour vos réponses.

De mémoire, je crois que FM Studio permet de générer du code PHP pour gérer un système d'authentification via les données d'une base FileMaker

et non via le système de comptes FileMaker (vu à la FM Conf 2009).

Pourriez vous m'expliquer comment je peux utiliser ce système d'authentification pour permettre aux internautes de créer des comptes utilisateurs sur mon site pour pouvoir réserver des billets en ligne?

Merci

Link to post
Share on other sites
  • 0
Pourriez vous m'expliquer comment je peux utiliser ce système d'authentification pour permettre aux internautes de créer des comptes utilisateurs sur mon site pour pouvoir réserver des billets en ligne?

FM Studio, cité plus haut, est une extension payante pour Adobe Dreamweaver (lui aussi payant).

Link to post
Share on other sites
  • 0

Bonjour,

J'ai la version 8 de Dreamweaver . Pourriez vous me dire où je peux acheter cette extension (FM Studio)? un site où je peux l'acheter.

Merci beaucoup

Link to post
Share on other sites
  • 0

Merci beaucoup Olivier pour le lien.

Peux tu me dire quels sont les avantages d'utiliser FMStudio par rapport à filemaker site assistant?

Link to post
Share on other sites
  • 0

Bonjour à tous,

J'ai utilisé le php site assistant pour créer un site de billetterie et je veux utiliser FMstudio pour compléter le site(gérer le formulaire d'authentification, ajouter d'autres modules....etc).

Mais avant d'acheter cette extension je veux savoir si ce que j'ai fait avec le php site assistant est compatible avec ce qu'il propose FMStudio?

une idée SVP?

Link to post
Share on other sites
  • 0

Je crains que les deux s'emmêlent les pinceaux. Ceci dit, je n'ai pas particulièrement d'expérience avec FmStudio... mais il me semble que les 2 "assistants" ne gérant et n'écrivant pas le code de la même manière, il risque fort d'y avoir embrouille !

Link to post
Share on other sites
  • 0

Merci beaucoup Olivier

De mémoire, je crois que FM Studio permet de générer du code PHP pour gérer un système d'authentification via les données d'une base FileMaker

et non via le système de comptes FileMaker (vu à la FM Conf 2009).

Peux-tu me dire comment puis-je utiliser le système d'authentification de FMStudio s'il est pas compatible avec l'assistant php de filemaker, est ce qu'il faut que je refait tous avec fmstudio?

ET aussi je veux savoir si FMstudio est un produit de filemaker ou un concurrent?

Merci pour votre aide

Link to post
Share on other sites
  • 0

Le PHP Site Assistant et FMStudio sont deux produits complètement différents. Le premier est édité par FileMaker, le deuxième par une société tierce, qui n'est pas un concurrent de FileMaker, mais qui n'a tout simplement aucun rapport direct avec eux à part le fait qu'il font plein de produits autour de FileMaker.

Il va de soit que, comme il y a 36 façons d'écrire du code PHP, les 2 systèmes ont forcément des approches différentes. En clair, il y a extrêmement peu de chance que FMStudio puisse reprendre un code généré par le PHP SA.

Quitte à utiliser FMStudio, autant le faire depuis le début et ne pas repartir de fichiers générés par le PHP SA.

Link to post
Share on other sites
  • 0

pardonnez moi mais à la fois ce post m'a bien aidé et en même temps j'y ai passé 2 heures..

à la place de :

if( get_class($Result) == "FileMaker_Record" ) {                $foundcount = 1;                $Record         = $Result;                unset($Result);

ne marchait pas car la classe de $Result était un "FileMaker_Result" et pas un "FileMaker_Record"

je m'en suis sorti comme ça pour l'instant, sachant que c'est faux si nombreEnregTrouvés > 1

(et avec mes noms de rubrique)

$Request =& $fm->newFindCommand("CLT_client_dev");$Request->addFindCriterion("login", '="'.$_GET['ID'].'"');$Request->addFindCriterion("psw", '="'.$_GET['MDP'].'"');$Result = $Request->execute();$num_error = "";if( isset($Result->code) ) {        $num_error = $Result->code;     }if( Filemaker::isError($Result) && $num_error != '401' ) {        // "Erreur de requête FileMaker, à gérer ...";} else if( $num_error == '401' ) {        // "Aucun enregistrement ne correspond à cette requête ";        $foundcount = 0;} else {	    $foundcount = $Result->getFoundSetCount();            $Record = $Result->getFirstRecord();		}if($foundcount == 1 ) {        // Authentification OK      	echo $_SESSION['login'] = $Record->getField('login') ;        echo $_SESSION['__kp'] = $Record->getField("__kp"); } else {        // Authentification erronée ...}

"

Link to post
Share on other sites
  • 0
if( get_class($Result) == "FileMaker_Record" ) {                $foundcount = 1;                $Record 		= $Result;                unset($Result);

Ce n'est effectivement peut être plus vrai actuellement, probablement un reliquat sur un cas particulier d'une ancienne version de l'API PHP pour FileMaker.

Mais ce bout de code n'entrave pas le bon déroulement du script.

Et ce qu'il manquait réellement pour que celà fonctionne, c'est bien cette ligne que vous avez ajouté par vous-même :

$Record = $Result->getFirstRecord();

..., sachant que c'est faux si nombreEnregTrouvés > 1

Ce cas ne devrait pas arriver si votre base FileMaker est bien construite (couple login/mdp unique).

Cependant, étant donné que le script concerne un accès sécurisé, le "au cas où" est toujours à prévoir.

C'est à vous de déterminer si c'est une erreur bloquante ou non selon le contexte d'utilisation.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...