Afficher une image si un champ est renseigné

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 13:43

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

Mammouth du PHP | 19672 Messages

21 mai 2005, 13:47

Il faudrait voir un bout de code qu'on sache comment fonctionne ton système et qu'on sache te diriger vers la solution...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 16:28

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

Mammouth du PHP | 19672 Messages

21 mai 2005, 17:05

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 17:08

Oki merci,

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

merci

Mammouth du PHP | 19672 Messages

21 mai 2005, 17:11

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 17:25

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.

Mammouth du PHP | 19672 Messages

21 mai 2005, 17:32

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 18:05

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>';
}

Mammouth du PHP | 19672 Messages

21 mai 2005, 18:12

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 18:35

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.

Mammouth du PHP | 19672 Messages

21 mai 2005, 18:47

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>';
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Nonoteam
Invité n'ayant pas de compte PHPfrance

21 mai 2005, 18:59

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.

Mammouth du PHP | 19672 Messages

21 mai 2005, 19:39

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: