1. IMPORTANT : Nouvelles mesures de sécurité - 2. Règles pour obtenir de l'aide dans les forums de support - 3. Restrictions des droits pour le groupe "Support suspendu"

Il est obligatoire de respecter les Règles de MyBB.fr : Version abrégée ou Version complète pour obtenir du support sur nos forums.

Les membres ayant un site/forum contrevenant aux règles de MyBB.support seront placés dans le groupe "Support suspendu" et ne bénéficieront plus du support du staff. Nous recommandons aux autres membres d'agir de même. Il ne s'agit pas d'un bannissement, le membre retrouvera son statut "normal" dès que sa situation sera conforme aux règles.

Nouveau : un Wiki en français : plus de détails.
Avant de soumettre votre problème, consultez-le, ainsi que la FAQ, sans oublier le moteur de recherche interne.


Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutoriel] Créer un formulaire de recrutement.
Mots-clés » tutoriel, créer, formulaire, recrutement
28-03-2012, 22:11, (Modification du message : 19-05-2013, 18:58 par Saphir.)
#1
Smile  [Tutoriel] Créer un formulaire de recrutement.
Suite à une demande de xooit, je vais vous apprendre, dans ce tutoriel, à créer une page permettant d'afficher à vos membres un formulaire de contact.

Si vous ne suivez pas le tutoriel correctement parce que rien ne vous intéresse d'autre que le résultat final, je ne fournirai aucun support.

1. Prérequis

Pour réaliser ce tutoriel, j'utiliserai le plugin "Page Manager" que vous pouvez télécharger sur le site de mybb.com en utilisant le lien ci-dessous.
http://mods.mybb.com/view/page-manager

Dans l'annexe, vous aurez besoin du plugin permettant d'utiliser le code PHP dans les templates. (Inutile de le télécharger si vous ne voulez pas faire l'annexe.)
http://mybbhacks.zingaburga.com/showthread.php?tid=260

2. Présentation

Nous allons réaliser un formulaire simple, qui utilisera tout de même une table de données (parce que je trouve cela plus propre que l'envoi par courrier électronique, et que c'est pas trop compliqué).
En allant sur la page, les membres verront le formulaire et auront la possibilité d'envoyer leur candidature, de la voir s'ils en ont déjà écrit une, et d'en taper une nouvelle (ce qui supprimerait l'ancienne). Les administrateurs quant à eux y verront la liste de toutes les candidatures.

En annexe, nous écrirons un petit code qui permettra d'afficher sur la page d'accueil : "Une nouvelle candidature vous a été soumise. Cliquez ici pour afficher la liste des candidatures." (pour les administrateurs seulement, évidemment).

3. Création de la Table de Données

Nous allons créer une table dans la base de données du forum qui contiendra les différentes candidatures. Pour cela, rendez-vous sur le panneau d'administration de votre base de données (PHPMyAdmin, par exemple), et exécutez-y la requête suivante dans votre base de données :
Code :
CREATE TABLE  `mybb`.`recrutement` (
`cid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT NOT NULL ,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`poste` TEXT NOT NULL ,
`candidature` TEXT NOT NULL ,
`lu` BOOLEAN NOT NULL DEFAULT  '0',
UNIQUE (`uid`)) ENGINE = MYISAM
(Attention : le "mybb" en haut de la requête est à remplacer par le nom de votre base de données !)

Si vous préférez utiliser une méthode plus manuelle, voici la description de chaque champ :
Nom de la Table : "recrutement"
Champ "cid" ; Type : "INT" ; A_I : OUI ; Attribut : PRIMARY
Champ "uid" ; Type : "INT" ; Attribut : UNIQUE
Champ "date" ; Type : "TIMESTAMP" ; Valeur par Défaut : "CURRENT_TIMESTAMP"
Champ "poste" ; Type : "TEXT"
Champ "candidature" ; Type : "TEXT"
Champ "lu" ; Type : "BOOLEAN" ; Vaule par Défaut : "0"

4. Création du Formulaire

Activez le plugin "Page Manager". Rendez-vous ensuite dans Configuration -> Page Manager et créez une nouvelle page.
Donnez-lui le nom de votre choix, et un paramètre URI simple (dans cet exemple, ce sera "recrutement", ainsi, la page sera accessible à l'adresse "misc.php?page=recrutement"). Pour "Use MyBB Template", choisissez "Non". Vous pouvez laisser le reste à "Oui".

Nous allons taper notre code dans le grand champ texte.

Réfléchissons à présent sur la structure de la page.
Dans un premier temps, nous avons deux cas à gérer : soit le membre qui affiche la page n'est pas administrateur, auquel cas il verra le formulaire ; soir il s'agit d'un administrateur, auquel cas il verra la liste des candidatures.
Vous pouvez utiliser le code suivant.
Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
    
}
    else {
        
// Code a exécuter pour tout autre membre connecté.

    
}
}
?>

Dans un premier temps, nous allons nous concentrer sur la partie "membre". Nous travaillerons sur la partie "administrateur" plus tard.

Nous allons à présent créer le formulaire. Vous pouvez utiliser l'exemple ci-dessous, je vous laisse le comprendre et le modifier à votre manière. Attention, si vous rajoutez des champs, il faudra répercuter ces changement sur la table de données !

Code PHP :
<form method="post" action="misc.php?page=recrutement&traitement=oui">
    <
label for="poste">Poste Convoit&eacute; :</label>
    <
select name="poste" id="poste">
        <
option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
        <
option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
        <
option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
    </
select><br/><br/>
    <
label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
    <
input type="submit" value="Envoyer"/>
</
form

Le formulaire est prêt. Mais pour l'instant, il ne fait rien, nous allons à présent créer la partie traitement de la page, celle qui stockera les informations envoyées dans la base de données.

Lorsque le formulaire est envoyé, la page s'affiche de nouveau avec une variable supplémentaire, "traitement", qui vaut "oui". Il suffit donc de vérifier la présence de cette variable pour savoir s'il faut lancer le traitement ou non.
Pour insérer ces valeurs dans la base de données, il faut tout d'abord s'y connecter. On peut le faire de nombreuses façons, ma préférée étant la suivante :
Code PHP :
<?php $db = new PDO('mysql:host=localhost;dbname=mybb''root'''); ?>
(Normalement, laisser "localhost" est suffisant. Vous devrez remplacer "mybb" par le nom de votre base de données, "root" par votre nom d'utilisateur, et remplir les deux derniers guillemets avec le mot de passe de votre base de données.)

On enregistre ensuite la candidature dans la table de données en utilisant la requête suivante :
Code :
DELETE FROM  `mybb`.`recrutement` WHERE uid = X
INSERT INTO  `mybb`.`recrutement` (`uid`, `poste`, `candidature`) VALUES ('X', 'Y', 'Z')

Voici le code complet au stade où nous en sommes :
Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
    
    
}
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_GET['traitement']) {
            
$db = new PDO('mysql:host=localhost;dbname=mybb''root''');
            
$db->exec('DELETE FROM `mybb`.`recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `mybb`.`recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlspecialchars($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlspecialchars($_POST['candidature']))) . '\')');
        } else {
?>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="submit" value="Envoyer"/>
            </form>
<?php
        
}
    }
}
?>

5. Affichage de la Candidature

Les candidatures seront affichées dans deux cas distincts : de façon multiple, pour l'administrateur, et de façon unique, pour le membre.

Voici le code à utiliser dans le cas d'un membre (on présuppose que vous êtes connecté à la base de données) :
Code PHP :
<?php
            $q 
$db->query('SELECT `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `uid` = ' $mybb->user['uid']);
            
$f $q->fetch();
?>
            <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p> 

Pour un administrateur, le code est légèrement différent pour deux raisons :
- Dans un premier temps, parce qu'il y a potentiellement plusieurs candidatures à afficher ;
- Dans un second temps, parce qu'il faut également récupérer le nom d'utilisateur de l'émetteur.
De plus, il faudra également marquer les candidatures comme lues une fois qu'elles auront été affichées.

Le code ci-dessous est le code complet de la page et devrait correctement fonctionner, sous réserve de l'exactitude de la structure de votre table de données.

Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    
$db = new PDO('mysql:host=localhost;dbname=mybb''root''');
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC');
        while(
$f1 $q1->fetch()) {
            
$q2 $db->query('SELECT `username` FROM `mybb`.`mybb_users` WHERE `uid` = ' $f1['uid']);
            
$f2 $q2->fetch();
            
?>
            <p><b>La candidature de <a href="member.php?action=profile&uid=<?php echo $f1['uid']; ?>"><?php echo $f2['username']; ?></a> pour le poste de <?php echo $f1['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f1['date']; ?>.</b><br/><br/><?php echo $f1['candidature']; ?></p>
            <hr/>
            <?php
        
}
        
$db->exec('UPDATE `mybb`.`recrutement` SET lu = 1');
    }
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_POST['traitement'] == 1) {
            
$db->exec('DELETE FROM `mybb`.`recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `mybb`.`recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlentities($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlentities($_POST['candidature']))) . '\')');
        } else {
            
$q $db->query('SELECT `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `uid` = ' $mybb->user['uid']);
            
$f $q->fetch();
            
?>
            <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p>
            <hr/>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="hidden" name="traitement" value="1"/>
                <input type="submit" value="Envoyer"/>
            </form>
            <?php
        
}
    }
}
?>

6. (ANNEXE) - Alerte aux Nouvelles Candidatures

Dans cette annexe, nous allons afficher aux administrateurs une alerte lorsqu'une nouvelle candidature existe.

Attention. Le plugin cité en tête de ce message est requis pour faire fonctionner ce système !

Pour ce faire, nous allons modifier le template "header" en y ajoutant à l'endroit souhaité le contenu suivant (tout en bas du template header devrait convenir) :
Code PHP :
<if $mybb->user['usergroup'] == 4 then>
    <?
php
        $dbrecrutement 
= new PDO('mysql:host=localhost;dbname=mybb''root''');
        
$q $dbrecrutement->query('SELECT COUNT(`cid`) AS existe FROM `mybb`.`recrutement` WHERE `lu` = 0');
        
$f $q->fetch();
    
?>
    <if $f['existe'] then>
        <div class="red_alert">Une ou plusieurs nouvelle(s) candidature(s) requièrent votre attention. <a href="misc.php?page=recrutement">Cliquez ici pour les afficher.</a></div>
        <br />
    </if>
</if> 

7. Captures d'Écran

Petit speech avant de dévoiler les captures d'écran...

Mine de rien, ça a beau être relativement simple, c'est assez long à coder, pour trois raisons. D'abord, parce que j'écris le tutoriel en même temps, donc je perd énormément de temps à écrire les textes que vous lisez, et à les relire pour éviter un maximum de fautes. Ensuite, parce qu'au fil du tutoriel, je me suis éloigné à plusieurs reprises de mon idée de base (et je pense que ça peut parfois se voir dans le code) en rajoutant de plus en plus de petites fonctions. Enfin, pour la simple et bonne raison que cela fait maintenant plusieurs mois que je n'avais pas codé en PHP et que j'avait des morceaux de Java (un autre langage de programmation) qui traînaient par moments dans mon code pendant plusieurs essais avant que je ne retrouve mes erreurs.

Je n'ai pas fait de style, pour la simple et bonne raison que l'objectif ici était de créer le formulaire, tout simplement. Si vous voulez habiller votre page, il vous faudra utiliser un peu de CSS.

Si vous avez des idées pour améliorer le code, n'hésitez pas à les donner ici, j'en prendrait note (je ne suis pas un professionnel du PHP (et ça peut se voir), et j'apprécie de voir mes connaissances dans ce langage s'approfondir).

Si vous avez créé un style d'affichage pour la page, justement, n'hésitez pas à le donner ici et je le rajouterai à ce tutoriel.

