Jump to content
  • 0

Php Assistant / Jeu De Cases À Cocher


Question

Bonjour,

J'ai utilisé PHP assistant pour créer une page web de formulaire, qui contient une rubrique avec des cases à cocher (checkbox).

Le problème que j'ai est que ces cases à cocher apparaissent les unes à la suite des autres, sur une même ligne, alors que je voudrais qu'il y ait une case (et donc un choix) par ligne.

Le code généré est:

<td class="field_data">

<?php $fieldName = 'Int_Method';?>

<?php $fieldValue = $record->getField('Int_Method', 0) ; ?>

<?php getInputChoices("checkbox", $layout-> getValueListTwoFields('Plan_Int_Method_Guill',

(isset($master_record)) ? $master_record->getRecordId() : $record->getRecordId()),

$fieldValue, getFieldFormName($fieldName, 0, $record, true, 'CHECKBOX', 'text'),'text', $submitDateOrder);?>

</td>

La question que je me pose est donc : où mettre un \n ou \r ou autre chose pour qu'on ait une case à cocher par ligne ?

Merci beaucoup pour votre aide.

P.

Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Tu es en html, donc les \n et autres \r ne marchent pas (ils sont remplacés par un espace)

Si tu veux sauter une ligne, utilise <br />

Et si ton formulaire est destiné à de l'internet (et pas uniquement à de l'intranet ou de l'extranet), je te suggère TRES FORTEMENT d'apprendre le html (ou mieux, le xhtml). En 1/2 journée, tu peux en avoir vu l'essentiel.

Yvan

Link to post
Share on other sites
  • 0

Bonjour Yvan,

