Afficher si seulement une valeur est présente

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 seulement une valeur est présente

par SG2x » 29 juin 2005, 14:10

lol, ya plus rien qui s'affiche.

et si on bidouillait du coté de la bdd?

faire une colonne de plus ou on ecrit le mot "telecharger"
et une colonne ou on ecrit le nom du fichier ( fichier.pdf)

comme ca si ya un fichier, on ecrit télécharger dans la colonne voisine.

je vais essayer ca...

merci

par Cyrano » 29 juin 2005, 09:15

Et si tu testais l'existence du fichier ???
?>
<td><?php echo(file_exists("http://amosxp/amos2.0/up/".$row['articles']))?"<center><a href=\"http://amosxp/amos2.0/up/".$row['articles']."\">TELECHARGER</a></center>":"&nbsp;"; ?></td>
<?php

par SG2x » 29 juin 2005, 09:08

hélas non

dans ce cas la, le mot "telecharger" s'affiche partout
donc la aussi ou il n'y a pas de fichier derriere, ce qui donne un lien mort...

par VaN » 28 juin 2005, 18:02

peut etre a cause de ça ?
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">'.$row['articles'].'</a></center></td>'; 
a transformer en :
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">TELECHARGER</a></center></td>'; 

par SG2x » 28 juin 2005, 17:44

voila le code
<?
//====================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'amosfr';
//====================
$nombre = 20;  
if (!$limite) $limite = 0; 
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//===================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//====================
$select = 'SELECT count(id) FROM vbois';
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//====================
$select = 'select id,Date_Format(date, "%d/%m/%Y") AS dates ,lieu,articles,resultats,region,departement FROM vbois ORDER BY date ASC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
//===================
if (isset($row['articles'])) 
{ 
echo ' telecharge'; 
} 
else 
{ 
echo ''; 
} 


//===================
if($total) {
echo '<table bgcolor="#ffffff">'."\n";
echo '<tr>';
echo '<td><center><b><font color="#000000">Date</font></b></center></td>';
echo '<td><center><b><font color="#000000">Lieu</font></b></center></td>';
echo '<td><center><b><font color="#000000">Téléchargement Articles</font></b></center></td>';
echo '<td><center><b><font color="#000000">Téléchargement Résultats</font></b></center></td>';
echo '<tr>';
//lecture et affichage ligne par ligne
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td><center>'.$row['dates'].'</center></td>';
echo '<td><center>'.$row['lieu'].'</center></td>';
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">'.$row['articles'].'</a></center></td>';
echo '<td><center>'.$row['resultats'].'</center></td>';
echo ' </tr>'."\n";
}
echo '</table>'."\n";
//fin tablo
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);


?>
ben tu m'crois tu m'crois pas
mais j'ai 12 lignes dans mon tableau, et une seule avec une valeur dans la colonne articles

ca fait rien du tout, ca porte le meme nom que ce que j'ai mis dans la base de donné, autrement dit " fichier.pdf"

alors que je cherche a avoir "telecharge"

je suis perdu, en plus a coté j'essaye de faire un affiche par tri avec menu deroulant, je galere severe...

par VaN » 28 juin 2005, 17:22

if (isset($row['articles'])) 
{ 
echo ' telecharge'; 
} 
else 
{ 
echo ''; 
} 
doit fonctionner parfaitement, tu peux meme te passer du else { } inutile.

Quel est le msg d'erreur ? Es tu au moins sur que $row['articles'] contient une valeur ?

par SG2x » 28 juin 2005, 17:14

et du coup c'est quand meme jouable pour mon problème?

car j'ai essayé mais je n'y arrive pas du tout
si qqun peut m'éclairer, merci d'avance...

par fggdm » 28 juin 2005, 17:03

D'où l'intérêt d'employer les bons opérateurs :

- ===
- !==

Sinon bonjour les surprises des fois (souvent) ! Mais bon c'est évident car des fonctions PHP peuvent retourner un résultat de type integer ou boolean ! Personnellement je trouve ça absurde mais le langage n'est pas typé donc...

Si on teste le retour d'une fonction qui retourne un integer ou un boolean et qu'on teste :

if($result == true)
... si le retour est un entier 1 bonjour les conséquences !

Mais il y a des avertissements dans les docs des fonctions. Ce qui est embêtant c'est que le développeur est obligé de faire un test de typage.

par guilt92 » 28 juin 2005, 16:54

oui j ai eu ce probleme avec 0 cela vaut aussi pour empty().

Pour une machine la valeur 0 et considérée comme nulle, faut faire attention avec ca !!!

