8797 sujets

Développement web côté serveur, CMS

Erreur formulaire de contact

Messagede topo.design le 14 Fév 2012, 16:32
Bonjour,

Un code pour creer un formulaire de contact m'a été donné par Olivier C (et je l'en remercie) mais lorsque je le met en ligne sur ma page un message d'erreur s'affiche :
Fatal error: Call to undefined function: have_posts() in /mnt/162/sdb/6/7/mwspimiento/portfolioV3/Contact.php on line 227

Je vous met à la suite mon code intégral, je pense que c'est une erreur facile à résoudre mais je ne connais malheureusement absolument rien en php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
        <title>ToPo Design</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
        <link rel="stylesheet" href="css/jquery.jcarousel.css" type="text/css" media="all" />
        <!--[if IE 6]>
                <link rel="stylesheet" href="css/ie6.css" type="text/css" media="all" />
        <![endif]-->
        <link rel="icon" type="image/png" href="favicon.png" />
<!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /><![endif]-->
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="js/jquery.jcarousel.min.js"></script>
        <script type="text/javascript" src="js/func.js"></script>
        <script type="text/javascript">

 </script>
<link href='http://fonts.googleapis.com/css?family=Sonsie+One|Aldrich|Magra' rel='stylesheet' type='text/css'>
</head>
<body>
        <div class="shell">
                <div id="header">
                        <h1 id="logo">
                                <a href="#">ToPo .<br />
                                        <span class="min">
                                                <span class="red">Design</span>.
                                        </span>
                                </a>
                        </h1>
                        <div id="navigation">
                                <ul>
                                        <li>
                                                <a href="http://mwspimiento.free.fr/portfolioV3/" class="active">Sites
                                                </a>
                                        </li>
                                        <li>
                                                <a href="http://mwspimiento.free.fr/portfolioV3/logos.html">Logos
                                                </a>
                                        </li>
                                <!--<li>
                                                <a href="#">Navigations
                                                </a>
                                        </li>
                                        <li>
                                                <a href="#">Services
                                                </a>
                                                        </li>-->
                                        <li class="last">
                                                <a href="http://mwspimiento.free.fr/portfolioV3/Contact.php">Contact
                                                </a>
                                        </li>
                                </ul>
                                <div class="cl">&nbsp;
                                </div>
                        </div>
                </div>
                <div id="ombrage">
                        <br />
                        <h2>Contact
                        </h2>
                        <br />
                </div>
                <div class="slider-holder">
                        <a href="#" class="prev notext">prev
                        </a>
                        <a href="#" class="next notext">next
                        </a>
                        <div class="slider">
                                <ul>
                                        <li>
                                                <center><br /><br /><br /><br /><h4>Par Email à :<br /><br />
                                               mon mail</h4>
                                        </center>
                                        </li>
                                        <li>
                                                
                                        </li>
                                        <li>
                                                
                                        </li>
                                </ul>
                        </div>
                </div>
                <div id="ombrage2">
                </div>
                <div id="main">
                        <div id="content" class="left">
                                <div class="accroche">
                                        <h2>Soignez votre image.</h2><?php

//If the form is submitted

        if(isset($_POST['submitted'])) {



//Check to see if the honeypot captcha field was filled in

        if(trim($_POST['checking']) !== '') {

        $captchawarning = true;

        } else {



//Check to make sure that the name field is not empty

        if(trim($_POST['contactName']) === '') {

        $namewarning = '&nbsp;- indiquez votre nom&nbsp;:';

        $haswarning = true;

        } else {

        $name = trim($_POST['contactName']);

        }



//Check to make sure sure that a valid email address is submitted

        if(trim($_POST['email']) === '')  {

        $emailwarning = '&nbsp;- indiquez une adresse e-mail valide&nbsp;:';

        $haswarning = true;

        } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {

        $emailwarning = '&nbsp;- adresse e-mail invalide.';

        $haswarning = true;

        } else {

        $email = trim($_POST['email']);

        }



//Check to make sure comments were entered     

        if(trim($_POST['comments']) === '') {

        $commentwarning = '&nbsp;- entrez votre message&nbsp;:';

        $haswarning = true;

        } else {

        if(function_exists('stripslashes')) {

        $comments = stripslashes(trim($_POST['comments']));

        } else {

        $comments = trim($_POST['comments']);

        }

        }



//If there is no warning, send the email

        if(!isset($haswarning)) {



        $emailTo = 'mwspimiento@hotmail.fr';

        $subject = 'Message de '.$name;

        $sendCopy = trim($_POST['sendCopy']);

        $body = "Nom: $name \n\nEmail: $email \n\nMessage: $comments";

        $headers = 'De : mon site <'.$emailTo.'>' . "\r\n" . 'Répondre à&nbsp;: ' . $email;

       

        mail($emailTo, $subject, $body, $headers);

       

        if($sendCopy == true) {

                $subject = 'Formulaire de contact';

                $headers = 'De : <noreply@somedomain.com>';

                mail($email, $subject, $body, $headers);

        }

        $emailSent = true;

        }

        }

} ?>