Si vous rencontrez un problème avec ce tutoriel, n'hésitez pas à poser vos questions ici-même. Je répondrai également aux messages privés que je recevrai, mais n'ayant pas réponse à tout, je pense qu'il est préférable d'utiliser le forum comme un forum !

    : Capture de la notification d'une nouvelle candidature pour les administrateurs.
    : Capture de la page telle qu'un membre la voit après avoir déposé sa candidature une première fois.
    : Capture de la page telle qu'un administrateur la voit lorsqu'une seule candidature requiert son attention. S'il y en avait eu d'autres, elles seraient apparues à la suite, de la plus ancienne à la plus récente.

[Image: 88x31.png]

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
06-04-2012, 12:49,
#2
RE: [Tutoriel] Créer un formulaire de recrutement.
Bonjour Saphir, merci pour le tuto.

Par contre je rencontre une erreur 500 quand je veut me rendre sur mas page.

(Erreur HTTP 500 (Internal Server Error) : Une situation inattendue s'est produite tandis que le serveur tentait de traiter la demande.)

j'ai tous effacer et re-suivie le tuto toujours la même erreur.
Répondre
06-04-2012, 13:25, (Modification du message : 06-04-2012, 13:27 par Saphir.)
#3
RE: [Tutoriel] Créer un formulaire de recrutement.
Bonjour.

Normalement, le code suivant doit fonctionner correctement.
Si tu l'as modifié, peux-tu me donner le code complet ?
Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    
$db = new PDO('mysql:host=localhost;dbname=mybb''root''');
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC');
        while(
$f1 $q1->fetch()) {
            
$q2 $db->query('SELECT `username` FROM `mybb`.`mybb_users` WHERE `uid` = ' $f1['uid']);
            
$f2 $q2->fetch();
            
?>
            <p><b>La candidature de <a href="member.php?action=profile&uid=<?php echo $f1['uid']; ?>"><?php echo $f2['username']; ?></a> pour le poste de <?php echo $f1['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f1['date']; ?>.</b><br/><br/><?php echo $f1['candidature']; ?></p>
            <hr/>
            <?php
        
}
        
$db->exec('UPDATE `mybb`.`recrutement` SET lu = 1');
    }
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_GET['traitement']) {
            
$db->exec('DELETE FROM `mybb`.`recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `mybb`.`recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlentities($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlentities($_POST['candidature']))) . '\')');
        } else {
            
$q $db->query('SELECT `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `uid` = ' $mybb->user['uid']);
            
$f $q->fetch();
            
?>
            <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p>
            <hr/>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="submit" value="Envoyer"/>
            </form>
            <?php
        
}
    }
}
?>

Es-tu sûr(e) des informations que tu as entrées pour te connecter à la base de données (ligne 3) ? Assure-toi de bien les rentrer sous la forme suivante :
Code PHP :
$db = new PDO('mysql:host=localhost;dbname=NOM_BASE_DE_DONNEES''NOM_UTILISATEUR_BDD''MOT_DE_PASSE_BDD'); 
De plus, vérifie que la structure de la table de données est correcte.

Si l'hôte n'est pas "localhost" (mais c'est le cas sur la plupart des hébergements), il faudra également modifier l'hôte.

Enfin, attention, le code de la partie 6 (l'annexe) n'est pas à placer dans la page mais dans le template header, modifiable depuis l'administration du forum.

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
06-04-2012, 14:13,
#4
RE: [Tutoriel] Créer un formulaire de recrutement.
Bonjour,

Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    
$db = new PDO('mysql:host=localhost;dbname=mybb''root''');
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC');
        while(
$f1 $q1->fetch()) {
            
$q2 $db->query('SELECT `username` FROM `mybb`.`mybb_users` WHERE `uid` = ' $f1['uid']);
            
$f2 $q2->fetch();
            
?>
            <p><b>La candidature de <a href="member.php?action=profile&uid=<?php echo $f1['uid']; ?>"><?php echo $f2['username']; ?></a> pour le poste de <?php echo $f1['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f1['date']; ?>.</b><br/><br/><?php echo $f1['candidature']; ?></p>
            <hr/>
            <?php
        
}
        
$db->exec('UPDATE `mybb`.`recrutement` SET lu = 1');
    }
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_GET['traitement']) {
            
$db->exec('DELETE FROM `mybb`.`recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `mybb`.`recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlentities($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlentities($_POST['candidature']))) . '\')');
        } else {
            
$q $db->query('SELECT `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `uid` = ' $mybb->user['uid']);
            
$f $q->fetch();
            
?>
            <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p>
            <hr/>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="submit" value="Envoyer"/>
            </form>
            <?php
        
}
    }
}
?>