Merci pour ta réponse. C'est vrai que je connais peu le html, mais j'avais essayé de placer des <br/> entre les blocs de php, et le seul effet était que toute la ligne des cases à cocher était une ligne plus bas (voir capture d'écran ci-jointe)... Mais toujours pas de retour à la ligne pour chaque case à cocher...

Ces cases à cocher ont l'air générées par le code <?php getInputChoices("checkbox", ...?>, c'est pour ça que je pensais essayer de créer un retour à la ligne là-dedans.

Toutes les réponses sont bienvenues!

Merci,

Philippe

2011-06-02_124232.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

post-8911-0-69911100-1307011538.jpg

Link to post
Share on other sites
  • 0

Est-ce que tu pourrais envoyer le code source de la page ?

(dans une balise code, ou au pire envoie un fichier zippé : certains forums n'apprécient pas beaucoup de se faire envoyer du code html)

Yvan

Link to post
Share on other sites
  • 0

Voilà le code de toute la page. Généré en grande partie automatiquement par PHP Site Assistant...

Je dois juste faire cette modification pour avoir mes checkbox sur plusieurs lignes, et je serai heureux !

Comment faire?

Merci

<!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 = 'PHI_Diff';    $layoutName = 'PLA_Plan';    $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);	$Int_Methods = $layout->getField(Int_Method)->getValueList();    // 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();?><html>    <head>        <meta http-equiv="content-type" content="text/html; charset=utf-8">        <title>            Bienvenue        </title>        <link rel="stylesheet" type="text/css" media="screen" href="oceani.css">    </head>    <body>        <div id="header">            <!-- EN-TETE -->            <div id="headerlogo">                Operational Interface                <div id="headercaption">                    <!--Caption for the Company-->                </div>            </div>        </div>        <div id="content">            <!--Menu Navigation-->            <?php include_once 'navigation.php'; ?><!-- Corps de la page -->            <table cellpadding="0" cellspacing="0" class="contentbg">                <tr>                    <td class="contentbgleft">                    </td>                    <td class="contentmidrecords">                        <div id="contenttitlebg">                            <h1>                                Enter your delivery address                            </h1>                        </div>                        <table class="curvedbg">                            <tr>                                <td>                                </td>                            </tr>                        </table>                        <div class="scrolladd">                            <table cellpadding="1" cellspacing="0" class="recwidth">                                <tr>                                    <td valign="top">                                        <form method="post" action="browserecord.php">                                            <div>                                                <?php $dbName = "PHI_Diff";?><?php $layName = "PLA_Plan";?><input type="hidden" name="-db" value=                                                "<?php echo htmlentities($dbName,ENT_NOQUOTES,'UTF-8',false);?>"> <input type="hidden" name="-lay" value=                                                "<?php echo htmlentities($layName,ENT_NOQUOTES,'UTF-8',false);?>"> <input type="hidden" name="-action" value="new">                                            </div>                                            <table cellpadding="1" cellspacing="6" class="record">                                                <!-- Afficher les valeurs de la rubrique d'enregistrement -->                                            <tr class="field">                                                    <td class="field_name">                                                        <?php echo str_replace(' ', '  ',htmlentities('Int_Method',ENT_NOQUOTES,'UTF-8',false));?>                                                    </td>                                                <td class="field_data">                                                        <?php $fieldName = 'Int_Method';?>							<?php $fieldValue =          $record->getField('Int_Method', 0) ; ?>						        <?php getInputChoices("checkbox", 														$layout-> getValueListTwoFields('Plan_Int_Method_Guill', 														(isset($master_record)) ? $master_record->getRecordId() : $record->getRecordId()),														$fieldValue, getFieldFormName($fieldName, 0, $record, true, 'CHECKBOX', 'text'),														'text', $submitDateOrder);?>                                                    </td>                                                </tr>                                               											<tr class="field">                                                    <td class="field_name">                                                        <?php echo str_replace(' ', '  ',htmlentities('Comments',ENT_NOQUOTES,'UTF-8',false));?>                                                    </td>                                                    <td class="field_data" >                                                        <?php $fieldName = 'Int_Method_Comments';?><?php $fieldValue =          $record->getField('Int_Method_Comments', 0) ; ?><input                                                         class="fieldinput" type="text" size="30" name=                                                        "<?php echo getFieldFormName($fieldName, 0, $record, true, 'EDITTEXT', 'text');?>" value="<?php echo $fieldValue;?>">                                                     </td>                                                </tr>						<tr class="field">                                                    <td class="field_name">                                                        <?php echo str_replace(' ', '  ',htmlentities('Period',ENT_NOQUOTES,'UTF-8',false));?>                                                    </td>                                                    <td class="field_data" >                                                        <?php $fieldName = 'Int_Period';?><?php $fieldValue =          $record->getField('Int_Period', 0) ; ?><input                                                         class="fieldinput" type="text" size="30" name=                                                        "<?php echo getFieldFormName($fieldName, 0, $record, true, 'EDITTEXT', 'text');?>" value="<?php echo $fieldValue;?>">                                                     </td>                                                </tr></tr><tr></tr><tr></tr>                                     		<!--Afficher les commandes du formulaire d'enregistrement-->                                                <tr class="field">                                                    <td class="field_name">							                                                     </td>                                                    <td class="field_data">							<input type="submit" class="buttons" name="-new" value="Submit"> <input type="reset" class="buttons"                                                        name="Reset" value="Reset"> <input type="button" class="buttons" onclick="window.location='home.php'" name="Cancel"                                                        value="Cancel">                                                     </td>                                                </tr>                                            </table>                                        </form>                                    </td>                                </tr>                            </table>                        </div>                    </td>                    <td class="contentbgright">                                             </td>                </tr>                <tr>                    <td class="contentbgfooterleft">                                             </td>                    <td class="contentfooter">                                             </td>                    <td class="contentbgfotterright">                                             </td>                </tr>            </table>        </div>        <!-- Pied de page -->        <table class="footerwidth" cellspacing="0" cellpadding="0">            <tr>                <td>                    <?php include_once 'footer.php' ?>                </td>            </tr>        </table>    </body></html>
Link to post
Share on other sites
  • 0

Bonjour Yvan,

Il me semble que tout y est, entre autres tout le code html...

Quelqu'un aurait-il une idée pour ce saut de ligne à insérer (où?) dans le php, même une petite ?..

Merci d'avance,

Philippe

Link to post
Share on other sites
  • 0

A priori, getInputChoices ne fait pas parti de la bibliothèque standard de l'API PHP (ou alors, je l'ai ratée). C'est une fonction générée par l'assistant.