A bon entendeur,

par zeus » 28 juin 2005, 16:39

Je viens de trouver un autre argument pour isset
empty

(PHP 3, PHP 4, PHP 5 )
empty -- Détermine si une variable contient une valeur non nulle

Valeurs de retour

Retourne FALSE si var a une valeur non-vide et différente de zéro.

Ce qui suit est considéré comme étant vide :

"" (une chaîne vide)
0 (0 en tant qu'entier)
"0" (0 en tant que chaîne de caractères)
NULL
FALSE
array() (un tableau vide)
var $var; (une variable déclarée, mais sans valeur dans une classe)
une variable qui contient 0 est une variable qui existe pour moi 8)

par Invité » 28 juin 2005, 16:09

merci bcp pour vos réponses
mais honte sur moi :oops: , je n'arrive pas a mettre en place : if (isset($var)) { }
if (isset($row['articles'])) 
{ 
echo ' telecharge';
}
else
{
echo '';
}
je ne sais pas non plus quoi mettre la
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">[u]'.$row['articles'].'[/u]</a></center></td>';
bref, je m'en sort pas...

par zeus » 28 juin 2005, 15:55

empty -- Détermine si une variable contient une valeur non nulle
isset -- Détermine si une variable est affectée
Pour empty, je pense qu'il peut y avoir des problèmes très très râres en cas de affectations/libérations en chaînes

Mais je préfère également isset

par VaN » 28 juin 2005, 15:53

Je prefere pour ma part utiliser if (isset($var)) { }

par guilt92 » 28 juin 2005, 15:40

En attendant mieux je ne sais pas si cela pourra t'aider mais : si tu fais un
if(empty(var)){}
cela vérifie l'existance de la variable

D'ou ton code pourrait etre plus du genre :
if (!empty($row['articles']))
{
$row['articles']='telecharger';
}
else
{
echo '';
}
Au cas ou... :wink:

Afficher si seulement une valeur est présente

par SG2x » 28 juin 2005, 15:15

Bonjour tous,
je suis sur un projet de gestion de calendrier tout simple qui affiche la date, le lieu, 2 fichiers à télécharger en pdf( articles et resultat)

j'ai plusieurs soucis avec car je debute vraiment.

Mon premier probleme: comment dans mon tableau afficher le mot télécharger en lien sur le fichier qui se nomme " fichier.pdf" dans ma base de donnée. Ou plutot comment faire pour ne pas qu'il soit afficher quand il n'y a pas de fichier derriere?
<html>
<body>
<?
//====================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'amosfr';
//====================
$nombre = 20;  
if (!$limite) $limite = 0; 
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//===================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//====================
$select = 'SELECT count(id) FROM vbois';
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//====================
$select = 'select id,Date_Format(date, "%d/%m/%Y") AS dates ,lieu,articles,resultats,region,departement FROM vbois ORDER BY date ASC limit '.

$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
//===================

//===================
if($total) {
echo '<table bgcolor="#ffffff">'."\n";
echo '<tr>';
echo '<td><center><b><font color="#000000">Date</font></b></center></td>';
echo '<td><center><b><font color="#000000">Lieu</font></b></center></td>';
echo '<td><center><b><font color="#000000">Téléchargement Articles</font></b></center></td>';
echo '<td><center><b><font color="#000000">Téléchargement Résultats</font></b></center></td>';
echo '<tr>';
//lecture et affichage ligne par ligne
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td><center>'.$row['dates'].'</center></td>';
echo '<td><center>'.$row['lieu'].'</center></td>';
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">'.$row['articles'].'</a></center></td>';
echo '<td><center>'.$row['resultats'].'</center></td>';
echo ' </tr>'."\n";
}
echo '</table>'."\n";
//fin tablo
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);
?>
</body>
</html>
si je remplace '.$row['articles'].' dans la balise <a href> </a>
par le mot télécharger:
echo '<td><center><a href="http://amosxp/amos2.0/up/'.$row['articles'].'">Télécharger</a></center></td>';
Le mot "télécharger" apparait partout, et comme une grande majorité de lignes n'ont pas de fichier articles, le lien ne donne sur rien.
Comment faire pour n'afficher le mot télécharger qu'aux lignes ou un article à télécharger est present?

Merci beaucoup d'avance je bloque

j'avais essayer ca mais comme je suis nul en algo:
if ($row['articles'] !='')
{
$row['articles']='telecharger';
}
else
{
echo '';
}
j'ai d'autres problemes avec mon projet, mais je prefere avancer et comprendre progressivement...

Merci