pour la ligne:
Code PHP :
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `mybb`.`recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC'); 
On doit pas modifier "mybb" par le nom de notre basse de donner ?
Répondre
06-04-2012, 14:37,
#5
RE: [Tutoriel] Créer un formulaire de recrutement.
Ah si, exact, j'ai oublié de le mentionner, mais il est également possible de supprimer tout simplement `mybb`. de partout, puisque c'est de toute façon à cette base de données qu'est liée la variable.

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
06-04-2012, 17:10,
#6
RE: [Tutoriel] Créer un formulaire de recrutement.
J'ai donc enlever les `mybb` mes j'ai toujours un problème , j'ai plus l’erreur 500 mes une page blanche.
Répondre
06-04-2012, 18:36,
#7
RE: [Tutoriel] Créer un formulaire de recrutement.
As tu bien enlevé les points après les `mybb` ?

Il y a deux raisons pour qu'une page blanche s'affiche :
1. Tu n'es pas connecté(e) au forum ;
2. Tu essayes d'accéder à la mauvaise page.

Lorsque tu utilise page manager pour y mettre le code donné précédemment, tu dois y entrer le paramètre d'URI. Tu accèderas ensuite à ta page à l'adresse http://tonsite.com/forum/misc.php?page=PARAMETRE

Peux-tu m'envoyer une capture d'écran de page manager, lorsque tu souhaites modifier la page en question ?

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
06-04-2012, 21:17,
#8
RE: [Tutoriel] Créer un formulaire de recrutement.
Je vous les envoyer par MP.
Répondre
06-04-2012, 21:50,
#9
RE: [Tutoriel] Créer un formulaire de recrutement.
Je t'invite à :
1. Vérifier que le nom d'utilisateur de la base de données est bien "root",
2. Supprimer tous les points qui sont devant des `
3. Vérifier si ça fonctionne
4. Si ça ne fonctionne toujours pas, m'envoyer une nouvelle capture Wink

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
06-04-2012, 22:54,
#10
RE: [Tutoriel] Créer un formulaire de recrutement.
Donc , j'ai bien supprimer les mybb , root et bien le conte .

Voila le code que j'ai actuellement : (j'ai toujours page blanche)

Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    
$db = new PDO('mysql:host=localhost;dbname=forum''root''****');
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC');
        while(
$f1 $q1->fetch()) {
            
$q2 $db->query('SELECT `username` FROM `mybb_users` WHERE `uid` = ' $f1['uid']);
            
$f2 $q2->fetch();
            
?>
            <p><b>La candidature de <a href="member.php?action=profile&uid=<?php echo $f1['uid']; ?>"><?php echo $f2['username']; ?></a> pour le poste de <?php echo $f1['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f1['date']; ?>.</b><br/><br/><?php echo $f1['candidature']; ?></p>
            <hr/>
            <?php
        
}
        
$db->exec('UPDATE `recrutement` SET lu = 1');
    }
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_GET['traitement']) {
            
$db->exec('DELETE FROM `recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlentities($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlentities($_POST['candidature']))) . '\')');
        } else {
            
$q $db->query('SELECT `date`, `poste`, `candidature` FROM `recrutement` WHERE `uid` = ' $mybb->user['uid']);
            
$f $q->fetch();
            
?>
            <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p>
            <hr/>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="submit" value="Envoyer"/>
            </form>
            <?php
        
}
    }
}
?>
Répondre
06-04-2012, 23:25,
#11
RE: [Tutoriel] Créer un formulaire de recrutement.
Là je dois avouer que je ne vois pas trop d'où peut venir le problème...