Je ne peux pas vérifier, car j'ai qques soucis pour installer FMS sur un win2008 (pour un client).

Je vois deux solutions possibles :

- modifier le code après l'appel de la fonction, avec un str_replace ou assimilé (pour insérer les <br /> au bon endroit). Pour cela, j'ai besoin du code généré par le php. Autrement dit, le code source de la page HTML sans PHP, tel qu'il apparait dans la page "source" du navigateur (ctrl-u sur Firefox). J'étais parti sur cette solution car les renseignements me paraissaient plus simples à obtenir.

- modifier le code source de la fonction getInputChoices. Dans ce cas, j'ai besoin du code de la fonction elle-même.

Yvan

Link to post
Share on other sites
  • 0

Bonjour Ivan,

Voilà le code de la fonction getInputChoices. Tu as raison, je pense que c'est là qu'un retour à la ligne doit être mis. Mais où?

Merci, à plus tard,

Philippe

function getInputChoices($type, $valuelist, $fieldvalue, $fieldName, $fieldType, $submitDateOrder) {	// formats des dates et heures	$displayDateFormat = '%d/%m/%Y';	$displayTimeFormat = '%H:%M:%S';	$displayDateTimeFormat = '%d/%m/%Y %H:%M:%S';	$submitDateOrder = 'mdy';	$selected = "";	$fieldValueArray = explode(" ", str_replace("\n"," ", $fieldvalue));	foreach ($valuelist as $eachvalue => $storedValue) {				$temp = $storedValue;			if ($fieldType == "date"){				$temp =  displayDate($temp, $displayDateFormat);				$eachvalue =  displayDate($eachvalue, $displayDateFormat);			}elseif($fieldType == "time"){				$temp =  displayTime($temp, $displayTimeFormat);				$eachvalue =  displayTime($eachvalue, $displayTimeFormat);			}elseif($fieldType == "timestamp"){				$temp =  displayTimeStamp($temp, $displayDateTimeFormat);				$eachvalue =  displayTimeStamp($eachvalue, $displayDateTimeFormat);			}		$storedValueArray = explode(" ", str_replace("\n"," ", $temp));		if (sizeof(array_intersect($storedValueArray, $fieldValueArray)) === sizeof($storedValueArray) ){			$selected = " checked";		}else{			$selected = "";		}		$encodedEachValue = htmlentities($eachvalue,ENT_NOQUOTES,'UTF-8',false);		$encodedStoredValue = htmlentities($storedValue,ENT_NOQUOTES,'UTF-8',false);		if ($type == "checkbox"){			echo "<input type='$type' name='$fieldName" . "[]'" . "value=$encodedStoredValue $selected>$encodedEachValue";		}else{			echo "<input type='$type' name='$fieldName' value=$encodedStoredValue $selected>$encodedEachValue";		}	}}
Link to post
Share on other sites
  • 0

A priori, à la fin des lignes suivantes :

        		if ($type == "checkbox"){               		echo "<input type='$type' name='$fieldName" . "[]'" . "value=$encodedStoredValue $selected>$encodedEachValue<br />";            	}else{                    	echo "<input type='$type' name='$fieldName' value=$encodedStoredValue $selected>$encodedEachValue<br />";            	}

Yvan

Link to post
Share on other sites
  • 0

Super! ça marche!

J'ai modifié un petit peu ton code qui faisait planter le site, j'ai juste simplifié pour avoir au final:

		if ($type == "checkbox"){				echo "<input type='$type' name='$fieldName" . "[]'" . "value=$encodedStoredValue $selected>$encodedEachValue <br />";			}else{				echo "<input type='$type' name='$fieldName' value=$encodedStoredValue $selected>$encodedEachValue <br />";				}

Et le résultat est en pièce jointe.

Merci beaucoup pour ton aide, tu m'as vraiment rendu un grand service. Et sans doute sauvé une belle partie de mon week-end ;-)

Bon week-end à toi,

Philippe

PS: Si tu es disponible pour des questions subsidiaires, dis-moi. Mais je ne voudrais pas abuser...

2011-06-03_123021.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

post-8911-0-33345000-1307097066.jpg

Link to post
Share on other sites
  • 0

Bonsoir,

Voilà ma question subsidiaire...

Comme tu as pu le constater sur ma capture d'écran, les intitulés des cases à cocher sont entre guillemets... Pourquoi? Parce qu'au début je n'avais pas mis de guillemets, l'intitulé apparaissait bien dans le formulaire, mais dans la page de confirmation (et dans la base d'ailleurs) il ne restait que le premier mot de chaque phrase ("To" ou "Made" ou "Other"...). Tout ce qu'il y avait à partir du premier espace disparaissait.

J'ai donc utilisé un patch (les guillemets) en trafiquant (en dupliquant, en fait, une fois avec, une fois sans guillemets) ma rubrique dans Filemaker. Mais ça a fini par me rattraper dans mes pages web d'éditing...

Comment faire pour que les intitulés de mes cases à cocher soient pris dans leur intégralité, et non tronqués au premier espace ?

Merci encore,

Philippe

Link to post
Share on other sites
  • 0

J'aurais bien une idée, qui consisterai à virer getInputChoices et de faire le boulot à la main (j'allais dire "proprement"), mais tu risques de ne pas aimer...

Sur ce coup, j'aurai VRAIMENT besoin du code html de la page (celui que tu as avec "voir le source" sous Firefox ou IE)

Yvan

Link to post
Share on other sites
  • 0

Bonjour Yvan,

Je sors à l'instant de plusieurs heures de recherche sur un bug qui faisait que je ne pouvais pas modifier mes enregistrements (page Edit)...

Voilà le code source de la page addplan.php (comme tu le verras j'ai pour l'instant mis des _ entre les mots des intitulés de mes checkbox pour qu'ils passent en totalité).

Si tu as un idée de la modification à faire dans cette page (ou dans getInputChoices() ?) pour que l'ensemble de l'intitulé de mes checkbox soit enregistré, dis-moi.

Merci!

Philippe

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>    <head>        <meta http-equiv="content-type" content="text/html; charset=utf-8">        <title>        </title>        <link rel="stylesheet" type="text/css" media="screen" href="oceani.css">    </head>    <body>        <div id="header">            <!-- EN-TETE -->            <div id="headerlogo">                Operational Interface                <div id="headercaption">                    <!--Caption for the Company-->                </div>            </div>        </div>        <div id="content">            <!--Menu Navigation--><div id="page_nav" >    <ul>		        		<li><a href="logout.php?-link=Déconnexion"><b>Log out</b></a></li>		        		<li><a href="home.php?-link=Accueil"><b>Home</b></a></li>		        		<li class="activelink"><a href="addplan.php?-link=Ajouter plan"><b>Create your plan</b></a></li>		        		<li><a href="view.php?-link=Voir le plan"><b>View your plan</b></a></li>		        		<li><a href="recordlist.php?-max=100&-skip=0&-link=Liste des enregistrements"><b>Your plans</b></a></li>		        		<li><a href="addconfirm.php?-link=Ajouter confirmation"><b>Final Confirmation</b></a></li>    </ul></div><!-- Corps de la page -->            <table cellpadding="0" cellspacing="0" class="contentbg">                <tr>                    <td class="contentbgleft">                    </td>                    <td class="contentmidrecords">                        <div id="contenttitlebg">                            <h1>                                Enter your delivery address                            </h1>                        </div>                        <table class="curvedbg">                            <tr>                                <td>                                </td>                            </tr>                        </table>                        <div class="scrolladd">                            <table cellpadding="1" cellspacing="0" class="recwidth">                                <tr>                                    <td valign="top">                                        <form method="post" action="browserecord.php">                                            <div>                                                <input type="hidden" name="-db" value=                                                "PHI_Diff"> <input type="hidden" name="-lay" value=                                                "PLA_Plan"> <input type="hidden" name="-action" value="new">                                            </div>                                            <table cellpadding="1" cellspacing="6" class="record">                                                <!-- Afficher les valeurs de la rubrique d'enregistrement -->                                            <tr class="field">                                                    <td class="field_name">                                                        Method  of  distribution                                                    </td>                                                <td class="field_data">                                                        																												<input type='checkbox' name='0[]'value=To_employees_personal_address >To_employees_personal_address <br /><input type='checkbox' name='0[]'value=To_employees_letterbox_at_work >To_employees_letterbox_at_work <br /><input type='checkbox' name='0[]'value=Made_available_at_work_(in_common_areas) >Made_available_at_work_(in_common_areas) <br /><input type='checkbox' name='0[]'value=On_the_occasion_of_an_internal_event_(specify_below) >On_the_occasion_of_an_internal_event_(specify_below) <br /><input type='checkbox' name='0[]'value=Other_(specify_below) >Other_(specify_below) <br />                                                </td>                                                </tr>                                               											<tr class="field">                                                    <td class="field_name">                                                        Comments                                                    </td>                                                    <td class="field_data" >                                                        <input                                                         class="fieldinput" type="text" size="30" name=                                                        "1" value="">                                                     </td>                                                </tr>						<tr class="field">                                                    <td class="field_name">                                                        Period                                                    </td>                                                    <td class="field_data" >                                                        <input                                                         class="fieldinput" type="text" size="30" name=                                                        "2" value="">                                                     </td>                                                </tr></tr><tr></tr><tr></tr>                                     		<!--Afficher les commandes du formulaire d'enregistrement-->                                                <tr class="field">                                                    <td class="field_name">							                                                     </td>                                                    <td class="field_data">							<input type="submit" class="buttons" name="-new" value="Submit"> <input type="reset" class="buttons"                                                        name="Reset" value="Reset"> <input type="button" class="buttons" onclick="window.location='home.php'" name="Cancel"                                                        value="Cancel">                                                     </td>                                                </tr>                                            </table>                                        </form>                                    </td>                                </tr>                            </table>                        </div>                    </td>                    <td class="contentbgright">                                             </td>                </tr>                <tr>                    <td class="contentbgfooterleft">                                             </td>                    <td class="contentfooter">                                             </td>                    <td class="contentbgfotterright">                                             </td>                </tr>            </table>        </div>        <!-- Pied de page -->        <table class="footerwidth" cellspacing="0" cellpadding="0">            <tr>                <td>                    <div id="footer" ><div id="footertext" ><br>    <ul class="secondary_links">        <li> | </li><li> <a href="logout.php?-link=Déconnexion"><b>Log out</b></a>  | </li><li> <a href="home.php?-link=Accueil"><b>Home</b></a>  | </li><li> <a href="addaddress.php?-link=Ajouter adresse"><b>Your delivery address</b></a>  | </li><li> <a href="addpackage.php?-link=Ajouter enregistrement"><b>Add a package</b></a>  | </li><li> <a href="recordlist.php?-max=100&-skip=0&-link=Liste des enregistrements"><b>Your packages</b></a>  | </li><li> <a href="addconfirm.php?-link=Ajouter confirmation"><b>Final Confirmation</b></a>  | </li><li> <a href="mailto:contact@operational.com"><b>Contact</b></a>  | </li>    </ul></div> </div>                </td>            </tr>        </table>    </body></html>
Link to post
Share on other sites
  • 0

Il y avait un truc qui me paraissait bizarre, et effectivement, c'est bizarre (la propriété name a une valeur... peu orthodoxe).

proposition, utilisation la fonction str_replace :

if ($type == "checkbox"){	echo "<input type='$type' name='$fieldName" . "[]'" . "value=$encodedStoredValue $selected>".str_replace('_', ' ', $encodedEachValue)."<br />";}else{	echo "<input type='$type' name='$fieldName' value=$encodedStoredValue $selected>".str_replace('_', ' ', $encodedEachValue)."<br />";}

Tu peux remplacer le caractère souligné _ par ce que tu veux (même par une apostrophe, mais il y a une petite astuce à mettre en place), à condition bien sûr de mettre le même caractère dans ton champ dans FM.

Yvan

Link to post
Share on other sites
  • 0

ça marche ! super Yvan, merci beaucoup !

Bon fin de week-end, maintenant je devrais me débrouiller (sauf souci inattendu dans la finalisation, ce qui doit toujours être considéré comme une option...)

Philippe

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...