begin process at 2010 02 10 14:25:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > SELECT QUI NE GARDE QUE LES JOURS DISPONIBLES

SELECT QUI NE GARDE QUE LES JOURS DISPONIBLES


 Information sur la source

Note :
Aucune note
Catégorie :Date / Heure Niveau :Initié Date de création :20/09/2004 Date de mise à jour :20/09/2004 11:30:53 Vu :1 811

Auteur : Phnom

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Bonjour,

Le titre n'est pas très explicite, désolé.

En fait j'avais un problème avec un site d'annuaire.

Je voulais proposer aux inscrits de mettre leur site à la une de l'annuaire et leur donner la possibilité de pouvoir choisir la date de parution.

Mais, il fallait qu'une fois choisie cette date disparaisse du select des dates encore disponibles.

Je me suis bien pris la tête et finalement j'ai pondu cela.

On ne sait jamais, cela peut aider.

Source

  • <?
  • $nbrjours="60"; // Nombre de jours libres à afficher
  • $siteune = "data/alaune.inc"; // nom de mon fichier à contrôler
  • function ReadFileControle ($fic,$submit) {
  • if (file_exists($fic)) {
  • $fhandle = fopen ($fic, "r"); // Ouvre le fichier et le lit
  • $contents = fread($fhandle, filesize ($fic)); // Lit toutes les informations du fichier
  • fclose ($fhandle); // Ferme le fichier
  • }
  • if (@stristr($contents,$submit)) { // Compare ce qu'il y a dans le fichier avec ce que nous avons en jours libres
  • $controle = False; // Si les jours ne sont pas encore réservé, ont affiche tout
  • }
  • else {
  • $controle = True; // Si certains jours sont déjà réservés, on les enlèvent des jours libres visiblent dans le select
  • }
  • return $controle;
  • }
  • ?>
  • <form name="send" action="top.php" method="post">
  • <select name="datesiteune">
  • <option>Dates libres</option>
  • <?
  • for ($i = 0; $i < $nbrjours; $i++) {
  • $chaine = date("d/m/Y", mktime(0,0,0,date("m"),date("d")+$i,date("Y")));
  • $controle = ReadFileControle($siteune,$chaine);
  • if ($controle) {
  • echo "<option value=\"".$chaine."\">".$chaine."</option>\n";
  • }
  • }
  • ?>
  • </select></form>
<?
$nbrjours="60"; // Nombre de jours libres à afficher
$siteune = "data/alaune.inc"; // nom de mon fichier à contrôler 


function ReadFileControle ($fic,$submit) { 
  if (file_exists($fic)) {
    $fhandle = fopen ($fic, "r"); // Ouvre le fichier et le lit
    $contents = fread($fhandle, filesize ($fic)); // Lit toutes les informations du fichier
    fclose ($fhandle); // Ferme le fichier
  }
  if (@stristr($contents,$submit)) {   // Compare ce qu'il y a dans le fichier avec ce que nous avons en jours libres
    $controle = False; // Si les jours ne sont pas encore réservé, ont affiche tout 
  }
  else {
    $controle = True; // Si certains jours sont déjà réservés, on les enlèvent des jours libres visiblent dans le select 
  }
  return $controle;
}

?>	
<form name="send" action="top.php" method="post">
<select name="datesiteune">
<option>Dates libres</option>
<?
for ($i = 0; $i < $nbrjours; $i++) {	
$chaine = date("d/m/Y", mktime(0,0,0,date("m"),date("d")+$i,date("Y")));	
$controle = ReadFileControle($siteune,$chaine);
if ($controle) {
echo "<option value=\"".$chaine."\">".$chaine."</option>\n";
}
}
?>
</select></form>

 Conclusion

Pas d'explication, je pense que tout est dans ce bout de script.

Il manque les bouton mais bon.

A ma connaissance pas de bugs répertoriés.


 Historique

20 septembre 2004 11:30:54 :
Correction de quelques fautes d'ortographes.

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER DES RÉSERVATIONS EN PHP par mathieubond
Source avec Zip GÉNÉRATEUR DE DATE DANS TOUTES LES LANGUES DU MONDE EN (PHP)... par abdelaziz_info
CALCULER LA PHASE DE LA LUNE - MOON PHASE par CristianCCDB
Source avec Zip Source avec une capture UN CALENDRIER SOUS LA FORME D'UN TABLEAU par d54

Commentaires et avis

Commentaire de Kirua le 21/09/2004 16:13:17

tu te rends compte qu'en faisant comme ça tu ouvres ton fichier $nbrjours fois chaque fois que tu affiches la page? c'est bcp trop. voilà comment je te propose de faire:

tu sauves dans ton fichier les dates occupées, une par ligne.

ensuite, dans ton code tu fais ça:

$tableau = file('nom_du_fichier.ext');

voici l'aide au sujet de la fonction file() sur php.net:

(PHP 3, PHP 4 , PHP 5)
file --  Lit le fichier et renvoie le résultat dans un tableau
Description
array file ( string filename [, int use_include_path [, resource context]])

file() est identique à readfile(), hormis le fait que file() retourne le fichier filename dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.

    Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.


bien, on part du principe que les dates ds le fichier ne sont pas classées dans l'ordre, et ça se comprend. pour bien faire, il faudrait écrire un algo un peu plus compliqué, mais comme je pense que tu n'auras jamais 100 dates, c'est pas trop grave de faire ça 'à la naïve'.

tu fais donc ta boucle de 'ajourd'hui' jusqu'à 'ajourd'hui + $nbrjours', et pour chaque passage, donc chaque date, tu parcours le tableau $tableau et tu regardes si rtrim($tableau[$compteur]) == $date_verifiee

bien sûr, si tu ne trouves pas la $date_verifiee dans le $tableau, c'est que tu peux la rajouter au select.

de cette façon, tu n'ouvres qu'une seule fois le fichier, c'est bcp plus léger.

reste que, c'est pas adapté pour des gros traitement, puisque tu dois traverser $nbrjours fois count($tableau) éléments, et chaque fois effectuer un rtrim et une comparaison!! enfin...

ah, pê une amélioration: après la fonction file(...), tu parcours le tableau en faisant: $tableau[$compteur] = rtrim($tableau[$compteur]), comme ça tu devras plus appeler rtrim() par la suite, ça fait déjà une économie substantielle.


bonne continuation.

Commentaire de Phnom le 23/09/2004 02:36:36

Merci Kirua pour ces commentaires.

Il est vrai que le fichier est lu x fois, mais ma page n'est elle même solliciter qu'épisodiquement.

Néanmoins, j'avais opté au départ pour une solution relativement proche de celle que tu suggères et cela ne fonctionnait comme je le souhaitais.

Dès que j'ai un moment je regarde de plus près ta solution.  

Encore une fois merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales