8770 sujets
Développement web côté serveur, CMS
Salut Nolem ,
* isset() se contente de vérifier qu'une variable est définie (ou pour simplifier qu'elle existe) :
=> soit parce qu'elle est déclarée dans le code :
---> sous la forme $matable = array(); (déclaration)
---> sous la forme $mavariable = 'mavaleur';(déclaration et affectation d'une valeur)
=> soit parce qu'il s'agit d'une superglobale - cela dépend alors du contexte - (par exemple $_COOKIE['moncookie'], $_POST['mavardeformulaire'], etc...)
* empty() vérifie que si une variable est définie elle est bien vide. Le "problème" est que si une variable n'est pas définie empty() va tout de même retourner VRAI (TRUE)
La particularité (et aussi l'avantage) d'inverser le test avec !empty() est que non seulement on peut vérifier que la variable est définie mais également qu'elle n'est pas vide ! Cela est bien pratique notamment dans le cas d'une soumission de formulaire...
Nolem a écrit :Hmm... non ! Pas tout à fait :
Pour information :
empty est l'inverse de isset. empty = variable vide et isset = variable avec une valeur.
* isset() se contente de vérifier qu'une variable est définie (ou pour simplifier qu'elle existe) :
=> soit parce qu'elle est déclarée dans le code :
---> sous la forme $matable = array(); (déclaration)
---> sous la forme $mavariable = 'mavaleur';(déclaration et affectation d'une valeur)
=> soit parce qu'il s'agit d'une superglobale - cela dépend alors du contexte - (par exemple $_COOKIE['moncookie'], $_POST['mavardeformulaire'], etc...)
* empty() vérifie que si une variable est définie elle est bien vide. Le "problème" est que si une variable n'est pas définie empty() va tout de même retourner VRAI (TRUE)
La particularité (et aussi l'avantage) d'inverser le test avec !empty() est que non seulement on peut vérifier que la variable est définie mais également qu'elle n'est pas vide ! Cela est bien pratique notamment dans le cas d'une soumission de formulaire...
Dim a écrit :Il s'agit de l'opérateur ternaire. Il permet de simplifier le code dans le cas de tests simples.
J'ai bien etudie le lien que tu m`as donne et il y as deux petit truc que je n'ai pas compris...
La premiere:
$nom = (isset($_POST['nom'])) ? htmlspecialchars($_POST['nom']) : '';
Quel est le rapprot entre les deux? Je comprend pas a quoi sert le "?"
La syntaxe est du type :
$mavariable = (test) ? valeur si le test est vérifié : valeur si le test n'est pas vérifié;
on pourrait remplacer par :if (isset($_POST['nom'])) {
$nom = htmlspecialchars($_POST['nom']);
} else {
$nom = '';
}
a écrit :Parce que le code est vraiment basique et que toutes les variables sont testées comme non vides l'une après l'autre. Donc si la dernière variable testée est vide le message d'erreur va être remplacé par celui concernant ce champ... (bon c'est pas très clair mais il suffit de faire des tests ).
La deuxieme:
$erreur = false; if (!empty($_POST)) { // vérification dans l'ordre inverse pour que le dernier soit le premier // prénom obligatoire if (empty($prenom)) { $erreur = true; $errmsg = 'Merci de saisir le Prénom.';
Dabord pourquoi verifier dans l'ordre inverse?
a écrit :S'il ne s'agit que de vérifier qu'un champ n'est pas vide c'est inutile. Par contre c'est nécessaire pour vérifier qu'un champ est bien formaté (comme une adresse email par exemple)
Sinon j'ai decouvert aujourd'hui le regex. Je trouve ca extrahordinaire ce qu'on peut faire avec... Mais croi tu que je peut l'integrer sans trop de difficulter dans un code qui ressemblerais (plus complexe (pour moi) car plus de variable) a celui que tu m'as conseille?
Salut Heyoan ,
Exact ! Je viens de m'apercevoir de cela. Je sais que le véritable effet inverse de isset est unset et que cette fonction permet détruire la variable tout simplement.
En ce qui concerne !empty, je n'avais pas du tout pensé à cette petite astuce que tu donnes. Je te remercie .
Modifié par Nolem (11 Jul 2008 - 09:42)
Heyoan a écrit :
* isset() se contente de vérifier qu'une variable est définie (ou pour simplifier qu'elle existe) :
=> soit parce qu'elle est déclarée dans le code :
---> sous la forme $matable = array(); (déclaration)
---> sous la forme $mavariable = 'mavaleur';(déclaration et affectation d'une valeur)
=> soit parce qu'il s'agit d'une superglobale - cela dépend alors du contexte - (par exemple $_COOKIE['moncookie'], $_POST['mavardeformulaire'], etc...)
* empty() vérifie que si une variable est définie elle est bien vide. Le "problème" est que si une variable n'est pas définie empty() va tout de même retourner VRAI (TRUE)
La particularité (et aussi l'avantage) d'inverser le test avec !empty() est que non seulement on peut vérifier que la variable est définie mais également qu'elle n'est pas vide ! Cela est bien pratique notamment dans le cas d'une soumission de formulaire...
Exact ! Je viens de m'apercevoir de cela. Je sais que le véritable effet inverse de isset est unset et que cette fonction permet détruire la variable tout simplement.
En ce qui concerne !empty, je n'avais pas du tout pensé à cette petite astuce que tu donnes. Je te remercie .
Modifié par Nolem (11 Jul 2008 - 09:42)
Bonjour a tous,
Je vois que vous ete en forme des le matin...
A propos vous dormez la nuit??? Car poster un message a 2h du matin... il faut vraiment ne pas avoir envi de dormir
Merci Heyoan pour la precision que tu apporte pour isset et empty. Cependant ca fait deja plusieur jour que je lit ca un peu sur tous les forum et je comprend pas comment fonctionne array et a quoi cela sert... C'est une variable contenant plusieur variables qui peuvent etre affiche dans un tableau (C'est ca? )
Sinon pour la disposition des verifications si je comprend le raisonnement (Sans test pour le moment), c'est la derniere valeur fausse qui est affiche, la premiere etant finelement la derniere a etre virifie si toutes celles du dessous son verifie... (C'est quelque chose comme ca? )
Enfin pour mon code, j'ai fait quelque test hier pour trouver l'erreur mais rien a faire. Meme avec un teste basic sans les verifications regex ca ne fonctionne pas... Sinon j'ai trouve quelques petites erreur (point virgule en trop et truc du genre) que j'ai corrige. Le dernier code etant dans celui affiche ci-dessus.
Merci
Je vois que vous ete en forme des le matin...
A propos vous dormez la nuit??? Car poster un message a 2h du matin... il faut vraiment ne pas avoir envi de dormir
Merci Heyoan pour la precision que tu apporte pour isset et empty. Cependant ca fait deja plusieur jour que je lit ca un peu sur tous les forum et je comprend pas comment fonctionne array et a quoi cela sert... C'est une variable contenant plusieur variables qui peuvent etre affiche dans un tableau (C'est ca? )
Sinon pour la disposition des verifications si je comprend le raisonnement (Sans test pour le moment), c'est la derniere valeur fausse qui est affiche, la premiere etant finelement la derniere a etre virifie si toutes celles du dessous son verifie... (C'est quelque chose comme ca? )
Enfin pour mon code, j'ai fait quelque test hier pour trouver l'erreur mais rien a faire. Meme avec un teste basic sans les verifications regex ca ne fonctionne pas... Sinon j'ai trouve quelques petites erreur (point virgule en trop et truc du genre) que j'ai corrige. Le dernier code etant dans celui affiche ci-dessus.
Merci
Salut Dim,
En ce qui concerne ton code j'ai fait pas mal de corrections afin que tu puisses repartir du bon pied :
* correction initialisation des variables
* vérification complète du formulaire
* correction de la REGEX $nom
* correction de la conditionnelle sur la fonction mail()
* ajout de la fonction header()
Je peux te conseiller de :
* regarder la fonction strlen()
* regarder de plus près la fonction header()
* trouver un tut qui traite sur l'implémentation de fonctions personnalisées
pour une meilleur gestion
* regarder pour la récupération des valeurs du formulaire lorsqu'il y a erreur afin que l'utilisateur ne ressaisisse pas le tout (colorisation du texte erroné)
* d'implémenter une meilleur gestion de l'affichage des erreurs par exemple au dessus ou dans le formulaire.
Voici ton code corrigé :
Si tu as des questions n'hésite pas ^^. J'espère que cela t'aidera.
Pour finir pense que ton script n'est pas tout à fait terminé. Regarde mes conseils .
++
En ce qui concerne ton code j'ai fait pas mal de corrections afin que tu puisses repartir du bon pied :
* correction initialisation des variables
* vérification complète du formulaire
* correction de la REGEX $nom
* correction de la conditionnelle sur la fonction mail()
* ajout de la fonction header()
Je peux te conseiller de :
* regarder la fonction strlen()
* regarder de plus près la fonction header()
* trouver un tut qui traite sur l'implémentation de fonctions personnalisées
pour une meilleur gestion
* regarder pour la récupération des valeurs du formulaire lorsqu'il y a erreur afin que l'utilisateur ne ressaisisse pas le tout (colorisation du texte erroné)
* d'implémenter une meilleur gestion de l'affichage des erreurs par exemple au dessus ou dans le formulaire.
Voici ton code corrigé :
<?php
if ($_POST['action'] == 'submitted') {
/*-------------INITIALISATION DES VARIABLES------------------------------*/
$adress = "monemail@truc.fr";
$nom = htmlspecialchars($_POST['nom']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$email = htmlspecialchars($_POST['email']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$message = htmlspecialchars($_POST['message']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$website = htmlspecialchars($_POST['webSite']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$option=$_POST['option'];
$sujet = "Erreur sur le site signalé par {$_POST['nom']}";
$mess = "Nom: {$_POST['nom']}\nE-mail: {$_POST['email']}\nSite: {$_POST['webSite']}\n";
$mess .= "Message: {$_POST['message']}\n";
$entete = "Return-Path: $adress\r\n";
$entete .= "From: www.monsite.fr<$adress>\n";
$errmsg=array();//initialisation de la variable pour les messages d'erreurs
/*-------------VÉRIFICATION COMPLÈTE DU FORMULAIRE------------------------------*/
// On verifie le nom commence par une majuscule et ne comporte pas de numero
if (!preg_match("#(^[A-ZÉÈÊ])\D[a-z]*(\D$)#", $nom))
$errmsg[] = 'Votre nom doit commencer par une majuscule, ne peut comporter de numéro et doit avoir un minimum de trois lettres.';
// On verifie la conformite de l'email
if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{3,}\.[a-z]{2,4}$#" , $email))
$errmsg[] = 'Votre adresse courriel n\'est pas valide.';
//si $option n'est pas vide
if (!isset($option))
$errmsg[] = 'Veuillez SVP me renseigner la page où se trouve l\'erreur.';
//vérification d'une url dans le cas où l'utilisateur la saisisse.
if(strlen($website)>0 && !preg_match("#^((http://)?)((w{3}\.)?)[a-z0-9_.-]{2,}\.[a-z]{2,4}(/?)$#",$website))
$errmsg[] = 'Votre adresse de site internet est invalide. Veuillez la saisir correctement ou ne pas la saisir du tout car elle est optionnelle.';
//vérification du champ message
if (strlen($message)<1)
$errmsg[] = 'Je vous remercie de me laisser un message plus explicite afin de déterminer le problème.';
/*------------VÉRIFICATION DE l'ENVOI DU COURRIEL---------------------------------*/
// Si on a pas d'erreur on teste l'envoie du mail
if (empty($errmsg)){
//Si le mail est bien envoyé
if (@ mail($adress, $sujet, $mess, $entete)==true){
header("location: mon_lien.php"); //envoi du courriel ok donc redirection automatique de la page vers mon_lien.php
}else{
die('ECHEC : le courriel ne s\'est pas envoyé correctement'); //arrêt du script avec message d'erreur
}
//sinon on affiche les erreurs (variante de foreach ou implode() ou list ou ... while ou ... etc.)
}else{
echo "<ul>";
for($i=0,$nb_element=count($errmsg);$i<$nb_element;$i++)
echo "<li>".$errmsg[$i]."</li>";
echo "</ul>";
}
}else{
?>
<form name="erreur" method="post" action="<?php echo $_SERVER['PHP_SELF']; //appelle de la page elle même (JE L'AIME AUSSI ...) [lol]?>" >
<fieldset>
<legend class="texteGrasNoir">Signaler une erreur</legend>
<input type="hidden" name="action" value="submitted" />
<br /><br />
<p >
<label class="formulaireTexte1"> Nom* </label>
<input type="text" name="nom" class="champTexteInput" value=""/>
<label class="formulaireTexte1"> Email* </label>
<input type="text" name="email" class="champTexteInput" value=""/>
<label class="formulaireTexte1"> Site internet </label>
<input type="text" name="webSite" class="champTexteInput" value=""/>
</p>
<span class="formulaireTexte21">Page où est l'erreur*</span>
<label class="formulaireTexte2">Accueil</label>
<input type="checkbox" name="option[]" value="Accueil"></input>
<label class="formulaireTexte2">Signaler</label>
<input type="checkbox" name="option[]" value="Signaler"></input>
<label class="formulaireTexte2">Contact</label>
<input type="checkbox" name="option[]" value="Contact"></input>
<label class="formulaireTexte2">CV</label>
<input type="checkbox" name="option[]" value="CV"></input>
<label class="formulaireTexte2">Portfolio</label>
<input type="checkbox" name="option[]" value="Portfolio"></input>
<br /><br /><br />
<div>
<label class="formulaireTexte3"> Message* </label>
<textarea name="message" rows="5" cols="73"></textarea>
</div>
<div>
<input class="bouton" type="submit" value="Envoyer">
</div>
<div class="texteLegende">
<span class="floatRight">
<br /><br />
* Champs obligatoire
</span>
</div>
</fieldset>
</form>
<?php } ?>
Si tu as des questions n'hésite pas ^^. J'espère que cela t'aidera.
Pour finir pense que ton script n'est pas tout à fait terminé. Regarde mes conseils .
++
Merci Nolem pour toute ces informations...
Je vais travailler tous ca soi dans la journee (je suis en stage mais ils ont pas trop de boulot actuellement) soi ce soir si je trouve quelque chose a faire en rapport avec mon activite de stagiaire...
Pour le code corrige je vais regarde ce que tu as change pour comprendre ce qui ne fonctionnais pas. J'aurais donc certainement des questions. Pour les informations que tu me donne de meme...
Merci beaucoup pour la nuit que tu as passe...
Je vais travailler tous ca soi dans la journee (je suis en stage mais ils ont pas trop de boulot actuellement) soi ce soir si je trouve quelque chose a faire en rapport avec mon activite de stagiaire...
Pour le code corrige je vais regarde ce que tu as change pour comprendre ce qui ne fonctionnais pas. J'aurais donc certainement des questions. Pour les informations que tu me donne de meme...
Merci beaucoup pour la nuit que tu as passe...
Un array est une variable avec plusieurs valeurs que l'on appel aussi variable de type tableau.
Je pourrais dire ceci par exemple :
Sinon, tu as également les array de type associatif
exemple :
Tu as également les tableaux multidimentionnels (un array dans un array qui peut être aussi dans un array etc.)
++
PS : Ne dites à personne surtout aux admin ou modérateurs à propos de ma collection de cd .
Modifié par Nolem (11 Jul 2008 - 10:29)
Je pourrais dire ceci par exemple :
$ma_collection_de_cd=array("Britney Spears","Chantal Goya","Lorie","Dorothée");
//Afin de savoir s'il y a des valeurs, tu peux écrire ceci afin d'afficher les valeurs du tableau
print_r($ma_collection_de_cd);
//Pour un affichage plus élégant, utilisation de la boucle foreach par exemple
foreach($ma_collection_de_cd as $valeur){
echo $valeur."<br />";
}
Sinon, tu as également les array de type associatif
exemple :
$ma_collection_de_cd=array(
"Dorothée"=>"Hou la menteuse",
"Chantal Goya"=>"Bécassine",
"Britney spears"=>"Baby One More Time ",
"Lorie"=>"Près de toi"
);
Tu as également les tableaux multidimentionnels (un array dans un array qui peut être aussi dans un array etc.)
$ma_collection_de_cd=array(
"francais"=array("Dorothée","Chantal Goya","Lorie"),
"anglais"=array("Britney Spears","new kid on the block")
)
++
PS : Ne dites à personne surtout aux admin ou modérateurs à propos de ma collection de cd .
Modifié par Nolem (11 Jul 2008 - 10:29)
[DERNIERE EDIT]
Je vais recapituler ce que je n'est pas compris dans un nouveau post car ce qui sui est long or que finalement il n'y as que deux questions courte...
[/DERNIERE EDIT]
Re,
J'ai fai un listing de ce que je ne comprend pas...
Cependant j'ai pas encore cherche les informations pour les comprendres... Donc pas de panique
J'aimerais juste avoir des explications pour la 1 et la 4, questions sur lesqu'elles j'ai buche dessus.
Merci beaucoup
Premiere question:
Je ne comprend toujours pas comment fonctionne array?
[EDIT] Merci pour le array je vai lirs ce que tu viens de mettre
[/EDIT]
Deuxieme question:
Je croi que finalement mes competences en regex son encor tres tres tres tres.... faible...
Je comprend pas le \D... (J'avoue je n'est pas encore cherche )
JE vais donc chercher avant que tu ne reponde a cette question....
[EDIT6] \D est une classe abrege... Je m'en doutais... Falais juste la trouver...
[/EDIT6]
Troisieme question:
Ici il faut que je regarde a quoi sert strlen... Peut etre des questions a venir...
Juste une petite remarque pour ceux qui voudrais copier le code, il y a une erreur de frappe la variable website qui est verifie ici est ecrit webSite (S majuscule) dans la variable du formulaire...
[EDIT2] J'ai compris...
[/EDIT2]
Quatrieme question:
Si je suis le raisonnement ca donne:
Si la variable errmsg est vide alors
Si le mail est bein envoye alors on envoi vers une autre page
Sinon message d'erreur.
Ce que je comprend pas c'est qu'est ce que viens faire le @ devant mail?
Et puis ce n'est pas ici que le mail est envoye? Il est envoye dans une condition if? C'est possible?
Autres sujet: dans l'envoi du mail est-il possible d'integrer une variable qui prendrai la valeur de chaque checkbox coche?
Du genre:
Mon code n'est pas bon c'est sur...
car il faudrait que ca ressemble plus a ca:
Sauf que la variable option est deja defini plus haut...
Derniere question:
nb_element correspond a quoi?
Et pourquoi doit-on mettre un point de chaque cote de $errmsg[$i]?
[EDIT5] Alors mes recherches sur nb_element sont infructueuse... Mais vous allez me dire normale car c'est une variable...
En effet, j'ai donc cherche count. Et la miracle... j'apprend encore.
Alors si je suis le raisonnement (dite moi si je me trompe) ca donne:
Le ombre affiche commence a 0 ($i=0)
Ensuite pour la variable errmsg je compte le nombre d'element qu'elle contient (count($errmsg)) et je l'affiche ($nb_element=count($errmsg)).
Ensuite j'oblige ce nombre a etre superieur au nombre de depart ($i<$nb_element)
Et enfin je lui dit que ce nombre ogmente de deux a chaque fois ($i++)
Mais pourquoi deux et pas un?
[/EDIT5]
Voila je croi que c'est tous... lol
En faite il y as beaucoup de texte mais pas beaucoup de questions.
PS: Si un jour tu passe en tourraine, fait appele a mon porte monnaie pour boire un verre...
Modifié par Dim (11 Jul 2008 - 11:57)
Je vais recapituler ce que je n'est pas compris dans un nouveau post car ce qui sui est long or que finalement il n'y as que deux questions courte...
[/DERNIERE EDIT]
Re,
J'ai fai un listing de ce que je ne comprend pas...
Cependant j'ai pas encore cherche les informations pour les comprendres... Donc pas de panique
J'aimerais juste avoir des explications pour la 1 et la 4, questions sur lesqu'elles j'ai buche dessus.
Merci beaucoup
Premiere question:
$errmsg=array();//initialisation de la variable pour les messages d'erreurs
Je ne comprend toujours pas comment fonctionne array?
[EDIT] Merci pour le array je vai lirs ce que tu viens de mettre
[/EDIT]
Deuxieme question:
if (!preg_match("#(^[A-ZÉÈÊ])\D[a-z]*(\D$)#", $nom))
Je croi que finalement mes competences en regex son encor tres tres tres tres.... faible...
Je comprend pas le \D... (J'avoue je n'est pas encore cherche )
JE vais donc chercher avant que tu ne reponde a cette question....
[EDIT6] \D est une classe abrege... Je m'en doutais... Falais juste la trouver...
[/EDIT6]
Troisieme question:
//vérification d'une url dans le cas où l'utilisateur la saisisse.
if(strlen($website)>0 && !preg_match("#^((http://)?)((w{3}\.)?)[a-z0-9_.-]{2,}\.[a-z]{2,4}(/?)$#",$website))
$errmsg[] = 'Votre adresse de site internet est invalide. Veuillez la saisir correctement ou ne pas la saisir du tout car elle est optionnelle.';
Ici il faut que je regarde a quoi sert strlen... Peut etre des questions a venir...
Juste une petite remarque pour ceux qui voudrais copier le code, il y a une erreur de frappe la variable website qui est verifie ici est ecrit webSite (S majuscule) dans la variable du formulaire...
[EDIT2] J'ai compris...
[/EDIT2]
Quatrieme question:
// Si on a pas d'erreur on teste l'envoie du mail
if (empty($errmsg)){
//Si le mail est bien envoyé
if (@ mail($adress, $sujet, $mess, $entete)==true){
Si je suis le raisonnement ca donne:
Si la variable errmsg est vide alors
Si le mail est bein envoye alors on envoi vers une autre page
Sinon message d'erreur.
Ce que je comprend pas c'est qu'est ce que viens faire le @ devant mail?
Et puis ce n'est pas ici que le mail est envoye? Il est envoye dans une condition if? C'est possible?
Autres sujet: dans l'envoi du mail est-il possible d'integrer une variable qui prendrai la valeur de chaque checkbox coche?
Du genre:
mail($adress, $sujet, $checkboxe, $mess, $entete)
Avec au dessus
if (isset($option))
foreach ($option as $valeur){
$checkboxe = "{$valeur}";
}}
Mon code n'est pas bon c'est sur...
car il faudrait que ca ressemble plus a ca:
mail($adress, $sujet, $option, $mess, $entete)
Avec au dessus
if (isset($option))
foreach ($option as $valeur){
$option = "{$valeur}";
}}
Sauf que la variable option est deja defini plus haut...
Derniere question:
}else{
echo "<ul>";
for($i=0,$nb_element=count($errmsg);$i<$nb_element;$i++)
echo "<li>".$errmsg[$i]."</li>";
echo "</ul>";
}
nb_element correspond a quoi?
Et pourquoi doit-on mettre un point de chaque cote de $errmsg[$i]?
[EDIT5] Alors mes recherches sur nb_element sont infructueuse... Mais vous allez me dire normale car c'est une variable...
En effet, j'ai donc cherche count. Et la miracle... j'apprend encore.
Alors si je suis le raisonnement (dite moi si je me trompe) ca donne:
Le ombre affiche commence a 0 ($i=0)
Ensuite pour la variable errmsg je compte le nombre d'element qu'elle contient (count($errmsg)) et je l'affiche ($nb_element=count($errmsg)).
Ensuite j'oblige ce nombre a etre superieur au nombre de depart ($i<$nb_element)
Et enfin je lui dit que ce nombre ogmente de deux a chaque fois ($i++)
Mais pourquoi deux et pas un?
[/EDIT5]
Voila je croi que c'est tous... lol
En faite il y as beaucoup de texte mais pas beaucoup de questions.
PS: Si un jour tu passe en tourraine, fait appele a mon porte monnaie pour boire un verre...
Modifié par Dim (11 Jul 2008 - 11:57)
Recapitulatif:
Pourquoi un @ devant la fonction mail()?
C'est ici que le mail est envoye? Il est envoye dans une condition if? C'est possible?
Je voudrais savoir si dans l'envoi du mail il est possible d'integrer une variable qui prendrai la valeur de chaque checkbox coche?
Enfin, pourquoi doit-on mettre un point de chaque cote de $errmsg[$i]?
Merci merci merci....
Je vais tester le formulaire meintenant...
Pourquoi un @ devant la fonction mail()?
if (@ mail($adress, $sujet, $mess, $entete)==true)
C'est ici que le mail est envoye? Il est envoye dans une condition if? C'est possible?
Je voudrais savoir si dans l'envoi du mail il est possible d'integrer une variable qui prendrai la valeur de chaque checkbox coche?
Enfin, pourquoi doit-on mettre un point de chaque cote de $errmsg[$i]?
}else{
echo "<ul>";
for($i=0,$nb_element=count($errmsg);$i<$nb_element;$i++)
echo "<li>".$errmsg[$i]."</li>";
echo "</ul>";
}
Merci merci merci....
Je vais tester le formulaire meintenant...
Nolem a écrit :Euh... non plus ! Ce n'est pas l'inverse puisque isset ne crée rien. En fait la seule fonction inverse d'isset() est !isset() !
Je sais que le véritable effet inverse de isset est unset et que cette fonction permet détruire la variable tout simplement.
Nolem a écrit :Une pitite erreur s'est sournoisement glissée dans le code :
Tu as également les tableaux multidimentionnels (un array dans un array qui peut être aussi dans un array etc.)
$ma_collection_de_cd=array( "francais"=array("Dorothée","Chantal Goya","Lorie"), "anglais"=array("Britney Spears","new kid on the block") )
$ma_collection_de_cd = array(
"francais"=[b][#blue]>[/#][/b] array("Dorothée","Chantal Goya","Lorie"),
"anglais"=[b][#blue]>[/#][/b] array("Britney Spears","new kid on the block")
);
Pour ce qui est de tes choix musicaux... je ne dirais rien mais je n'en pense pas moins !
Dim a écrit :
Recapitulatif:
Pourquoi un @ devant la fonction mail()?
if (@ mail($adress, $sujet, $mess, $entete)==true)
C'est ici que le mail est envoye? Il est envoye dans une condition if? C'est possible?
Je voudrais savoir si dans l'envoi du mail il est possible d'integrer une variable qui prendrai la valeur de chaque checkbox coche?
Enfin, pourquoi doit-on mettre un point de chaque cote de $errmsg[$i]?
}else{ echo "<ul>"; for($i=0,$nb_element=count($errmsg);$i<$nb_element;$i++) echo "<li>".$errmsg[$i]."</li>"; echo "</ul>"; }
Merci merci merci....
Je vais tester le formulaire meintenant...
Le @ devant la fonction mail permet de ne pas générer d'erreur à l'écran si l'envoi n'aboutit pas.
Pour le reste et comme indiqué dans le topic : A lire avant de poster dans ce salon ! Alsacréations n'est pas le bon forum pour débuter en PHP. Tu pourrais regarder du côté du site du Zéro pour les tutos et de php.net pour la doc.
Mais bon, Nolem semble motivé pour t'aider ...
Bonne continuation !
Re,
/*Après un petit repos bien mérité (codage toute la nuit sur un projet) *\
* Heyoan :
-En effet, je n'ai pas fait attention à ma pitite coquille qui s'est glisser dans le taleau multidimentionnel. Mais bon, ce matin je commençais à voir du Dorothée, Lorie, etc. un peu partout .
- En ce qui concerne isset(), il me semblait avoir lu quelque part que ça fonction inverse était unset(). Et en effet, isset() ne crée rien. Merci encore pour cette précision
* Dim :
- Je peux aussi te conseiller de faire un tour sur ce site également.
- Je me suis doutais que tu allais me poser des questions sur certains points du script :
Quand tu testes si ta voiture démarre, qu'est ce que tu fais ? Tu mets les clefs et tu mets le contact, n'est ce pas ? Donc cela revient à dire, je démarre ma voiture.
Le "@" -> Fais ce test. Enlève le du script, coupe ta connexion, et teste le script en local. après tu remets l' "@" et tu «retestes» le script toujours en local et sans connexion.
Tu as presque compris comment fonctionne ce type de boucle.
Au départ, tu initialises les variables :
$position_dans_tableau=0,$nb_element=count($mon_tableau)
Après tu mets une conditionnel : (position_dans_tableau inferieur à nombre total)
$position_dans_tableau<$nb_element
Pour finir, tu incrémentes de 1 à chaque fois
$position_dans_tableau++. Ce qui revient à dire : $position_dans_tableau+1. Il me semble que cette syntaxe est moins rapide que $position_dans_tableau++.
La boucle que je t'ai écrite revient à dire ceci au final mais d'une façon automatique.
EDIT :
À propos des petits points qui se ballade par ci par là, regarde ceci. Tu devrais mieux comprendre je pense.
++
Modifié par Nolem (11 Jul 2008 - 19:13)
/*Après un petit repos bien mérité (codage toute la nuit sur un projet) *\
* Heyoan :
-En effet, je n'ai pas fait attention à ma pitite coquille qui s'est glisser dans le taleau multidimentionnel. Mais bon, ce matin je commençais à voir du Dorothée, Lorie, etc. un peu partout .
- En ce qui concerne isset(), il me semblait avoir lu quelque part que ça fonction inverse était unset(). Et en effet, isset() ne crée rien. Merci encore pour cette précision
* Dim :
- Je peux aussi te conseiller de faire un tour sur ce site également.
- Je me suis doutais que tu allais me poser des questions sur certains points du script :
if (mail(...)){
...
}
Quand tu testes si ta voiture démarre, qu'est ce que tu fais ? Tu mets les clefs et tu mets le contact, n'est ce pas ? Donc cela revient à dire, je démarre ma voiture.
Le "@" -> Fais ce test. Enlève le du script, coupe ta connexion, et teste le script en local. après tu remets l' "@" et tu «retestes» le script toujours en local et sans connexion.
$mon_tableau=array("un",deux",trois","quatre","cinq");
for($position_dans_tableau=0,$nb_element=count($mon_tableau);$position_dans_tableau<$nb_element;$position_dans_tableau++){
echo "<p>".$mon_tableau[$position_dans_tableau]."</p>";
}
Tu as presque compris comment fonctionne ce type de boucle.
Au départ, tu initialises les variables :
$position_dans_tableau=0,$nb_element=count($mon_tableau)
Après tu mets une conditionnel : (position_dans_tableau inferieur à nombre total)
$position_dans_tableau<$nb_element
Pour finir, tu incrémentes de 1 à chaque fois
$position_dans_tableau++. Ce qui revient à dire : $position_dans_tableau+1. Il me semble que cette syntaxe est moins rapide que $position_dans_tableau++.
La boucle que je t'ai écrite revient à dire ceci au final mais d'une façon automatique.
echo $mon_tableau[0]."<br />";
echo $mon_tableau[1]."<br />";
echo $mon_tableau[2]."<br />";
echo $mon_tableau[3]."<br />";
echo $mon_tableau[4]."<br />";
EDIT :
À propos des petits points qui se ballade par ci par là, regarde ceci. Tu devrais mieux comprendre je pense.
++
Modifié par Nolem (11 Jul 2008 - 19:13)
Dim a écrit :C'est pourtant clairement indiqué dans le topic que je t'indiquais :
Je ne penssais cependant pas enfreindre une regle du salon en demandent des explications sur ce que je n'ai pas compris...
a écrit :
Le but de ce salon n'est pas ... vos premiers pas en PHP, ou l'apprentissage des technologies serveurs en général.
Cela dit ce message date un peu et beaucoup de personnes (moi le premier ) répondent à des questions qui ne concernent pas du tout les standards... Je vais poser la question pour voir si c'est toujours d'actualité et/ou s'il ne faudrait pas reformuler ...
Merci Nolem pour ces informations...
Je ne connaissais pas le site que tu m'indique.
J'ai testé une fois durant la journée le formulaire mais j'ai eu une erreur venant du header...
Donc je suis en train de perfectionner mes connaissances dessus pour résoudre mon problème... Je repasse sur le forum dans la soirée pour te dire ou j'en suis, si j'ai résolu ce problème et si j'ai perfectionné mon code avec les quelques conseils que tu m'as donnée précédemment.
Heyoan:
Je ne contredisait pas ce que tu disais à propos du topic... Car je l'ai lu avant de poster ma réponse précédente. Cependant je suis d'accord avec toi pour ce qui est de la re-formulation de ce petit article...
Je ne connaissais pas le site que tu m'indique.
J'ai testé une fois durant la journée le formulaire mais j'ai eu une erreur venant du header...
Donc je suis en train de perfectionner mes connaissances dessus pour résoudre mon problème... Je repasse sur le forum dans la soirée pour te dire ou j'en suis, si j'ai résolu ce problème et si j'ai perfectionné mon code avec les quelques conseils que tu m'as donnée précédemment.
Heyoan:
Je ne contredisait pas ce que tu disais à propos du topic... Car je l'ai lu avant de poster ma réponse précédente. Cependant je suis d'accord avec toi pour ce qui est de la re-formulation de ce petit article...
Re,
J'ai bien compris header, qui n'est pas compliqué lorsqu'on l'implémente pas avec d'autre paramètre. Cependant, malgré une syntaxe simple
C'est un exemple, mais j'ai aussi essayé
et rien y fait...
il m'affiche
La ligne 49 étant la ligne du header.
Je comprend pas trop d'où viens l'erreur sachant que dans mon index référence je n'ai pas de header
Re, boujour Nolem
Peut être devrais je dire bonsoir? Ça dépend...
Bon alors voila ou j'en suis avant d'aller e coucher...
1. Toujours pas de solution pour header...
Je vois pas ce qui cloche avec elle...
2. Modification de l'endroit où sont affichées les erreurs (sur la même page en bas du formulaire)
3. Mise en place de la variable date pour la faire parvenir dans les mails.
D'ailleurs la fonction mail contient telle un nombre limité d'intégration de variable?
Car si je rajoutais la variable date directement dans mail() cela ne m'affichai que la date dans le mail. Si je supprimais une variable (n'importe laquelle, alors dans ce cas toutes les données était affichées... )
4. Enfin je me suis documenter (reprise a zero sur le site du zero) de mes bases de php... Histoire de revoir les fonctions personnaliser, les fonctions booléen,...
Bonne nuit au craque du net...
Modifié par Dim (12 Jul 2008 - 02:02)
J'ai bien compris header, qui n'est pas compliqué lorsqu'on l'implémente pas avec d'autre paramètre. Cependant, malgré une syntaxe simple
header("location: http://www.monsite.fr/erreur/index.php");
C'est un exemple, mais j'ai aussi essayé
header("location: http://www.monsite.fr/");
et rien y fait...
il m'affiche
Warning: Cannot modify header information - headers already sent by (output started at /home.10.22/monsite/test/include/indexReference.inc.php:9) in /home.10.22/monsite/test/erreur/contenu.inc.php on line 49
La ligne 49 étant la ligne du header.
Je comprend pas trop d'où viens l'erreur sachant que dans mon index référence je n'ai pas de header
Re, boujour Nolem
Peut être devrais je dire bonsoir? Ça dépend...
Bon alors voila ou j'en suis avant d'aller e coucher...
1. Toujours pas de solution pour header...
Je vois pas ce qui cloche avec elle...
2. Modification de l'endroit où sont affichées les erreurs (sur la même page en bas du formulaire)
3. Mise en place de la variable date pour la faire parvenir dans les mails.
D'ailleurs la fonction mail contient telle un nombre limité d'intégration de variable?
Car si je rajoutais la variable date directement dans mail() cela ne m'affichai que la date dans le mail. Si je supprimais une variable (n'importe laquelle, alors dans ce cas toutes les données était affichées... )
4. Enfin je me suis documenter (reprise a zero sur le site du zero) de mes bases de php... Histoire de revoir les fonctions personnaliser, les fonctions booléen,...
Bonne nuit au craque du net...
Modifié par Dim (12 Jul 2008 - 02:02)
Salut Dim,
En ce qui concerne la fonction header(), c'est une fonction délicate. Il ne faut pas mettre un affichage avant. Exemple :
echo "mon texte affiché"; ou <html><head>.... Tu ne peux que manipuler des variables et sans affichage. Sinon tu as ce petit message d'erreur. Puisque header veut dire en-tête. Chez moi, quand j'ai testé le script, apparemment cela fonctionnait. Par contre, comme je n'ai pas de connexion web, je ne peux pas savoir si mail() réagit comme un affichage et qu'elle fonctionne correctement.
En ce qui concerne la date dans ta fonction mail. Pourquoi ne pas intégrer la date dans le mail ?
++
En ce qui concerne la fonction header(), c'est une fonction délicate. Il ne faut pas mettre un affichage avant. Exemple :
echo "mon texte affiché"; ou <html><head>.... Tu ne peux que manipuler des variables et sans affichage. Sinon tu as ce petit message d'erreur. Puisque header veut dire en-tête. Chez moi, quand j'ai testé le script, apparemment cela fonctionnait. Par contre, comme je n'ai pas de connexion web, je ne peux pas savoir si mail() réagit comme un affichage et qu'elle fonctionne correctement.
En ce qui concerne la date dans ta fonction mail. Pourquoi ne pas intégrer la date dans le mail ?
++
Dim a écrit :
Re,
J'ai bien compris header, qui n'est pas compliqué lorsqu'on l'implémente pas avec d'autre paramètre. Cependant, malgré une syntaxe simple
header("location: http://www.monsite.fr/erreur/index.php");
C'est un exemple, mais j'ai aussi essayé
header("location: http://www.monsite.fr/");
et rien y fait...
il m'afficheWarning: Cannot modify header information - headers already sent by (output started at /home.10.22/monsite/test/include/indexReference.inc.php:9) in /home.10.22/monsite/test/erreur/contenu.inc.php on line 49
La ligne 49 étant la ligne du header.
Je comprend pas trop d'où viens l'erreur sachant que dans mon index référence je n'ai pas de header
Re, boujour Nolem
Peut être devrais je dire bonsoir? Ça dépend...
Bon alors voila ou j'en suis avant d'aller e coucher...
1. Toujours pas de solution pour header...
Je vois pas ce qui cloche avec elle...
2. Modification de l'endroit où sont affichées les erreurs (sur la même page en bas du formulaire)
3. Mise en place de la variable date pour la faire parvenir dans les mails.
D'ailleurs la fonction mail contient telle un nombre limité d'intégration de variable?
Car si je rajoutais la variable date directement dans mail() cela ne m'affichai que la date dans le mail. Si je supprimais une variable (n'importe laquelle, alors dans ce cas toutes les données était affichées... )
4. Enfin je me suis documenter (reprise a zero sur le site du zero) de mes bases de php... Histoire de revoir les fonctions personnaliser, les fonctions booléen,...
Bonne nuit au craque du net...
[EDIT]
Bonjour à tous (décidément je vais vous faire ch... jusqu'au bout. dsl.)
Alors voila, après une bonne petite nuit je croi avoir les idées plus claire...
Du coup je voulais savoir si l'erreur que j'avais ne viendrais pas du fait qu'une action
<form name="erreur" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
était déjà défini ici et que du coup en rajoutant le header dans une condition je modifiais cette valeur provoquant ainsi l'erreur...
Possible, impossible, probable?
J'ai essayé sans le action, toujours une erreur, sans le header, j'ai une page blanche qui s'affiche...normale car il ne sais pas quoi afficher...
Alors je comprend plus rien...