Page 1 sur 1

Afficher une image si un champ est renseigné

Posté : 21 mai 2005, 13:43
par Nonoteam
Bonjour,

J'ai un champ email qui est facultatif, je voudrais que si l'utilisateur remplisse ce champs une image s'affiche avec en lien l'email qu'il a rentré.
Si ce champs reste vide aucune image ne s'affiche.
Pour l'instant cela affiche ce qu'il a rentré dans le champs email.
Comment faire ? Merci d'avance,
nonoteam

Posté : 21 mai 2005, 13:47
par Cyrano
Il faudrait voir un bout de code qu'on sache comment fonctionne ton système et qu'on sache te diriger vers la solution...

Posté : 21 mai 2005, 16:28
par Nonoteam
Voici le code:
<?
$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
$mail = $_POST['email'];

if(empty($pseudo) OR empty($message) OR (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email))) )
{
print'<a href="javascript:history.back();">Les champs <b>Pseudo</b> et <b>Commentaire</b> sont à remplir.</a>';
}
else{

....
Je voudrais que ca verifie si l'adresse email rentrée est valide, mais que si elle est rentré car le champs est facultatif, tandis que là ca oblige a rentré l'email.

second probleme:

Ensuite avec Mysql je resort les infos (l'email dans ce cas)
$req = mysql_query("SELECT date,heure,pseudo,email,message from com_tbl Order by date_verif Desc ") or die ("Erreur requête");
Je n'arrive qu'à afficher l'email avec le texte tel quel, genre: [email protected]
mais je voudrais qu'a la place de ce texte s'affiche une image ac ce texte (l'email) en lien.

merci
nonoteam

Posté : 21 mai 2005, 17:05
par Cyrano
Hé bien là ou actuellement tu fais apparaître le lien, mets une balise image allant chercher l'image en question et encadre cette balise image avec une balise <a></a> que tu pré-remplis`
<a href="mailto:<?php echo($row['email']); ?>"><img src="ton_image.gif" title="Écrivez à <?php echo($row['nom']); ?>" /></a>
Grosso-modo, c'est le principe

Posté : 21 mai 2005, 17:08
par Nonoteam
Oki merci,

et pour l'afficher que si le champs est rempli ?
et verifier le champs s'il est rempli ?

merci

Posté : 21 mai 2005, 17:11
par Cyrano
Pour valider un formulaire en PHP, j'ai un jour pondu un modèle avec force commentaires: télécharges-le ICI
Édite le et suis le fonctionnement, tu verras que ce n'est pas complexe.

Posté : 21 mai 2005, 17:25
par Nonoteam
Sur ton script, j'ai remarqué que si le champs ville n'est pas renseigné il s'affiche "Vous résidez à ...(rien en l'ocurence)"
C'est justement ce que je voudrais eviter avec l'image, c'est a dire quelle s'affiche que si le champs email est renseigné. Sinon aucune image.

Posté : 21 mai 2005, 17:32
par Cyrano
Ce script a deux ans, j'ai surement des petites erreurs de ce genre. mais il suffit de tester:
if($ville != "")
{
    echo("<p>Vous résidez à ". $ville ."</p>");
}
Si la variable est vide, la condition ne sera pas remplie et on passera au test suivant.

Posté : 21 mai 2005, 18:05
par Nonoteam
Merci ca marche.

Mais je n'arrive toujours pas a pousser la verification du champs avec
(!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail)))
en même temps que le code que tu m'a donné.

$email = $_POST['email'];

if($email != "")
{
print '<a href="mailto:'.$email.'"><img src="site.gif" border="0"></a>';
}

Posté : 21 mai 2005, 18:12
par Cyrano
Fais une combinaison vérifiant les DEUX conditions :
$email = $_POST['email'];

if(($email != "") && (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail))))
{
print '<a href="mailto:'.$email.'"><img src="site.gif" border="0"></a>';
}
Regarde bien dans mon formulaire comment je traite l'adresse de courriel : il y a deux phases : la première si elle est simplement absente et la seconde si elle n'est pas absente mais invalide.

Posté : 21 mai 2005, 18:35
par Nonoteam
Ca marche oui et non car le code
if(($email != "") && (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email))))
affiche l'image si l'email n'est pas valide (caracteres speciaux...) mais pas si celle ci est valide :?.
Ca a l'effet inverse.

Posté : 21 mai 2005, 18:47
par Cyrano
et il ne t'est pas venu à l'espri qu'il fallait inverser quelque chose ?
$email = $_POST['email'];

if(($email != "") && (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail)))
{
print '<a href="mailto:'.$email.'"><img src="site.gif" border="0"></a>';
}

Posté : 21 mai 2005, 18:59
par Nonoteam
Dsl je commence juste, je ne conaissai pas.

Sinon un autre probleme :oops:
J'ai une page add.php qui enregistre les données du formulaire dans la table com_tbl. Et une autre page index.php qui affiche les données de la table com_tbl.

Add.php :
<?
$mysql_host = '...';
$mysql_user = '...';
$mysql_password = '...';
$mysql_base = '...';

$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
$mail = $_POST['email'];

if(empty($pseudo) OR empty($message) )
{
print'<a href="javascript:history.back();">Les champs <b>Pseudo</b> et <b>Commentaire</b> sont à remplir.</a>';
}
else{

$date_verif = date("Y-m-d H:i");

$date = date("d-m-Y");

$heure = date("H:i");

$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("Erreur de connexion");

mysql_select_db($mysql_base,$db) or die ("Erreur de connexion à la base de donnée.");

mysql_query("INSERT Into com_tbl VALUES ('','$date_verif','$date','$heure','$pseudo','$email','$site','$message') ") or die ("Erreur requête ".mysql_error());

echo 'Votre commentaire à bien été ajouté.'; 

mysql_close();

}
?>
Index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body>
<?
$mysql_host = '...';
$mysql_user = '...';
$mysql_password = '...';
$mysql_base = '...';

$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("Erreur de connexion");

mysql_select_db($mysql_base,$db) or die ("Erreur de connexion à la base de donnée.");

$req = mysql_query("SELECT date,heure,pseudo,email,message from com_tbl Order by date_verif Desc ") or die ("Erreur requête");

while( $contenu = mysql_fetch_array ($req))
{

print '<br><div class="centre"><div class="haut">Posté le '.$contenu[date].' à '.$contenu[heure].' par <a href="mailto:'.$contenu[email].'">'.$contenu[pseudo].'</a><br></div>';
print '<div class="bas"><br>'.$contenu[message].'<br></div></div>';

}

mysql_close();

?>
<br><br><form method="post" action="add.php">
Nom ou Pseudo: <input type="text" name="pseudo"><br>
Email (facultatif): <input type="text" name="email"><br>
Site (facultatif): <input type="text" name="site"><br>
Commentaire: <textarea name="message" cols="40" rows"20"></textarea><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
Il me faudrait donc pouvoir (je pense) mettre
$email = $_POST['email'];

if(($email != "") && (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email)))
{
}
dans la page add.php et
print '<a href="mailto:'.$email.'"><img src="site.gif" border="0"></a>';
dans la page index.php au m^me endroit que les autres print.

Dsl de te deranger, je ne sais pas du tout comment mis prendre.

Posté : 21 mai 2005, 19:39
par Cyrano
Si je me fie à ton code, tu arrives à faire afficher certaines données. J'en conclus que tu as déjà compris comment le faire: je vois pas bien ce qui t'empêche de faire pareil avec le reste.

Petite suggestion si tu commences tout juste: va faire un tour sur www.phpdebutant.org : à droite, il y a toute une série de tutoriels que je te recommande vivement de faire les uns après les autres. Quand tu seras passé à travers, tu te rendras compte qu'avec un peu de logique tu peux répondre toi-même à une gros paquet de questions. Si je te mets des réponses toutes faites, tu n'apprendras pas grand chose et en fin de compte il faudra toujours t'aider pour un oui ou pour un non, ce ne sera agréable pour personne, surtout pas pour toi.