Afficher si la date existe !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher si la date existe !

par Ajoloca » 14 févr. 2007, 13:18

Je ne vois rien dans ton code qui puisse poser PB, du moins dans syntaxe et structure.
En ce qui concerne les fonctionnalités, c'est toi qui vois.

par Sebe » 14 févr. 2007, 13:13

Bien, si c'est résolu, n'oublie pas le tag.
J'attendais juste de savoir si mon code ne risquait pas de poser de problème avant de mettre [résolu] !

Merci

par Ajoloca » 14 févr. 2007, 13:07

Bien, si c'est résolu, n'oublie pas le tag.

par Sebe » 14 févr. 2007, 13:04

on ne vois pas la partie ou tu charges $soci->date_1_course.
Cela passe via la variable $fiche ... si j'ajoute ce morceau de code [print_r($fiche);] dans une balise 'php', j'ai ce résultat qui s'affiche :
Array ( [0] => stdClass Object ( [id_societaire] => 6 [nom] => Devos [prenom] => Sébastien [sexe] => H [age] => 33 [naissance] => 1974-03-11 [site_internet] => http://www.kain-bruyere.be [image] => devos.JPG [nom_1_course] => Le Jogging du Mont de la Trinité [date_1_course] => 1999-11-11 [datekb] => 2000-02-01 ) )
Ne surtout pas me demander comment c'est possible car je n'ai pas les connaissance nécessaire pour pouvoir l'expliquer !

J'ai trouvé une solution qui vaut ce qu'elle vaut mais qui ne m'affiche rien si c'est vide ... j'ai mis les 'echo' dans le 'if':
<?php 
		if ($soci->nom_1_course != '') {
			$nom_1_course = '<strong>Ma 1er course &agrave; l\'ACRHO est " </strong>'. $soci->nom_1_course . '<strong> "</strong>';
			}else { 
			$nom_1_course = '';
			}

		echo $nom_1_course;
		
		if ($soci->date_1_course != '0000-00-00' && trim($soci->date_1_course) != '') {
			$tag = '<strong>, le </strong>';
			$date_1_course = $soci->date_1_course;
			echo $tag;
			setlocale (LC_ALL,"fr_FR"); 
			echo strftime("%d-%m-%Y",strtotime($date_1_course));
			}else { 
			$date_1_course = ' ';
			$tag = '';
			echo $tag;
			echo $date_1_course;
			}
	?>
Voilà, pour moi c'est [Réglé] à moins que l'on trouve un problème :evil:

Merci pour cette patience

par Ajoloca » 14 févr. 2007, 11:46

Bonjour,

Ce que je te propose c'est du bricolage car on ne vois pas la partie ou tu charges $soci->date_1_course.
Change cette ligne
if ($soci->date_1_course != '0000-00-00' && trim($soci->date_1_course) != '') { 
pa ces deux là
$tabDate = explode(" ", $soci->date_1_course);
if ($tabDate[0] != '0000-00-00' ) {

par Sebe » 14 févr. 2007, 11:14

Salut,

Voici un nouveau jour! Donc voici ma requête qui se trouve dans une fonction:
function fiche($id_soci){
global $database, $mosConfig_live_site;

	// try to find search component's Itemid
	$query = "SELECT id"
		. "\n FROM #__menu"
		. "\n WHERE type = 'components'"
		. "\n AND link = 'index.php?option=com_societaire'"
		;
	$database->setQuery( $query );
	$_Itemid = $database->loadResult();

	if ($_Itemid != "") {
		$Itemid = $_Itemid;
	}
	
	// Adds parameter handling
	if( $Itemid > 0 && $Itemid != 99999999 ) {
		$params = $Itemid;
		$link = 'index.php?option=com_societaire&Itemid=' . $Itemid. '&task=';
		}
///////////////////////////////////////////////// Requêtes /////////////////
//echo $id_soci;
	$fichesoc = "SELECT id_societaire, nom, prenom, sexe, YEAR(NOW()) - YEAR(naissance) AS age, naissance, site_internet, image, nom_1_course, date_1_course, datekb"
	. "\n FROM #__societaire"
	. "\n WHERE id_societaire = $id_soci"
	;
	
	$database->setQuery( $fichesoc );// met le bon préfixe à la table
	$fiche = $database->loadObjectList ();
	//print_r($fiche);
	//$resultat = $database->getQuery();
	//echo $resultat;
///////////////////////////////////////// Fin de  Requêtes /////////////////
societaire_html::fiche_societaire($mosConfig_live_site, $link, $fiche); // envoit de la variable $fiche qui contient tous les champs sélectionnés dans la requête
}
Pour la partie affichage du code ... c'est ici:
<?php
	function fiche_societaire($url, $link, $fiche) {
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
	if ( count($fiche) > 0 ){
	foreach ($fiche as $soci){
?>

<tr>
    <td width="40%" rowspan="7" align="center" valign="middle"><div align="center"><img src="<?php echo $url; ?>/images/soci/<?php echo $soci->image; ?>" alt="Photo soci&eacute;taire" name="photo" height="200" border="1" id="photo" /></div></td>
    <td></td>
    <td>
		<?php
		echo '<strong>Pr&egrave;nom: </strong>';
		echo $soci->prenom;
		echo '<br /><strong>Nom: </strong>';
		echo $soci->nom;
		?>
	</td>
  </tr>

  <tr>
    <td></td>
    <td>
		<?php
		echo '<strong>N&eacute; le </strong>';
        setlocale (LC_ALL,"fr_FR");
		echo strftime("%d-%m-%Y",strtotime($soci->naissance));
		echo '<br /><strong>Sexe: </strong>';
		echo $soci->sexe;
		?>
	</td>
  </tr>

  <tr>
    <td></td>
    <td></td>
  </tr>

  <tr>
    <td></td>
    <td>
	
	<?php 
		if ($soci->nom_1_course != '') {
			$nom_1_course = '<strong>Ma 1er course &agrave; l\'ACRHO est " </strong>'. $soci->nom_1_course . '<strong> "</strong>';
			}else { 
			$nom_1_course = '';
			}
		
		//echo $soci->date_1_course;
		if ($soci->date_1_course != '0000-00-00' && trim($soci->date_1_course) != '') {
			$tag = '<strong>, le </strong>';
			$date_1_course = $soci->date_1_course;
			}else { 
			$date_1_course = ' ';
			$tag = '';
			}

		echo $nom_1_course;
		echo $tag;
		setlocale (LC_ALL,"fr_FR"); 
		echo strftime("%d-%m-%Y",strtotime($date_1_course)); 
	?>
        </td>
  </tr>

  <tr>
    <td></td>
    <td>
		<?php
			echo '<strong>Je suis &agrave; Kain Bruy&egrave;re depuis le </strong>';
			setlocale (LC_ALL,"fr_FR");
			echo strftime("%d-%m-%Y",strtotime($soci->datekb));
		?>
	</td>
  </tr>

  <tr>
    <td></td>
    <td></td>
  </tr>

  <tr>
    <td></td>
    <td>
		<?php 
		echo '<strong>Site internet: </strong><a href="';
		echo $soci->site_internet;
		echo '" title="Site du soci&eacute;taire" target="_blank">';
		echo $soci->site_internet;
		echo '</a>';
		?>
	</td>
  </tr>

  <?php
	}}else{
      echo '$fiche est vide';
	  }
  ?>
</table>

<?php
	}
?>
Pour les non avertis, c'est une programmation pour le portail Joomla (CMS) et toutes mes variables passes sans problème sauf quand je cherche à exprimer ma date dans un test !

Merci

par Ajoloca » 14 févr. 2007, 01:27

J'avais posté mon message sans voir le tien.

Montre-nous la partie de code ou tu passes ta requête et celle ou tu assignes la valeur récupérée à $soci->date_1_course

par Ajoloca » 14 févr. 2007, 01:25

Re,

Si cette date ne te sert pas à autre chose qu'à l'affichage, tu peu la récupérer directement au format français (ça t'évite tes locale, strftim, strtotime) à partir de MySQL.
SELECT DATE_FORMAT(ta_colonne, '%d-%m-%Y') AS date_fr FROM ...

par Sebe » 14 févr. 2007, 01:23

Dans ce cas tu devrais revoir ta class, tu lui demandes à un moment ou un autre de concaténer les deux valeurs.
Hum !
Je suis dans le PHP débutant ... peux-tu m'expliquer ce que tu veux dire ?

Merci

Note: Y'a peut-être un peu de fatigue qui m'oblige à aller dormir 8-)

par Ajoloca » 14 févr. 2007, 01:20

Dans ce cas tu devrais revoir ta class, tu lui demandes à un moment ou un autre de concaténer les deux valeurs.

par Sebe » 14 févr. 2007, 01:18

Comme type pour mon champs, j'ai mis 'date' mais au cas où, j'ai quand même fait le test est voici ce qu'il m'est renvoyé:
0000-00-00 14-02-2007
La valeur du champs suivit de la date du jour ... et non, je n'ai à aucun moment demandé que la date du jour soit imprimée ! J'en suis certain :evil:

Merci

par Ajoloca » 14 févr. 2007, 01:13

Re,

Dans ce cas, comment est déclarée la colonne dans ta table ?
Comment tu la récupères ??? un DATE_FORMAT() ?? sans rien ???
Il se peut que $soci->date_1_course contienne aussi l'heure
Pour t'en assurer affiche cette valeur avant de faire ton test (second if)

par Sebe » 14 févr. 2007, 01:09

Ta condition dans le second if c'est qu'elle soit différente de '0000-00-00' ce qui es le cas de vide, (elle est différente)
Oups ! Me suis un peu planté ... j'ai mis dans ma table une valeur par défaut '0000-00-00' !
Donc je voudrais que, si la variable égal '0000-00-00', elle ne soit pas prise en compte ... de la façon dont j'ai procédé, il m'est renvoyé la date du jour !

Merci

par Ajoloca » 14 févr. 2007, 00:56

Bonsoir,

Si je comprends bien, tu as $soci->date_1_course qui est vide, mais je ne vois pas où tu testes ce cas.

Ta condition dans le second if c'est qu'elle soit différente de '0000-00-00' ce qui es le cas de vide, (elle est différente).

Ajoute le test
if ($soci->date_1_course != '0000-00-00' && trim($soci->date_1_course) != '' ) { 

Afficher si la date existe !

par Sebe » 14 févr. 2007, 00:36

Bonjour,

J'ai une question par rapport à un morceau de script qui me renvoit la date du jour hors que la variable est vide !
Voici mon code:
<?php 
	if ($soci->nom_1_course != '') {
		$nom_1_course = '<strong>Ma 1er course &agrave; l\'ACRHO est " </strong>'. $soci->nom_1_course . '<strong> "</strong>';
		}else { 
		$nom_1_course = '';
		}

	if ($soci->date_1_course != '0000-00-00') {
		$tag = '<strong>, le </strong>';
		$date_1_course = $soci->date_1_course;
		}else { 
		$date_1_course = ' ';
		$tag = '';
		}

	echo $nom_1_course;
	echo $tag;
	setlocale (LC_ALL,"fr_FR"); 
	echo strftime("%d-%m-%Y",strtotime($date_1_course)); 
?>
L'erreur se passe lors du 'else' du deuxième 'if' qui est normalement vide mais qui me renvoit la date du jour !
Il me semble que la correction doit se faire sur la dernière ligne mais je ne sais comment m'y prendre.

Quelqu'un a-t-il une idée pour moi ?
Merci