<?php if(isset($emailSent) && $emailSent == true) { ?>

<div class="thanks">

<h1>Merci <?=$name;?></h1>

<p>Votre message a été envoyé avec succès.</p>

</div>

<?php } else { ?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>



<h1>Formulaire de contact</h1>



                <?php if(isset($haswarning) || isset($captchawarning)) { ?>

        <p class="warning">Une erreur est survenue lors de l'envoi de votre formulaire&nbsp;:<p>

                <?php } ?>



<form action="<?php the_permalink(); ?>" method="post">

<ol>

<li><label for="contactName">Nom</label>

<?php if($namewarning != '') { ?>

<span class="warning"><?=$namewarning;?></span>

<?php } ?>

<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="requiredField" />

</li>



<li><label for="email">E-mail</label>

<?php if($emailwarning != '') { ?>

<span class="warning"><?=$emailwarning;?></span>

<?php } ?>

<input type="text" name="email" id="email" value="<?php if(isset($_POST['email']))  echo $_POST['email'];?>" class="requiredField email" />

</li>



<li class="textarea"><label for="commentsText">Message</label>

<?php if($commentwarning != '') { ?>

<span class="warning"><?=$commentwarning;?></span>

<?php } ?>

<textarea name="comments" id="commentsText" rows="20" cols="30" class="requiredField"><?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea>

</li>



<li class="inline"><label for="sendCopy">Recevoir une copie du message</label><input type="checkbox" name="sendCopy" id="sendCopy" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> /></li>

<li class="screenreader"><label for="checking" class="screenreader">Pour envoyer ce formulaire, ne saisissez rien dans ce champ</label><input type="text" name="checking" id="checking" class="screenReader" value="<?php if(isset($_POST['checking']))  echo $_POST['checking'];?>" /></li>

<li class="buttons"><input type="hidden" name="submitted" id="submitted" value="true" /><button type="submit"><span>envoyer</span></button></li>

</ol>

</form>



        <?php endwhile; ?>

        <?php endif; ?>

<?php } ?>
                                        <h3><font style="letter-spacing: 0.3px;">Une image d'entreprise bien conçue c'est une vente, un contact ou une fidélisation facilité.</h3>
                                        <p><font style="letter-spacing: 4.2px;">Charte graphique, architecture de site internet, ergonomie de navigation,</font>
                                        <font style="letter-spacing: 4.28px;">contenu, cartes de visite, autocollants sur véhicules, nous vous aiderons</font>
                                        <font style="letter-spacing: 3px;">à définir ces points clefs en fonction de votre marché, de l'image de votre entreprise</font>
                                        <font style="letter-spacing: 4.3748px;">et des objectifs à atteindre à travers la création du site web de celle-ci.</font></p>
                                </div>
                                <div class="col left">
                                        <h2>Objectif ?</h2>
                                        <h3><font style="letter-spacing: 1.9px;">Votre satisfaction est l’objectif.</font></h3>
                                        <p><font style="letter-spacing: 4.829px;">La réalisation opérationnelle :</font>
                                        <font style="letter-spacing: 2.5px;">parce que le professionnalisme est indi-</font>
                                        <font style="letter-spacing: 1.805px;">spensable au bon déroulement d’une action.</font></p>
                                </div>
                                <div class="col right">
                                        <h2>Méthode ?</h2>
                                        <h3><font style="letter-spacing: 2.77px;">Prendre le temps de réflexion.</font></h3>
                                        <p><font style="letter-spacing: 7px; word-spacing:10px;">La réflexion créative :</font>
                                        <font style="letter-spacing: 2px; word-spacing:3px;">parce que le cœur de la communication,</font>
                                        <font style="letter-spacing: 2.17px; word-spacing:2px;">c’est une création forte, mais maîtrisée.</font></p>
                                </div>
                                <div class="cl">&nbsp;</div>
                        </div>
                       
                        <div id="sidebar" class="right">
                                <h2>Communiquer
                        <br /><font style="letter-spacing: 0.8px; word-spacing:2px;">oui, mais par quel moyens ?</font></h2>
                                <div class="item">
                                        <h3>Site internet</h3>
                                        <p><font style="letter-spacing: 0.6px;">Quelle que soit votre activité professionnelle,</font>
                                        <font style="letter-spacing: 0.15px;">un site est maintenant un élément promotionnel</font>
                                        <font style=" letter-spacing: 1.42px; word-spacing:0px;">incontournable et d'un très bon rapport</font>
                                        <font style=" letter-spacing: 0.35px;">efficacité/prix. Vous avez donc raison de vouloir </font>
                                        <font style=" letter-spacing: 0.9px; word-spacing:0px;">faire un site Internet pour votre entreprise.</font></p>
                                </div><br />
                                <div class="item">
                                        <h3>Cartes de visite</h3>
                                        <p><font style=" letter-spacing: -0.15px;">La carte de visite est un excellent outil de promotion.</font>
                                        <font style=" letter-spacing: -0.5px;">C'est un document de communication à ne pas négliger</font>
                                        <font style=" letter-spacing: -0.38px;">car il offre l'opportunité de valoriser l'identité et l'image </font>
                                        <font style=" letter-spacing: 0.15px;">de son entreprise tout en véhiculant ses services,</font>
                                        <font style=" letter-spacing: 0.2px;"> ses activités etc. Elle doit à la fois refléter l'image</font>
                                        <font style=" letter-spacing: 0.4px;">de l'entreprise mais aussi diffuser un message.</font></p>
                                </div><br />
                                <div class="item">
                                        <h3>Pub sur vehicules</h3>
                                        <p><font style=" letter-spacing: 1.9px;">La pub sur véhicule : 3000 occasions </font>
                                        <font style=" letter-spacing: 1.7px;">d’être vu par heure en zone urbaine … </font></p>
                                </div>
                        </div>
                        <div class="cl">&nbsp;
                        </div>
                </div>
                <div id="footer"><!--
                                <div class="nav left">
                                        <ul>
                                                <li><a href="#">Accueil</a></li>
                                                <li><a href="#">Services</a></li>
                                                <li><a href="#">Solutions</a></li>
                                                <li><a href="#">Supports</a></li>
                                                <li><a href="#">Partenaires</a></li>
                                                <li class="last"><a href="#">Contact</a></li>
                                        </ul>
                                </div>-->
                                 <p>
                                        <a href="http://validator.w3.org/check?uri=referer">
                                                <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" height="31" width="88" />
                                        </a>
                        </p>
                </div>
        </div>
