Modérateur PHPfrance |
2575 Messages
01 juin 2007, 10:40
C'est encoe moi, je me suis permis d'écrire le programme de test suivant qui montre le résultat de notre code. Même si je n'est pas OsCommerce (que je ne connais pas d'ailleurs) j'ai créer les fonctions nécessaires, les constantes et la base de données et ça tourne comme du tonnere:
<?php
//constantes simulant celles de OsCommerce
define ("TABLE_MENSUALITES", "Mensualites");
define ("ENTRY_MENSUALITE", "Mensualité");
define ("ENTRY_MENSUALITE_TEXT", "*");
define ("ENTRY_TOTAL_MENSUALITE", "Montant");
define ("ENTRY_TOTAL_MENSUALITE_TEXT", "*");
//Connexion au serveur et la base de données "esinger"
tep_db_connect("localhost,root", "esinger");
//Requête SQL
$mens_query = tep_db_query("select valeur_mens, montants from ".TABLE_MENSUALITES." order by valeur_mens");
//Lecture du résultat
$mens_selected="";
$mens_array = array(); //pour la liste déroulante des mensualités
$i=0; //pour compter les enregistrements
while ($row = tep_db_fetch_array($mens_query)) {
//Remplir la liste des mensualités tout en sélectionnant celle déjà choisie ou par défaut la première
if ($_POST["mensualite"]==$row["valeur_mens"]) $mens_selected = $row["valeur_mens"];
$mens_array[] = array('id' => $row["valeur_mens"], 'text' => $row["valeur_mens"]);
//Préparer la liste des montants de la mensualité choisie ou par défaut pour la première
if ( ($_POST["mensualite"] && $_POST["mensualite"] == $row["valeur_mens"])
|| (!$_POST["mensualite"] && $i==0) ){
$montants_array = array();
$montants = explode(";" , $row["montants"]); //récup des montants séparés par ;
//construction du tableau source de la liste déroulante
$total_selected="";
foreach ($montants as $un_montant){
if ($_POST["total_mensualite"]==$un_montant) $total_selected = $un_montant;
$montants_array[] = array('id' => $un_montant, 'text' => $un_montant);
}
}
//compteur d'enregitrements
$i++;
}//fin while
//afficher la mensulaité en cours
?>
<table><form name="form1" method="post">
<tr>
<td class="main"><?php echo ENTRY_MENSUALITE; ?></td>
<td class="main">
<?php
echo tep_draw_pull_down_menu('mensualite', $mens_array, $mens_selected, 'onChange="this.form.submit();"');
if (tep_not_null(ENTRY_MENSUALITE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_MENSUALITE_TEXT . '</span>';
?>
</td>
<td class="main"><?php echo ENTRY_TOTAL_MENSUALITE; ?></td>
<td class="main">
<?php
//afficher la liste déroulante de ses montants
echo tep_draw_pull_down_menu('total_mensualite', $montants_array, $total_selected);
if (tep_not_null(ENTRY_TOTAL_MENSUALITE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_TOTAL_MENSUALITE_TEXT. '</span>';
?>
</td>
</tr>
</table></form>
<style>
.inputRequirement {color:red}
</style>
<?php
//Fonctions simulant celles de OsCommerce
function tep_db_connect($server, $dbName){
List($host, $userName, $password) = split(",|;|[ ]", $server);
return $host&&$userName&&$dbName?mysql_connect($host, $userName, $password) && mysql_select_db($dbName):null;
}
function tep_db_query($sql){
return $sql?mysql_query($sql):null;
}
function tep_db_fetch_array($result){
return $result?mysql_fetch_array($result):null;
}
function tep_draw_input_field($name, $value="", $type="text", $Js_event=""){
echo "<input type=\"$type\" name=\"$name\" value=\"$value\" $Js_event>";
}
function tep_draw_pull_down_menu($name, $options=array(), $selected_value="", $Js_event=""){
echo "<select name=\"$name\" $Js_event>";
if (is_array($options))foreach($options as $option){
$if_selected = $option["id"]==$selected_value?" SELECTED ":"";
echo "<option value=\"$option[id]\" $if_selected>$option[text]</option>";
}
echo "</select>";
}
function tep_not_null($value){
return trim($value)!="" or $value!=null;
}
?>
Remarque: dans ce code je resélectionne aussi un montant déjà choisi avant un changement de mensualité du coup le programme trouve automatiquement le montant en commun entre les mensualités changées
Modifié en dernier par
sadeq le 01 juin 2007, 13:12, modifié 1 fois.
--------
//////----
//---
//----
//////
-------
//---
//----
//---
//----
//---
//
------
//////----
//////-----
//////
-----
||--------
||--
||---
||
Prendre le recul n'est pas une perte de temps.
ps:
Affrontez moi dans l'arène