par
HBO » 27 oct. 2005, 16:36
Premier message, premier probléme !
J'essaie en vain de résoudre un probléme dont je ne trouve pas la source.
J'ai une page qui permet de faire du paramétrage d'un site web qui se construit dynamiquement selon si l'on souhaite avoir accès au paramétrage générale ou spécifique.
Dans le cas du paramétrage spécifique j'ai un bouton "Enregistrer" qui enregistre toutes les lignes du tableau ( modifiées ou non ).
La page php est divisé en deux partie : une entête et un corps. Le corp se construit dynamiquement selon le type de paramétrage souhaité ( utilisation d'une fonction php )
Dans ce tableau j'ai environ une trentaine de ligne.
Tout se passe bien pour les "27" premières lignes mais byzarrement à partir de la 28e je n'arrive plus à accéder au donner stocké dans le champ via $_GET.
Je relus mon code plusieurs fois ... J'ai débuggé au maximum en suivant chaque étape mais là je bloque.
Donc avec vous une explication à me proposer.
Voici la page de paramétrage :
<?
// Ouverture d'une session PHP
session_start();
// Inclusion
Include("../../include/global.php");
Include("../../include/varenv.php");
include("../../include/izopen.php");
// Initialisation
Init();
// Lecture des libellés
//echo "BoFirstConn = $BoFirstConn<br>";
If ($BoFirstConn) {
require("../../include/verifconnect.php");
// Lecture des données de l'utilisateur
$pstUser=$HTTP_POST_VARS["TXT_Name"];
$stPasswordMR=$HTTP_POST_VARS["Txt_Password"];
$pstBaseName=$HTTP_POST_VARS["Txt_OracleChaine"];
session_register( "boGoodUser" );
// On appelle la fonction de connection
$boGoodUser = VerifConnect($pstUser, $stPasswordMR, $pstBaseName, $Profile);
If ( $boGoodUser ) {
session_register( "CD_USER" );
session_register( "language" );
session_register( "territory" );
session_register( "date_format" );
session_register( "TypDate" );
session_register( "SORT" );
session_register( "SID" );
session_register( "ColorMiddle" );
session_register( "ColorArround" );
session_register( "ColorOnglet");
session_register( "MailAdmin" );
session_register( "TabParamIZ");
session_register( "TabTypDisplay");
// Lecture des libellés paramétrables
// Si un fichier de paramétrage pour cet utilisateur exist on le charge
// sinon on prend le fichier standard
$filename = "../../include/translate".$pstUser.".Txt";
if (!file_exists( $filename ))
$filename = "../../include/translate.txt";
$fp = fopen( $filename, "r" ) or die("Impossible d'ouvrir $filename");
$delims = "=";
while ( ! feof( $fp ) )
{
$line = fgets( $fp, 1024 );
$word = strtok( $line, $delims );
if(substr($word, 0, 1)!=";"){
// si ce n'est pas un commentaire
switch ($word) {
Case "language" :
$lib = strtok( $delims);
$language = substr($lib, 0, strlen($lib) - 1);
break;
Case "territory" :
$lib = strtok( $delims);
$territory = substr($lib, 0, strlen($lib) - 1);
break;
Case "date_format" :
$lib = strtok( $delims);
$date_format = substr($lib, 0, strlen($lib) - 1);
$st = substr($date_format, 0, 2);
If ($st=='MM')
$TypDate = 1;
Else If ($st=='YY')
$TypDate = 2;
Else If ($st=='DD')
$TypDate = 3;
break;
Case "SORT" :
$lib = strtok( $delims);
$SORT = substr($lib, 0, strlen($lib) - 1);
break;
Case "SID" :
$lib = strtok( $delims);
$SID = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorArround" :
$lib = strtok( $delims);
$ColorArround = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorMiddle" :
$lib = strtok( $delims);
$ColorMiddle = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorOnglet" :
$lib = strtok( $delims);
$ColorOnglet = substr($lib, 0, strlen($lib) - 1);
break;
Case "MailAdmin" :
$lib = strtok( $delims);
$MailAdmin = substr($lib, 0, strlen($lib) - 1);
break;
}
}
}
fclose($fp);
} // Fin si $boGoodUser
//DemarreSession($pstUser, $pstPassword, $pstBaseName);
// Initialisation d'un tableau pour la liste des types d'affichage
$TabTypDisplay[0] = "Filtre EFG";
$TabTypDisplay[1] = "Liste EFG";
$TabTypDisplay[2] = "Masque étendu";
$TabTypDisplay[3] = "Masque suivi";
$TabTypDisplay[10] = "Boutons";
$TabTypDisplay[11] = "Menus";
$TabTypDisplay[12] = "Infozones";
$TabTypDisplay[20] = "Taille";
}
$nuRet = -1;
If ($boGoodUser && $conn = ConnOracle( $stUser, $stPassword, $stBaseName)) {
$Identifiant=get_id($Identifiant, $conn);
// Pour les IZ
$TabParamIZ = ReadParamIZ( $stUser, $stPassword, $stBaseName, $stUserName, $MR, $REGISTER, $BOX, $AUXLINKNAME, $FREEZONE_MR );
if($_GET['INSERT'] == 1)
{
$icpt = $_GET['NBLINE'] - 1;
/* Régénération du tableau de données */
for($i = 1; $i <= $icpt; $i++)
{
if($i != 27)
{
$TabParamSpec[$i][CD_CTRL] =$_GET['CD_CTRL'.$i];
$TabParamSpec[$i][BO_READONLY] = "0";
if(isset($_GET['BO_READONLY'.$i]) == 1)
{
$TabParamSpec[$i][BO_READONLY] = "1";
}
$TabParamSpec[$i][VAL_TYPE] =$_GET['VAL_TYPE'.$i];
$TabParamSpec[$i][CD_INFOZONE] =$_GET['CD_INFOZONE'.$i];
$TabParamSpec[$i][VAL_CONTROLE] = "0";
if(isset($_GET['VAL_CONTROLE'.$i]) == 1)
{
$TabParamSpec[$i][VAL_CONTROLE] = "1";
}
$TabParamSpec[$i][TXT_COMBO] =$_GET['TXT_COMBO'.$i];
}
}
$BoParamSpec = 1;
$nuRet = UpdParamSpec($TabParamSpec,$icpt,$CD_USER,$TYP_DISPLAY);
}
$boOk=1;
}
Else {
//echo " <a color='red' href='../default.php'>Retour à l'identification</a><br><br>";
$boOk=0;
}
?>
<html>
<head>
<title>Gestion du paramétrage Quick DI</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="../js/tools.js"></script>
<script>
function DelParam(CD_MR) {
var elmt = window.event.srcElement;
//IZ.s.name = 'Box'+elmt.name;
//s= 'Box'+elmt.name;
boOk = confirm( "Souhaitez vous supprimer ce paramétrage ?" );
if (boOk) {
// Traitement de suppression confirmé
parent.location = "param.php?BoParamSpec=1";
}
// sinon on ne fait rien ...
}
function InsertIZ(){
boOk = confirm( "Souhaitez vous sauvegarder ce paramétrage ?");
if (boOk)
{
// Traitement d'insertion confirmé
window.document.forms['default1'].elements['INSERT'].value = "1";
window.document.forms['default1'].elements['INFOZONE'].value = window.document.forms['default1'].elements['CD_INFOZONE28'].value;
document.forms['default1'].submit();
}
// sinon on ne fait rien ...
}
</script>
</head>
<body bgcolor="#E1EAFF">
<?
if($nuRet > 0)
{
?>
<script LANGUAGE="JavaScript">
alert("Une erreur est survenue lors de la sauvegarde de votre paramétrage");
</script>
<?
}
?>
<form method="get" name="default1" action="param.php?TYP_DISPLAY=<? print $TYP_DISPLAY;?>&CD_USER=<? print $CD_USER;?>">
<?
If ($boGoodUser) {
?>
<table height="152" border="1" cellpadding="0" cellspacing="0" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<td width="853"> <table border="0" width="100%" cellpadding="0">
<tr>
<td width="9%"> </td>
<!-- comm -->
<?//echo "filtre def = $TabFilter[nuMR]";?>
<td width="18%">Utilisateur :</td>
<? $CD_USER = $stUserName; ?>
<td width="40%"><?print strtoupper($CD_USER);?> </td>
<td width="33%"><a href="../../sql/copyparam.php?Typcopy=0&cancopy=0" title="Recopie du paramétrage standard de CARL">Recopie
paramètrage standard</a></td>
</tr>
<tr>
<td width="9%"> </td>
<td>Masque :
<td>
<?
$TabDisp['0']="Filtre EFG";
$TabDisp['1']="Liste EFG";
$TabDisp['2']="Masque étendu";
$TabDisp['3']="Masque suivi";
$TabDisp['10']="Boutons";
$TabDisp['11']="Menus";
$TabDisp['12']="Infozones";
$TabDisp['20']="Taille";
$TabDisp['29']="Navigation";
?>
<select name="TYP_DISPLAY" >
<?
foreach($TabDisp as $key=>$ValPrior) {
if($ValPrior && $TYP_DISPLAY == $key)
echo "<OPTION value='$key' selected>$ValPrior</OPTION>";
else if($ValPrior)
echo "<OPTION value='$key'>$ValPrior</OPTION>";
}
?>
</select>
<td><a href="../../sql/copyparam.php?cancopy=0&Typcopy=1" title="Recopie du paramétrage de l'utilisateur connecté">Recopie
paramètrage courant</a></td>
</tr>
<tr>
<td><div align="center"> </div></td>
<td width="18%">
<td width="40%">
<td width="33%">
<? if($BoParamSpec == 1)
{
?>
<input name="ACTxSAVE" type="button" title="Enregistrer le paramétrage" value="Enregistrer" onClick="InsertIZ()">
<? } ?>
</tr>
<tr>
<td colspan="3"><div align="center">
<input name="ACTxFILTER" type="submit" title="Lister le paramétrage" value="Rechercher">
</div></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<? if($BoParamSpec != 1)
{
?>
<td><a href="param.php?BoParamSpec=1">Spécifique</a></td>
<?
}
else
{
?>
<td><a href="param.php?BoParamSpec=0">Générique</a></td>
<?
}
?>
<td><a href="../../defparam.php">Quitter</a></td>
</tr>
</table>
<p>
<input type="hidden" name="NbLine" value=<? print $NbLine; ?>>
<input type="hidden" name="stUser" value=<?print $stUser;?>>
<input type="hidden" name="stPassword" value=<?print $stPassword;?>>
<input type="hidden" name="stBaseName" value=<?print $stBaseName;?>>
<input type="hidden" name="ValMaxBox" value=<?print $ValMaxBox;?>>
<input type="hidden" name="boFirstLoad" value=1>
<?
//$TypAction="AppFiltre";
If ($TypAction=="UpdParam") {
UpdParam($CD_USER);
$TypAction="AppFiltre";
}
if($BoParamSpec != null)
{
$TYP_DISPLAY=0;
$TypAction="AppFiltre";
}
//ConnOracle( $stUser, $stPassword, $stBaseName)
If ($TypAction=="AppFiltre" && $conn = ConnOracle( $stUser, $stPassword, $stBaseName)) {
$ValHightTbResult = 500
?>
</p>
<? if($BoParamSpec != 1)
{
?>
<div id="DivTbDiv" style="position:absolute; width:100%; height:300px; z-index:1; visibility:visible; ">
<table width="100%" border="1" cellspacing="0" cellpadding="0" bgcolor="#<?print $ColorMiddle;?>" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<th width="59" align="center" title="Code du champ"> Code </th>
<th width="64" title="Label du champ"> Label </th>
<th width="318" nowrap title="Aide en infobulle"> Infobulle </th>
<th width="77" title="Longueur maxi du champ"> Long</th>
<th width="59" align="right" title="Taille à l'affichage"> <div align="center">Taille
</div></th>
<th width="65" title="Champ obligatoire"> Oblig</th>
<th width="65" title="Champ visible"> Visible </th>
<th width="90" title="Coordonnée abscisse à l'écran"> Abscisse </th>
<th width="90" title="Coordonnée ordonnée à l'écran"> Ordonnée </th>
<th width="90" title="ordre d'affichage à l'écran"> ordre </th>
<th width="100" title="Valeur par défaut"> Défaut </th>
</tr>
<?
// On applique le filtre sur les DI, Fonction définie ds le fichier varenv.php
$NbLine=AppFiltreParam($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
//AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
}
else
{
?>
<input type="hidden" value="0" name="INSERT" id="INSERT">
<input type="hidden" value="0" name="NBLINE" id="NBLINE">
<input type="hidden" value="" name="INFOZONE" id="INFOZONE">
<div id="DivTbDiv" style="position:absolute; width:100%; height:300px; z-index:1; visibility:visible; ">
<table width="100%" border="1" cellspacing="0" cellpadding="0" bgcolor="#<?print $ColorMiddle;?>" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<th width="15%" title="Code du champ"> Code </th>
<th width="15%" title="Label du champ"> Label </th>
<th width="15%" title="Lecture seule"> Lecture seule </th>
<th width="10%" title="Nature du champ"> Nature du champ </th>
<th width="15%" title="Infozone"> Infozone </th>
<th width="10%" title="Contrôle"> Contrôle </th>
<th width="20%" title="Liste de la combo"> Liste de la combo </th>
</tr>
<?
$ccLine=AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
?>
<script>
window.document.forms['default1'].elements['NBLINE'].value = "<? echo $ccLine; ?>";
</script>
<?
}
} //Fin du If AppFiltre
?>
<!-- Fin de table du début -->
</table> </div>
<input type="hidden" name="TypAction" value="<? print $TypAction; ?>">
</div>
<?
} // Fin du si bogoodusqer
Else {
?> <br><br><br><br>
<td rowspan="1"><p align="center">Le serveur ne peut vous identifier. Verifiez votre nom d'utilisateur et votre mot de passe.</p>
<p align='center'>Ou contactez votre <a href="mailto:<?print $MailAdmin;?>">administrateur</a>.<br></p>
<p align='center'><a color='red' href='../../defparam.php'>Retour à l'identification</a>
<?}?>
</form>
</body>
</html>
La fonction appellé pour le corp de la page
<?
Function AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName) {
global $TabRequest, $TabIZ;
Init();
InitIZ();
$stSqlCommand = "SELECT CD_CTRL, TXT_LABEL, BO_READONLY, VAL_TYPE, CD_INFOZONE, VAL_CONTROLE, TXT_COMBO FROM PARAMMRWEB WHERE TYP_DISPLAY = $TYP_DISPLAY AND upper(CD_USER) = upper('$CD_USER') order by VAL_ORDER";
// Connexion à la base
$conn = ConnOracle( $stUser, $stPassword, $stBaseName);
$stmt = OCIParse($conn, $stSqlCommand);
//echo "req = $stSqlCommand";
echo "<br>";
ociexecute($stmt);
$i = 1;
while(OCIFetchInto($stmt, $data))
{
echo "<tr>";
//$ncols = OCINumCols($stmt);
//$cle=OCIResult($stmt,1);
// On va stocker ds un tableau tous les code DI obtenu pour ensuite pouvoir naviguer en mode étendu
echo "<td bgcolor='#999999' color='#FFFFFF'>";
echo $data[0];
echo "<input name='CD_CTRL". $i . "' type='hidden' class='textbox2' id='CD_CTRL". $i . "' value='". $data[0] . "'>";
echo "</td>";
//TXT_QUOTEFIELD
echo "<td bgcolor='#999999' color='#FFFFFF'>";
echo $data[1];
echo "</td>";
//echo "<td><input name='TXT_QUOTEFIELD". $i . "' type='text' class='textbox2' id='TXT_QUOTEFIELD". $i . "' value='".$data[1]."'></td>";
//BO_READONLY
echo "<td>";
if( $data[2] == 1)
{
echo "<input name='BO_READONLY". $i . "' type='checkbox' id='BO_READONLY". $i . "' checked>";
}
else
{
echo "<input name='BO_READONLY". $i . "' type='checkbox' id='BO_READONLY". $i . "'>";
}
echo "</td>";
//VAL_TYPE
echo "<td>";
echo "<select name='VAL_TYPE". $i . "' class='textbox2' id='VAL_TYPE". $i . "' onblur=''>";
// Option n°1
if( $data[3] == '0')
{
echo "<option value='0' selected>Non contrôlé</option>";
}
else
{
echo "<option value='0'>Non contrôlé</option>";
}
// Option n°2
if( $data[3] == '1')
{
echo "<option value='1' selected>Combobox</option>";
}
else
{
echo "<option value='1'>Combobox</option>";
}
// Option n°3
if( $data[3] == '2')
{
echo "<option value='2' selected>Infozone</option>";
}
else
{
echo "<option value='2'>Infozone</option>";
}
echo "</select>";
echo "</td>";
// CD_INFOZONE
echo "<td>";
echo "<select name='CD_INFOZONE". $i . "' class='textbox2' id='CD_INFOZONE". $i . "' onblur=''>";
// Chargement de la combo
foreach($TabIZ as $ValIZ)
{
if($ValIZ && $ValIZ == $data[4])
{
echo "<OPTION value='" . $ValIZ . "' selected>". $ValIZ . "</OPTION>";
}
else if($ValIZ)
{
echo "<OPTION value='" . $ValIZ . "' >" . $ValIZ . "</OPTION>";
}
}
echo "</select>";
echo "</td>";
//VAL_CONTROLE
echo "<td>";
if( $data[5] == 1)
{
echo "<input name='VAL_CONTROLE". $i . "' type='checkbox' id='VAL_CONTROLE". $i . "' checked>";
}
else
{
echo "<input name='VAL_CONTROLE". $i . "' type='checkbox' id='VAL_CONTROLE". $i . "'>";
}
echo "</td>";
//TXT_COMBO
echo "<td><input name='TXT_COMBO". $i . "' type='text' class='textbox2' id='TXT_COMBO". $i . "' value='".$data[5]."' onblur=''></td>";
$i++;
}
OCIFreeStatement($stmt);
OCILogoff($conn);
echo "</table>";
//session_register("TabListMR");
//session_register("TabFilter");
Return $i;
}
?>
La fonction d'enregistrement :
<?
Function UpdParamSpec($TabParamSpec,$icpt,$CD_USER,$TYP_DISPLAY){
global $conn,$LocalHost,$stBaseName,$stUser,$stPassword, $TabParamCentraux, $TabProfile, $stLibel, $TabRequest, $TabTables;
global $SID, $boLocal, $dtDateSearch, $ValDateMin;
// Insertion des données dans la table IZWEB
$conn = ConnOracle( $stUser, $stPassword, $stBaseName);
//return $TabParamSpec[1][TXT_COMBO];
for($i = 1; $i <= $icpt; $i++)
{
//return $TabParamSpec[1][VAL_TYPE];
$stSqlCommand = $TabRequest["Upd_PARAMMRWEB"];
$stSqlCommand = str_replace('pnuBO_READONLY', $TabParamSpec[$i][BO_READONLY], $stSqlCommand);
$stSqlCommand = str_replace('pnuVAL_TYPE', $TabParamSpec[$i][VAL_TYPE], $stSqlCommand);
$stSqlCommand = str_replace('pstCD_INFOZONE', $TabParamSpec[$i][CD_INFOZONE], $stSqlCommand);
$stSqlCommand = str_replace('pnuVAL_CONTROLE', $TabParamSpec[$i][VAL_CONTROLE], $stSqlCommand);
$stSqlCommand = str_replace('pstTABLE_NAME', $TabParamSpec[$i][TABLE_NAME], $stSqlCommand);
$stSqlCommand = str_replace('pstTXT_COMBO', $TabParamSpec[$i][TXT_COMBO], $stSqlCommand);
$stSqlCommand = str_replace('pstCD_CTRL', $TabParamSpec[$i][CD_CTRL], $stSqlCommand);
$stSqlCommand = str_replace('pnuTYP_DISPLAY', $TYP_DISPLAY, $stSqlCommand);
$stSqlCommand = str_replace('pstCD_USER', $CD_USER, $stSqlCommand);
//Return $stSqlCommand;
$stmt = OCIParse($conn, $stSqlCommand);
if (!$stmt)
{
Return 1;
}
if (!ociexecute($stmt))
{
Return 2;
}
OCIFreeStatement($stmt);
}
return 0;
}
?>
Premier message, premier probléme !
J'essaie en vain de résoudre un probléme dont je ne trouve pas la source.
J'ai une page qui permet de faire du paramétrage d'un site web qui se construit dynamiquement selon si l'on souhaite avoir accès au paramétrage générale ou spécifique.
Dans le cas du paramétrage spécifique j'ai un bouton "Enregistrer" qui enregistre toutes les lignes du tableau ( modifiées ou non ).
La page php est divisé en deux partie : une entête et un corps. Le corp se construit dynamiquement selon le type de paramétrage souhaité ( utilisation d'une fonction php )
Dans ce tableau j'ai environ une trentaine de ligne.
Tout se passe bien pour les "27" premières lignes mais byzarrement à partir de la 28e je n'arrive plus à accéder au donner stocké dans le champ via $_GET.
Je relus mon code plusieurs fois ... J'ai débuggé au maximum en suivant chaque étape mais là je bloque.
Donc avec vous une explication à me proposer.
Voici la page de paramétrage :
[php]
<?
// Ouverture d'une session PHP
session_start();
// Inclusion
Include("../../include/global.php");
Include("../../include/varenv.php");
include("../../include/izopen.php");
// Initialisation
Init();
// Lecture des libellés
//echo "BoFirstConn = $BoFirstConn<br>";
If ($BoFirstConn) {
require("../../include/verifconnect.php");
// Lecture des données de l'utilisateur
$pstUser=$HTTP_POST_VARS["TXT_Name"];
$stPasswordMR=$HTTP_POST_VARS["Txt_Password"];
$pstBaseName=$HTTP_POST_VARS["Txt_OracleChaine"];
session_register( "boGoodUser" );
// On appelle la fonction de connection
$boGoodUser = VerifConnect($pstUser, $stPasswordMR, $pstBaseName, $Profile);
If ( $boGoodUser ) {
session_register( "CD_USER" );
session_register( "language" );
session_register( "territory" );
session_register( "date_format" );
session_register( "TypDate" );
session_register( "SORT" );
session_register( "SID" );
session_register( "ColorMiddle" );
session_register( "ColorArround" );
session_register( "ColorOnglet");
session_register( "MailAdmin" );
session_register( "TabParamIZ");
session_register( "TabTypDisplay");
// Lecture des libellés paramétrables
// Si un fichier de paramétrage pour cet utilisateur exist on le charge
// sinon on prend le fichier standard
$filename = "../../include/translate".$pstUser.".Txt";
if (!file_exists( $filename ))
$filename = "../../include/translate.txt";
$fp = fopen( $filename, "r" ) or die("Impossible d'ouvrir $filename");
$delims = "=";
while ( ! feof( $fp ) )
{
$line = fgets( $fp, 1024 );
$word = strtok( $line, $delims );
if(substr($word, 0, 1)!=";"){
// si ce n'est pas un commentaire
switch ($word) {
Case "language" :
$lib = strtok( $delims);
$language = substr($lib, 0, strlen($lib) - 1);
break;
Case "territory" :
$lib = strtok( $delims);
$territory = substr($lib, 0, strlen($lib) - 1);
break;
Case "date_format" :
$lib = strtok( $delims);
$date_format = substr($lib, 0, strlen($lib) - 1);
$st = substr($date_format, 0, 2);
If ($st=='MM')
$TypDate = 1;
Else If ($st=='YY')
$TypDate = 2;
Else If ($st=='DD')
$TypDate = 3;
break;
Case "SORT" :
$lib = strtok( $delims);
$SORT = substr($lib, 0, strlen($lib) - 1);
break;
Case "SID" :
$lib = strtok( $delims);
$SID = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorArround" :
$lib = strtok( $delims);
$ColorArround = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorMiddle" :
$lib = strtok( $delims);
$ColorMiddle = substr($lib, 0, strlen($lib) - 1);
break;
Case "ColorOnglet" :
$lib = strtok( $delims);
$ColorOnglet = substr($lib, 0, strlen($lib) - 1);
break;
Case "MailAdmin" :
$lib = strtok( $delims);
$MailAdmin = substr($lib, 0, strlen($lib) - 1);
break;
}
}
}
fclose($fp);
} // Fin si $boGoodUser
//DemarreSession($pstUser, $pstPassword, $pstBaseName);
// Initialisation d'un tableau pour la liste des types d'affichage
$TabTypDisplay[0] = "Filtre EFG";
$TabTypDisplay[1] = "Liste EFG";
$TabTypDisplay[2] = "Masque étendu";
$TabTypDisplay[3] = "Masque suivi";
$TabTypDisplay[10] = "Boutons";
$TabTypDisplay[11] = "Menus";
$TabTypDisplay[12] = "Infozones";
$TabTypDisplay[20] = "Taille";
}
$nuRet = -1;
If ($boGoodUser && $conn = ConnOracle( $stUser, $stPassword, $stBaseName)) {
$Identifiant=get_id($Identifiant, $conn);
// Pour les IZ
$TabParamIZ = ReadParamIZ( $stUser, $stPassword, $stBaseName, $stUserName, $MR, $REGISTER, $BOX, $AUXLINKNAME, $FREEZONE_MR );
if($_GET['INSERT'] == 1)
{
$icpt = $_GET['NBLINE'] - 1;
/* Régénération du tableau de données */
for($i = 1; $i <= $icpt; $i++)
{
if($i != 27)
{
$TabParamSpec[$i][CD_CTRL] =$_GET['CD_CTRL'.$i];
$TabParamSpec[$i][BO_READONLY] = "0";
if(isset($_GET['BO_READONLY'.$i]) == 1)
{
$TabParamSpec[$i][BO_READONLY] = "1";
}
$TabParamSpec[$i][VAL_TYPE] =$_GET['VAL_TYPE'.$i];
$TabParamSpec[$i][CD_INFOZONE] =$_GET['CD_INFOZONE'.$i];
$TabParamSpec[$i][VAL_CONTROLE] = "0";
if(isset($_GET['VAL_CONTROLE'.$i]) == 1)
{
$TabParamSpec[$i][VAL_CONTROLE] = "1";
}
$TabParamSpec[$i][TXT_COMBO] =$_GET['TXT_COMBO'.$i];
}
}
$BoParamSpec = 1;
$nuRet = UpdParamSpec($TabParamSpec,$icpt,$CD_USER,$TYP_DISPLAY);
}
$boOk=1;
}
Else {
//echo " <a color='red' href='../default.php'>Retour à l'identification</a><br><br>";
$boOk=0;
}
?>
<html>
<head>
<title>Gestion du paramétrage Quick DI</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="../js/tools.js"></script>
<script>
function DelParam(CD_MR) {
var elmt = window.event.srcElement;
//IZ.s.name = 'Box'+elmt.name;
//s= 'Box'+elmt.name;
boOk = confirm( "Souhaitez vous supprimer ce paramétrage ?" );
if (boOk) {
// Traitement de suppression confirmé
parent.location = "param.php?BoParamSpec=1";
}
// sinon on ne fait rien ...
}
function InsertIZ(){
boOk = confirm( "Souhaitez vous sauvegarder ce paramétrage ?");
if (boOk)
{
// Traitement d'insertion confirmé
window.document.forms['default1'].elements['INSERT'].value = "1";
window.document.forms['default1'].elements['INFOZONE'].value = window.document.forms['default1'].elements['CD_INFOZONE28'].value;
document.forms['default1'].submit();
}
// sinon on ne fait rien ...
}
</script>
</head>
<body bgcolor="#E1EAFF">
<?
if($nuRet > 0)
{
?>
<script LANGUAGE="JavaScript">
alert("Une erreur est survenue lors de la sauvegarde de votre paramétrage");
</script>
<?
}
?>
<form method="get" name="default1" action="param.php?TYP_DISPLAY=<? print $TYP_DISPLAY;?>&CD_USER=<? print $CD_USER;?>">
<?
If ($boGoodUser) {
?>
<table height="152" border="1" cellpadding="0" cellspacing="0" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<td width="853"> <table border="0" width="100%" cellpadding="0">
<tr>
<td width="9%"> </td>
<!-- comm -->
<?//echo "filtre def = $TabFilter[nuMR]";?>
<td width="18%">Utilisateur :</td>
<? $CD_USER = $stUserName; ?>
<td width="40%"><?print strtoupper($CD_USER);?> </td>
<td width="33%"><a href="../../sql/copyparam.php?Typcopy=0&cancopy=0" title="Recopie du paramétrage standard de CARL">Recopie
paramètrage standard</a></td>
</tr>
<tr>
<td width="9%"> </td>
<td>Masque :
<td>
<?
$TabDisp['0']="Filtre EFG";
$TabDisp['1']="Liste EFG";
$TabDisp['2']="Masque étendu";
$TabDisp['3']="Masque suivi";
$TabDisp['10']="Boutons";
$TabDisp['11']="Menus";
$TabDisp['12']="Infozones";
$TabDisp['20']="Taille";
$TabDisp['29']="Navigation";
?>
<select name="TYP_DISPLAY" >
<?
foreach($TabDisp as $key=>$ValPrior) {
if($ValPrior && $TYP_DISPLAY == $key)
echo "<OPTION value='$key' selected>$ValPrior</OPTION>";
else if($ValPrior)
echo "<OPTION value='$key'>$ValPrior</OPTION>";
}
?>
</select>
<td><a href="../../sql/copyparam.php?cancopy=0&Typcopy=1" title="Recopie du paramétrage de l'utilisateur connecté">Recopie
paramètrage courant</a></td>
</tr>
<tr>
<td><div align="center"> </div></td>
<td width="18%">
<td width="40%">
<td width="33%">
<? if($BoParamSpec == 1)
{
?>
<input name="ACTxSAVE" type="button" title="Enregistrer le paramétrage" value="Enregistrer" onClick="InsertIZ()">
<? } ?>
</tr>
<tr>
<td colspan="3"><div align="center">
<input name="ACTxFILTER" type="submit" title="Lister le paramétrage" value="Rechercher">
</div></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<? if($BoParamSpec != 1)
{
?>
<td><a href="param.php?BoParamSpec=1">Spécifique</a></td>
<?
}
else
{
?>
<td><a href="param.php?BoParamSpec=0">Générique</a></td>
<?
}
?>
<td><a href="../../defparam.php">Quitter</a></td>
</tr>
</table>
<p>
<input type="hidden" name="NbLine" value=<? print $NbLine; ?>>
<input type="hidden" name="stUser" value=<?print $stUser;?>>
<input type="hidden" name="stPassword" value=<?print $stPassword;?>>
<input type="hidden" name="stBaseName" value=<?print $stBaseName;?>>
<input type="hidden" name="ValMaxBox" value=<?print $ValMaxBox;?>>
<input type="hidden" name="boFirstLoad" value=1>
<?
//$TypAction="AppFiltre";
If ($TypAction=="UpdParam") {
UpdParam($CD_USER);
$TypAction="AppFiltre";
}
if($BoParamSpec != null)
{
$TYP_DISPLAY=0;
$TypAction="AppFiltre";
}
//ConnOracle( $stUser, $stPassword, $stBaseName)
If ($TypAction=="AppFiltre" && $conn = ConnOracle( $stUser, $stPassword, $stBaseName)) {
$ValHightTbResult = 500
?>
</p>
<? if($BoParamSpec != 1)
{
?>
<div id="DivTbDiv" style="position:absolute; width:100%; height:300px; z-index:1; visibility:visible; ">
<table width="100%" border="1" cellspacing="0" cellpadding="0" bgcolor="#<?print $ColorMiddle;?>" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<th width="59" align="center" title="Code du champ"> Code </th>
<th width="64" title="Label du champ"> Label </th>
<th width="318" nowrap title="Aide en infobulle"> Infobulle </th>
<th width="77" title="Longueur maxi du champ"> Long</th>
<th width="59" align="right" title="Taille à l'affichage"> <div align="center">Taille
</div></th>
<th width="65" title="Champ obligatoire"> Oblig</th>
<th width="65" title="Champ visible"> Visible </th>
<th width="90" title="Coordonnée abscisse à l'écran"> Abscisse </th>
<th width="90" title="Coordonnée ordonnée à l'écran"> Ordonnée </th>
<th width="90" title="ordre d'affichage à l'écran"> ordre </th>
<th width="100" title="Valeur par défaut"> Défaut </th>
</tr>
<?
// On applique le filtre sur les DI, Fonction définie ds le fichier varenv.php
$NbLine=AppFiltreParam($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
//AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
}
else
{
?>
<input type="hidden" value="0" name="INSERT" id="INSERT">
<input type="hidden" value="0" name="NBLINE" id="NBLINE">
<input type="hidden" value="" name="INFOZONE" id="INFOZONE">
<div id="DivTbDiv" style="position:absolute; width:100%; height:300px; z-index:1; visibility:visible; ">
<table width="100%" border="1" cellspacing="0" cellpadding="0" bgcolor="#<?print $ColorMiddle;?>" bordercolorlight="#FFCC33" bordercolordark="#<?print $ColorMiddle;?>">
<tr>
<th width="15%" title="Code du champ"> Code </th>
<th width="15%" title="Label du champ"> Label </th>
<th width="15%" title="Lecture seule"> Lecture seule </th>
<th width="10%" title="Nature du champ"> Nature du champ </th>
<th width="15%" title="Infozone"> Infozone </th>
<th width="10%" title="Contrôle"> Contrôle </th>
<th width="20%" title="Liste de la combo"> Liste de la combo </th>
</tr>
<?
$ccLine=AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName);
?>
<script>
window.document.forms['default1'].elements['NBLINE'].value = "<? echo $ccLine; ?>";
</script>
<?
}
} //Fin du If AppFiltre
?>
<!-- Fin de table du début -->
</table> </div>
<input type="hidden" name="TypAction" value="<? print $TypAction; ?>">
</div>
<?
} // Fin du si bogoodusqer
Else {
?> <br><br><br><br>
<td rowspan="1"><p align="center">Le serveur ne peut vous identifier. Verifiez votre nom d'utilisateur et votre mot de passe.</p>
<p align='center'>Ou contactez votre <a href="mailto:<?print $MailAdmin;?>">administrateur</a>.<br></p>
<p align='center'><a color='red' href='../../defparam.php'>Retour à l'identification</a>
<?}?>
</form>
</body>
</html>
[/php]
La fonction appellé pour le corp de la page
[php]
<?
Function AppFiltreParamSpec($CD_USER, $TYP_DISPLAY, $stUser, $stPassword, $stBaseName) {
global $TabRequest, $TabIZ;
Init();
InitIZ();
$stSqlCommand = "SELECT CD_CTRL, TXT_LABEL, BO_READONLY, VAL_TYPE, CD_INFOZONE, VAL_CONTROLE, TXT_COMBO FROM PARAMMRWEB WHERE TYP_DISPLAY = $TYP_DISPLAY AND upper(CD_USER) = upper('$CD_USER') order by VAL_ORDER";
// Connexion à la base
$conn = ConnOracle( $stUser, $stPassword, $stBaseName);
$stmt = OCIParse($conn, $stSqlCommand);
//echo "req = $stSqlCommand";
echo "<br>";
ociexecute($stmt);
$i = 1;
while(OCIFetchInto($stmt, $data))
{
echo "<tr>";
//$ncols = OCINumCols($stmt);
//$cle=OCIResult($stmt,1);
// On va stocker ds un tableau tous les code DI obtenu pour ensuite pouvoir naviguer en mode étendu
echo "<td bgcolor='#999999' color='#FFFFFF'>";
echo $data[0];
echo "<input name='CD_CTRL". $i . "' type='hidden' class='textbox2' id='CD_CTRL". $i . "' value='". $data[0] . "'>";
echo "</td>";
//TXT_QUOTEFIELD
echo "<td bgcolor='#999999' color='#FFFFFF'>";
echo $data[1];
echo "</td>";
//echo "<td><input name='TXT_QUOTEFIELD". $i . "' type='text' class='textbox2' id='TXT_QUOTEFIELD". $i . "' value='".$data[1]."'></td>";
//BO_READONLY
echo "<td>";
if( $data[2] == 1)
{
echo "<input name='BO_READONLY". $i . "' type='checkbox' id='BO_READONLY". $i . "' checked>";
}
else
{
echo "<input name='BO_READONLY". $i . "' type='checkbox' id='BO_READONLY". $i . "'>";
}
echo "</td>";
//VAL_TYPE
echo "<td>";
echo "<select name='VAL_TYPE". $i . "' class='textbox2' id='VAL_TYPE". $i . "' onblur=''>";
// Option n°1
if( $data[3] == '0')
{
echo "<option value='0' selected>Non contrôlé</option>";
}
else
{
echo "<option value='0'>Non contrôlé</option>";
}
// Option n°2
if( $data[3] == '1')
{
echo "<option value='1' selected>Combobox</option>";
}
else
{
echo "<option value='1'>Combobox</option>";
}
// Option n°3
if( $data[3] == '2')
{
echo "<option value='2' selected>Infozone</option>";
}
else
{
echo "<option value='2'>Infozone</option>";
}
echo "</select>";
echo "</td>";
// CD_INFOZONE
echo "<td>";
echo "<select name='CD_INFOZONE". $i . "' class='textbox2' id='CD_INFOZONE". $i . "' onblur=''>";
// Chargement de la combo
foreach($TabIZ as $ValIZ)
{
if($ValIZ && $ValIZ == $data[4])
{
echo "<OPTION value='" . $ValIZ . "' selected>". $ValIZ . "</OPTION>";
}
else if($ValIZ)
{
echo "<OPTION value='" . $ValIZ . "' >" . $ValIZ . "</OPTION>";
}
}
echo "</select>";
echo "</td>";
//VAL_CONTROLE
echo "<td>";
if( $data[5] == 1)
{
echo "<input name='VAL_CONTROLE". $i . "' type='checkbox' id='VAL_CONTROLE". $i . "' checked>";
}
else
{
echo "<input name='VAL_CONTROLE". $i . "' type='checkbox' id='VAL_CONTROLE". $i . "'>";
}
echo "</td>";
//TXT_COMBO
echo "<td><input name='TXT_COMBO". $i . "' type='text' class='textbox2' id='TXT_COMBO". $i . "' value='".$data[5]."' onblur=''></td>";
$i++;
}
OCIFreeStatement($stmt);
OCILogoff($conn);
echo "</table>";
//session_register("TabListMR");
//session_register("TabFilter");
Return $i;
}
?>
[/php]
La fonction d'enregistrement :
[php]
<?
Function UpdParamSpec($TabParamSpec,$icpt,$CD_USER,$TYP_DISPLAY){
global $conn,$LocalHost,$stBaseName,$stUser,$stPassword, $TabParamCentraux, $TabProfile, $stLibel, $TabRequest, $TabTables;
global $SID, $boLocal, $dtDateSearch, $ValDateMin;
// Insertion des données dans la table IZWEB
$conn = ConnOracle( $stUser, $stPassword, $stBaseName);
//return $TabParamSpec[1][TXT_COMBO];
for($i = 1; $i <= $icpt; $i++)
{
//return $TabParamSpec[1][VAL_TYPE];
$stSqlCommand = $TabRequest["Upd_PARAMMRWEB"];
$stSqlCommand = str_replace('pnuBO_READONLY', $TabParamSpec[$i][BO_READONLY], $stSqlCommand);
$stSqlCommand = str_replace('pnuVAL_TYPE', $TabParamSpec[$i][VAL_TYPE], $stSqlCommand);
$stSqlCommand = str_replace('pstCD_INFOZONE', $TabParamSpec[$i][CD_INFOZONE], $stSqlCommand);
$stSqlCommand = str_replace('pnuVAL_CONTROLE', $TabParamSpec[$i][VAL_CONTROLE], $stSqlCommand);
$stSqlCommand = str_replace('pstTABLE_NAME', $TabParamSpec[$i][TABLE_NAME], $stSqlCommand);
$stSqlCommand = str_replace('pstTXT_COMBO', $TabParamSpec[$i][TXT_COMBO], $stSqlCommand);
$stSqlCommand = str_replace('pstCD_CTRL', $TabParamSpec[$i][CD_CTRL], $stSqlCommand);
$stSqlCommand = str_replace('pnuTYP_DISPLAY', $TYP_DISPLAY, $stSqlCommand);
$stSqlCommand = str_replace('pstCD_USER', $CD_USER, $stSqlCommand);
//Return $stSqlCommand;
$stmt = OCIParse($conn, $stSqlCommand);
if (!$stmt)
{
Return 1;
}
if (!ociexecute($stmt))
{
Return 2;
}
OCIFreeStatement($stmt);
}
return 0;
}
?>
[/php]