La structure de la table "recrutement" dans la base de données est-elle correcte ? Normalement oui puisqu'aucune erreur ne s'affiche... Essaye de rajouter ceci tout en haut du code :
Code PHP :
<?php echo "test"?>

Si le mot "test" s'affiche sur la page, il s'agit d'un problème de connexion au forum (la page ne parvient pas à reconnaître qui est connecté). Sinon, ça vient soit du code (mais je n'y vois pas d'erreur), soit la table qui est mal configurée. Est-ce bien une base MySQL (ou MySQLi) ?

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
07-04-2012, 0:07,
#12
RE: [Tutoriel] Créer un formulaire de recrutement.
Le mot test et afficher , j'ai rencontres des problème avec les caches du forum ça pourrait venir de la ?
Répondre
07-04-2012, 9:41,
#13
RE: [Tutoriel] Créer un formulaire de recrutement.
C'est bizarre, normalement, les pages créées avec page manager récupèrent les variables de MyBB. Tu peux toujours essayer d'ajouter le code suivant, mais je ne pense pas que ça change quelque chose. Je ne vois plus vraiment d'où vient le problème....

Code PHP :
<?php include_once('./global.php'); ?>

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
15-04-2012, 11:58,
#14
RE: [Tutoriel] Créer un formulaire de recrutement.
Pour ma part, ca me met aussi page blanche. Quelqu'un a t'il trouvé une solution ?
Répondre
15-04-2012, 19:48,
#15
RE: [Tutoriel] Créer un formulaire de recrutement.
Of course.

Je récapitule.

Les membres enregistrés, quels qu'ils soient, à l'exception des administrateurs (groupe 4) verront le formulaire de dépôt de candidature et s'il y a lieu, leur candidature.
Les administrateurs (groupe 4) verront les différentes candidatures postées par les membres enregistrés. Ils ne verront pas le formulaire !

Les invités verront une page blanche.

S'il n'y a aucune candidature à afficher, les administrateurs verront également une page blanche.

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
15-04-2012, 21:08,
#16
RE: [Tutoriel] Créer un formulaire de recrutement.
En essayant avec un compte membre, cela m'affiche encore une page blanche ...
Répondre
16-04-2012, 0:37,
#17
RE: [Tutoriel] Créer un formulaire de recrutement.
Si l'erreur vient de là d'où je pense qu'elle vient, le code ci-dessous devrait fonctionner.