</body>
</html>



Merci d'avance de votre aide

Edit: suppression des données personnelles
Modifié par mwspimiento (14 Feb 2012 - 19:54)
Bonjour,
Ton erreur signifie que la fonction "have_posts" a été appelée alors qu'elle n'existe pas (elle n'est déclarée à aucun endroit dans ton code.

Le mieux serait de demander à celui qui te l'a écrit de te donner la fonction have_posts, car difficile de l'écrire sans vraiment savoir ce qu'elle fait (elle permet apparemment l'affichage d'un formulaire et de messages d'erreur lors d'un envoi d'un formulaire).

Tu auras aussi besoin de la fonction "the_post" qui n'est pas non plus décrite. Essaye de voir avec l'auteur pour la récupérer aussi (il y a encore d'autres fonctions qui ne sont pas déclarées).

Difficile pour nous (pour moi en tout cas) de nous y retrouver dans le code...
Je trouve qu'il n'est pas très lisible (assez désorganisé, peu commenté, et je ne suis pas fan du mélange php/html...)
have_posts() et the_post() sont des fonctions de l'API de Wordpress.

Si ton site n'est pas un site qui tourne sous Wordpress, il faudra les recoder entièrement.
Si c'est le cas, vérifie que tu travaille bien dans un thème et pas autre chose.
Modifié par Skoua (15 Feb 2012 - 03:04)
mwspimiento a écrit :
Ok merci, je vais essayer de le contacter (je voulais pas abuser de sa gentillesse Smiley cligne )

Ah mince ! Je n'avais pas vu ce topic. Je n'avais effectivement pas pensé que le script ne puisse pas fonctionner en dehors de WP.
Modifié par Olivier C (06 Oct 2012 - 05:30)