Code PHP :
<?php
if($mybb->user['usergroup'] != 0) {
    
$db = new PDO('mysql:host=localhost;dbname=mybb''root''');
    if(
$mybb->user['usergroup'] == 4) {
        
// Code a exécuter pour un administrateur.
        
$q1 $db->query('SELECT `uid`, `date`, `poste`, `candidature` FROM `recrutement` WHERE `lu` = 0 ORDER BY `cid` ASC');
        while(
$f1 $q1->fetch()) {
            
$q2 $db->query('SELECT `username` FROM `mybb_users` WHERE `uid` = ' $f1['uid']);
            
$f2 $q2->fetch();
            
?>
            <p><b>La candidature de <a href="member.php?action=profile&uid=<?php echo $f1['uid']; ?>"><?php echo $f2['username']; ?></a> pour le poste de <?php echo $f1['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f1['date']; ?>.</b><br/><br/><?php echo $f1['candidature']; ?></p>
            <hr/>
            <?php
        
}
        
$db->exec('UPDATE `mybb`.`recrutement` SET lu = 1');
    }
    else {
        
// Code a exécuter pour tout autre membre connecté.
        
if($_GET['traitement']) {
            
$db->exec('DELETE FROM `recrutement` WHERE uid = ' $mybb->user['uid']);
            
$db->exec('INSERT INTO `recrutement` (`uid`, `poste`, `candidature`) VALUES (' $mybb->user['uid'] . ', \'' addslashes(htmlentities($_POST['poste'])) . '\', \'' nl2br(addslashes(htmlentities($_POST['candidature']))) . '\')');
        } else {
            
$q $db->query('SELECT COUNT(cid) AS j FROM recrutement WHERE uid = ' $mybb->user['uid']);
            
$f $q->fetch();
            if(
$f['j'] > 0) {
                
$q $db->query('SELECT `date`, `poste`, `candidature` FROM `recrutement` WHERE `uid` = ' $mybb->user['uid']);
                
$f $q->fetch();
                
?>
                <p><b>Votre candidature pour le poste de <?php echo $f['poste']; ?> a &eacute;t&eacute; soumise &agrave; la date suivante : <?php echo $f['date']; ?>.</b><br/><br/><?php echo $f['candidature']; ?></p>
                <?php
            
}
            
?>
            <hr/>
            <form method="post" action="misc.php?page=recrutement">
                <label for="poste">Poste Convoit&eacute; :</label>
                <select name="poste" id="poste">
                    <option value="Super Mod&eacute;rateur">Super Mod&eacute;rateur</option>
                    <option value="Mod&eacute;rateur (Partie Musique)">Mod&eacute;rateur (Partie Musique)</option>
                    <option value="Mod&eacute;rateur (Partie Dessin)">Mod&eacute;rateur (Partie Dessin)</option>
                </select><br/><br/>
                <label for="candidature">Candidature :</label><br/><textarea name="candidature" id="candidature" rows="20" cols="70" placeholder="Tapez votre candidature ici."></textarea><br/>
                <input type="submit" value="Envoyer"/>
            </form>
            <?php
        
}
    }
}
?>

Ce qui est étrange, c'est que le code fourni dans mon tutoriel fonctionne correctement sur une installation neuve de MyBB (à condition que la table soit créée correctement).
Dans $db = new PDO('mysql:host=localhost;dbname=mybb', 'root', '');
localhost est à remplacer par l'hôte, mybb par le nom de la base de données, root par le nom d'utilisateur et l'espace vide entre les deux dernières apostrophes est à remplir avec le mot de passe de la base de données.

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
16-04-2012, 11:24, (Modification du message : 16-04-2012, 11:35 par L@Fouine.)
#18
RE: [Tutoriel] Créer un formulaire de recrutement.
bonjour voilà j'ai une erreur dans la base de donnée c'est quoi le problème?



Pièces jointes Miniature(s)
   

forum en création
Répondre
16-04-2012, 12:19,
#19
RE: [Tutoriel] Créer un formulaire de recrutement.
Es-tu sûr d'avoir exécuté la requête de création correctement ?
Exécute celle-ci :
Code :
DROP TABLE IF EXISTS `recrutement`;
CREATE TABLE  `recrutement` (
`cid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT NOT NULL ,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`poste` TEXT NOT NULL ,
`candidature` TEXT NOT NULL ,
`lu` BOOLEAN NOT NULL DEFAULT  '0',
UNIQUE (`uid`)) ENGINE = MYISAM;
(Le délimiteur de requêtes doit être le point virgule.)

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
16-04-2012, 13:18, (Modification du message : 16-04-2012, 13:20 par L@Fouine.)
#20
RE: [Tutoriel] Créer un formulaire de recrutement.
oui mais la db de l'hébergeur free-h n'est pas en 5.5 mais en 5.3 est ce que sa change quelque chose? d'ailleurs quand j'ai installer le forum lil y a differente mysql a ce que jai lus dans le tutoriel et moi c'était mysql improved je crois enfin du moins pas mysql normal et sur mon hébergeur la base de donnée commence toujours par mybb_ est ce que sa ne risque pas de faire un beug comme sa ne commence pas par mybb_recrutement par exemple?

forum en création
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)

Contact | MyBB.support | Retourner en haut | Retourner au contenu | Version bas-débit (Archivé) | Syndication RSS
 Utilitaire de traduction fourni par Regentronique