Dicton du 23 Juillet:
À la Saint-Apollinaire, dernière semaille de laitue en pleine terre.

Télécharger
Noter:

Système de ticket support simple PHP

Description

Ce script vous permet de proposer à vos membres un formulaire d'envoi de ticket au support, super simple, vous pouvez l'adapter facilement à votre site grâce au variable dynamiques que j'ai mis en place en début de fichier.

Code source (PHP)

<?php
session_start();//pour garder en mémoire la session

############## SECTION A PARAMETRER ##############
// connexion à la bdd:
$mysqli=mysqli_connect('localhost','root','1234','tickets_support');//'serveur','nom d'utilisateur','pass','nom de la table'
if(!$mysqli) {
echo "Erreur connexion BDD";
exit;//arrêt du reste de l'excution du reste de la page
}
//fin de connexion à la bdd
$IdAdmin=1;//mettre ici votre identifiant unique dans la base de données des membres
$MailAdmin="votre@mail";//mettre votre adresse pour la réception d'un mail lors d'une réponse ou un nouveau ticket
$NomDeSessionPourId="id_membre";//nom de session qui contien l'id du membre.
$UrlPage = "tickets.php"; // cette variable vous permet de modifier les lien de cette page très facilement au cas où vous utiliseriez le script sur une autre page
$Retour = '<p><a href="'.$UrlPage.'">Retour aux tickets</a></p>'; // quand une action est demandée, on affiche ce lien pour que le membre puisse revenir à ses tickets
############## FIN DE SECTION ##############

if(!isset($_SESSION[$NomDeSessionPourId])){
echo "Vous devez &ecirc;tre connect&eacute; pour utiliser ce service.";
exit;
}
$IdMembre=$_SESSION[$NomDeSessionPourId];
$TypeCompte=$IdMembre==$IdAdmin?"Support":"Membre";
$ArrayPriorites = array( // servira à afficher la définition du champ "priorite" dans la table HTML
1 => "<span style='color:green;font-weight:bold'>Faible</span>",
2 => "<span style='color:orange;font-weight:bold'>Normale</span>",
3 => "<span style='color:red;font-weight:bold'>Haute</span>",
);
function htmlent($texte){
return htmlentities($texte,ENT_QUOTES,"ISO-8859-1");//pour sécuriser les champs du formulaire lors de l'insertiion dans la bdd
}
function envoyerMail($mail,$sujet,$message){
return mail($mail,$sujet,$message);//mise en fonction de l'envoi du mail, vous pourrez facilement le modifier si besoin (ajout de paramètres à la fonction mail())
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1" />
<title>Vos tickets</title>
<style>
table th { border:1px solid black; padding:5px;}
table td { border:1px solid black; padding:5px;}
table.tickets_support th { border:1px solid black; padding:5px; text-align:center;}
table.tickets_support td { border:1px solid black; padding:5px; text-align:center;}
</style>
</head>
<body>
<?php
$AfficherLesTickets = 1; // par défaut on affiche les tickets du membre
// si une action à été demandée par le membre:
if(isset($_GET['action'])) {
if($_GET['action'] == "ajouter") {
?>
<h2>Envoyer un nouveau ticket au support</h2>
<?php
$AfficherFormulaire = 1; // par défaut on affiche le formulaire (si ensuite le ticket est envoyé, on le cache)
if(isset($_POST['ajouter'])) {
// si le bouton "Envoyer" à été cliqué, on vérifie que les champs ne soit pas vide ou incorrect:
if(empty($_POST['sujet']) OR empty($_POST['message']) OR empty($_POST['priorite']) OR empty($_POST['mail'])) {
echo "<p>Tous les champs doivent être renseignés.</p>";
} else {
// on vérifie si le choix de la priorité est correcte:
if(!preg_match("#^(1|2|3)$#",$_POST['priorite'])) {
echo "<p>Le choix de la priorité est incorrect.</p>";
} else {
//on vérifie l'adresse mail
if(!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z]{2,6}$#",$_POST['mail'])) {
echo "<p>Le mail est incorrect.</p>";
} else {
// tous les champs sont correctement renseignés, on insère le message dans la bdd et on informe l'administrateur (vous) qu'un nouveau ticket est ouvert:
// on sécurise les champs avant de les insérer:
$Sujet = htmlent($_POST['sujet']);
$Message = nl2br(htmlent($_POST['message'])); // la fonction nl2br() permet d'afficher des saut de ligne par des <br /> (saut de ligne html)
$Priorite = $_POST['priorite'];
$Mail = htmlent($_POST['mail']);
if(mysqli_query($mysqli,"INSERT INTO tickets SET
id_membre = ".$IdMembre.",
mail_du_membre='".$Mail."',
sujet = '".$Sujet."',
message = '".$Message."',
priorite = ".$Priorite.",
etat = 1")) {
echo "<p>Ticket ajouté avec succès !
<br />
Une réponse vous sera délivrée dans les plus brefs délais.</p>";
envoyerMail($MailAdmin, 'Nouveau ticket', 'Nouveau ticket disponible');
$AfficherFormulaire = 0;
} else {
echo "<p>Une erreur s'est produite, merci de réessayer.</p>";
}
}
}
}
}
if($AfficherFormulaire == 1) {
?>
<form action="<?php echo $UrlPage; ?>?action=ajouter" method="post">
<table>
<tr>
<th style="text-align:right;">Sujet:</th>
<td><input type="text" name="sujet" value="<?php echo isset($_POST['sujet']) ? trim(htmlent($_POST['sujet'])) : ""; ?>" /></td>
</tr>
<tr>
<th style="text-align:right;vertical-align:top;">Message:</th>
<td><textarea name="message" style="width:400px;height:200px;"><?php echo isset($_POST['message']) ? htmlent($_POST['message']) : ""; ?></textarea></td>
</tr>
<tr>
<th style="text-align:right;">Priorité de votre message:</th>
<td>
<select name="priorite">
<option value="1"<?php echo isset($_POST['priorite']) ? ($_POST['priorite'] == 1 ? ' selected="selected"' : '') : ""; ?>>Faible</option>
<option value="2"<?php echo isset($_POST['priorite']) ? ($_POST['priorite'] == 2 ? ' selected="selected"' : '') : ""; ?>>Normale</option>
<option value="3"<?php echo isset($_POST['priorite']) ? ($_POST['priorite'] == 3 ? ' selected="selected"' : '') : ""; ?>>Haute</option>
</select>
</td>
</tr>
<tr>
<th style="text-align:right;vertical-align:top;">Votre email:</th>
<td><input type="text" name="mail" value="<?php echo isset($_POST['mail']) ? trim(htmlent($_POST['mail'])) : ""; ?>" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="ajouter" value="Envoyer" /></td>
</tr>
</table>
</form>
<?php
}
// une action est demandée, on affiche pas le reste de la page (les tickets du membre):
$AfficherLesTickets = 0;
echo $Retour; // et on afficher un lien pour pouvoir revenir en arrière
} elseif($_GET['action'] == "repondre") {
?>
<h2>Ajouter une réponse</h2>
<?php
// tout d'abord, vérifion si l'id du ticket est dans l'url:
if(!isset($_GET['id']) OR !preg_match("#^[0-9]+$#",$_GET['id'])) { // on demande si l'id est dans l'url et si l'id est un chiffre
echo "<p>L'identifiant du ticket est inconnu ou incorrect.</p>";
} else {
// on vérifie que le ticket demandé existe et qu'il lui appartient, sauf si c'est l'admin, on affiche le ticket pour pouvoir répondre:
$IdTicket = $_GET['id'];
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket.($IdMembre==$IdAdmin?"":" AND id_membre = ".$IdMembre));
if(mysqli_num_rows($req) != 1) {
echo "<p>Le ticket demandé n'existe pas (ou plus)".($IdMembre==$IdAdmin?"":" ou n'est pas le votre").".</p>";
} else {
// le ticket à été trouvé et lui appartient, on affiche le formulaire:
$info = mysqli_fetch_assoc($req);
$AfficherFormulaire = 1;
if(isset($_POST['repondre'])) {
// si le bouton "Répondre" à été cliqué, on vérifie que le champ message ne soit pas vide:
if(empty($_POST['message'])) {
echo "<p>Le message est vide.</p>";
} else {
// on insère le message dans la bdd et on informe l'administrateur (vous) qu'un nouvelle réponse à été ajoutée:
if(mysqli_query($mysqli,"INSERT INTO reponses SET
id_ticket = ".$IdTicket.",
message = '".nl2br(htmlent($_POST['message']))."',
poste_par = '".$TypeCompte."'")) {
echo "<p>Réponse ajoutée avec succès !
<br />
Une réponse vous sera délivrée dans les plus brefs délais.</p>";
envoyerMail(($IdMembre==$IdAdmin?$info['mail_du_membre']:$MailAdmin), 'Nouvelle reponse', 'Nouvelle reponse au ticket disponible: #'.$IdTicket);
$AfficherFormulaire = 0;
} else {
echo "<p>Une erreur s'est produite, merci de réessayer.</p>";
}
}
}
if($AfficherFormulaire == 1) {
?>
<form action="<?php echo $UrlPage; ?>?action=repondre&amp;id=<?php echo $IdTicket; ?>" method="post">
<table>
<tr>
<th style="text-align:right;">Sujet:</th>
<td><?php echo $info['sujet']; ?></td>
</tr>
<tr>
<th style="text-align:right;vertical-align:top;">Message:</th>
<td><textarea name="message" style="width:400px;height:200px;"><?php echo isset($_POST['message']) ? htmlent($_POST['message']) : ""; ?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="repondre" value="Répondre" /></td>
</tr>
</table>
</form>
<?php
}
$AfficherLesTickets = 0;
echo $Retour;
}
}
} elseif($_GET['action'] == "afficher") {
?>
<h2>Visualisation du ticket</h2>
<?php
// tout d'abord, vérifion si l'id du ticket est dans l'url:
if(!isset($_GET['id']) OR !preg_match("#^[0-9]+$#",$_GET['id'])) { // on demande si l'id est dans l'url et si l'id est un chiffre
echo "<p>L'identifiant du ticket est inconnu ou incorrect.</p>";
} else {
// on vérifie que le ticket demandé existe et qu'il lui appartient:
$IdTicket = $_GET['id'];
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket." AND id_membre = ".$IdMembre);
if(mysqli_num_rows($req) != 1) {
echo "<p>Le ticket demandé n'existe pas (ou plus) ou n'est pas le votre.</p>";
} else {
// le ticket à été trouvé et lui appartient, on lui affiche:
$info = mysqli_fetch_assoc($req);
?>
<table>
<tr>
<th style="text-align:right;">Ticket ID:</th>
<td>#<?php echo $info['id']; ?></td>
</tr>
<tr>
<th style="text-align:right;">Sujet:</th>
<td><?php echo $info['sujet']; ?></td>
</tr>
<tr>
<th style="text-align:right;vertical-align:top;">Message:</th>
<td><?php echo $info['message']; ?></td>
</tr>
<tr>
<th style="text-align:right;">Priorité de votre message:</th>
<td><?php echo $ArrayPriorites[$info['priorite']]; ?></td>
</tr>
<tr>
<th style="text-align:right;vertical-align:top;">Réponses:</th>
<td>
<a href="<?php echo $UrlPage; ?>?action=repondre&amp;id=<?php echo $IdTicket; ?>">Ajouter une réponse</a>
<br />
<?php
// si des réponses ont été ajoutées, on les affichent:
$req = mysqli_query($mysqli,"SELECT * FROM reponses WHERE id_ticket = ".$IdTicket." ORDER BY id DESC");
if(mysqli_num_rows($req) == 0) {
echo "Aucune réponse ajoutée pour le moment.";
} else {
while($info = mysqli_fetch_assoc($req)) {
?>
<table>
<tr>
<th style="vertical-align:top;border-top:none;border-left:none;">
Ajoutée le<br /><?php echo $info['date']; ?>
<br />
Par <?php echo $info['poste_par']; ?>
</th>
<td style="border-top:none;border-right:none;border-left:none;"><?php echo $info['message']; ?></td>
</tr>
</table>
<?php
}
}
?>
</td>
</tr>
</table>
<?php
}
}
// une action est demandée, on affiche pas le reste de la page (les tickets du membre):
$AfficherLesTickets = 0;
echo $Retour; // et on afficher un lien pour pouvoir revenir en arrière
} elseif($_GET['action'] == "supprimer") {
// on suppime le ticket et les réponses si il y en a:
?>
<h2>Suppression du ticket</h2>
<?php
// tout d'abord, vérifion si l'id du ticket est dans l'url:
if(!isset($_GET['id']) OR !preg_match("#^[0-9]+$#",$_GET['id'])) { // on demande si l'id est dans l'url et si l'id est un chiffre
echo "<p>L'identifiant du ticket est inconnu ou incorrect.</p>";
} else {
// on vérifie que le ticket demandé existe et qu'il lui appartient:
$IdTicket = $_GET['id'];
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket.($IdMembre==$IdAdmin?"":" AND id_membre = ".$IdMembre));
if(mysqli_num_rows($req) != 1) {
echo "<p>Le ticket demandé n'existe pas (ou plus)".($IdMembre==$IdAdmin?"":" ou n'est pas le votre").".</p>";
} else {
if(!isset($_GET['supprimer'])){//vérification de certitude...
?>
<p>&Ecirc;tes vous sûr ? <a href="<?php echo $UrlPage; ?>?action=supprimer&amp;id=<?php echo $IdTicket; ?>&amp;supprimer">Oui</a></p>
<?php
} else {
//on supprime le ticket
mysqli_query($mysqli,"DELETE FROM tickets WHERE id = ".$IdTicket);
//puis les réponses
mysqli_query($mysqli,"DELETE FROM reponses WHERE id_ticket = ".$IdTicket);
echo "<p>Ticket et réponses supprimées!</p>";
}
}
}
} elseif($_GET['action'] == "fermer") {
// on suppime le ticket et les réponses si il y en a:
?>
<h2>Fermeture du ticket</h2>
<?php
// tout d'abord, vérifion si l'id du ticket est dans l'url:
if(!isset($_GET['id']) OR !preg_match("#^[0-9]+$#",$_GET['id'])) { // on demande si l'id est dans l'url et si l'id est un chiffre
echo "<p>L'identifiant du ticket est inconnu ou incorrect.</p>";
} else {
// on vérifie que le ticket demandé existe et qu'il lui appartient:
$IdTicket = $_GET['id'];
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket.($IdMembre==$IdAdmin?"":" AND id_membre = ".$IdMembre));
if(mysqli_num_rows($req) != 1) {
echo "<p>Le ticket demandé n'existe pas (ou plus)".($IdMembre==$IdAdmin?"":" ou n'est pas le votre").".</p>";
} else {
if(!isset($_GET['fermer'])){//vérification de certitude...
?>
<p>&Ecirc;tes vous sûr ? <a href="<?php echo $UrlPage; ?>?action=fermer&amp;id=<?php echo $IdTicket; ?>&amp;fermer">Oui</a></p>
<?php
} else {
//on ferme le ticket
mysqli_query($mysqli,"UPDATE tickets SET etat=0 WHERE id = ".$IdTicket);
echo "<p>Ticket fermé!</p>";
}
}
}
}
}
// fin des actions
// on affiche les tickets du membre si aucune action n'est demandée:
if($AfficherLesTickets == 1) {
if($IdMembre==$IdAdmin){//on affiche les tickets ouverts pour l'admin:
echo "<h1>Les tickets ouverts (Administration)</h1>";
// on intéroge la table "tickets" pour voir si il y à des tickets ouverts, si oui, on les affiches:
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE etat=1 ORDER BY id DESC,priorite DESC");
if(mysqli_num_rows($req) == 0) {
echo "<p>Il n'y pas de ticket ouvert</p>";
} else {
?>
<table class="tickets_support">
<tr>
<th>Ticket ID</th> <!-- identifiant du ticket -->
<th>Sujet</th> <!-- titre du ticket -->
<th>Priorité</th> <!-- priorité du ticket -->
<th>&Eacute;tat</th> <!-- état du ticket -->
<th>Actions possibles</th>
</tr>
<?php
// on fait notre boucle (while) pour afficher la liste des tickets:
while($info = mysqli_fetch_assoc($req)) {
?>
<tr>
<td>#<?php echo $info['id']; ?></td>
<td><?php echo $info['sujet']; ?></td>
<td><?php echo $ArrayPriorites[$info['priorite']]; ?></td>
<td><span style='color:green;font-weight:bold'>Ouvert</span></td>
<td>
<a href="<?php echo $UrlPage; ?>?action=afficher&amp;id=<?php echo $info['id']; ?>">Afficher ce ticket</a>
<br />
<a href="<?php echo $UrlPage; ?>?action=fermer&amp;id=<?php echo $info['id']; ?>">Fermer ce ticket</a>
<br />
<a href="<?php echo $UrlPage; ?>?action=supprimer&amp;id=<?php echo $info['id']; ?>">Supprimer ce ticket</a>
<br />
</td>
</tr>
<?php
}
// en fin, on ferme notre table HTML:
?>
</table>
<?php
}
} else {//on affiche les tickets du membre:
echo "<h1>Vos tickets</h1>";
echo "<p><a href='".$UrlPage."?action=ajouter'>Ajouter un nouveau ticket</a></p>";
// on intéroge la table "tickets" pour voir si le membre à des tickets d'ajoutés, si oui, on les affiches:
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id_membre = ".$IdMembre." ORDER BY id DESC"); // "ORDER BY id DESC" permet d'afficher les tickets les plus récents en haut du tableau
if(mysqli_num_rows($req) == 0) {
echo "<p>Vous n'avez pas encore ajouté de ticket</p>";
} else {
// la table contien 1 ou plusieurs tickets de ce membre, on les affiches dans un tableau HTML (La table HTML permettra une meilleure compréhension des données que l'ont va afficher)
?>
<table class="tickets_support">
<tr>
<th>Ticket ID</th> <!-- identifiant du ticket -->
<th>Sujet</th> <!-- titre du ticket -->
<th>Priorité</th> <!-- priorité du ticket -->
<th>&Eacute;tat</th> <!-- état du ticket -->
<th>Actions possibles</th>
</tr>
<?php
// on fait notre boucle (while) pour afficher la liste des tickets du membre:
while($info = mysqli_fetch_assoc($req)) {
?>
<tr>
<td>#<?php echo $info['id']; ?></td>
<td><?php echo $info['sujet']; ?></td>
<td><?php echo $ArrayPriorites[$info['priorite']]; ?></td>
<td><?php echo $info['etat'] == 1 ? "<span style='color:green;font-weight:bold'>Ouvert</span>" : "<span style='color:gray;font-weight:bold'>Fermé</span>"; ?></td>
<td>
<a href="<?php echo $UrlPage; ?>?action=afficher&amp;id=<?php echo $info['id']; ?>">Afficher ce ticket</a>
<br />
<a href="<?php echo $UrlPage; ?>?action=fermer&amp;id=<?php echo $info['id']; ?>">Fermer ce ticket</a>
<br />
<a href="<?php echo $UrlPage; ?>?action=supprimer&amp;id=<?php echo $info['id']; ?>">Supprimer ce ticket</a>
<br />
</td>
</tr>
<?php
}
// en fin, on ferme notre table HTML:
?>
</table>
<?php
}
}
}
?>
</body>
</html>


Les tables SQL:


Code source (SQL)

--
-- Base de données : `tickets_support`
--

-- --------------------------------------------------------

--
-- Structure de la table `reponses`
--

CREATE TABLE IF NOT EXISTS `reponses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_ticket` int(11) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`message` text NOT NULL,
`poste_par` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Structure de la table `tickets`
--

CREATE TABLE IF NOT EXISTS `tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_membre` int(11) NOT NULL,
`mail_du_membre` varchar(150) NOT NULL,
`sujet` varchar(250) NOT NULL,
`message` text NOT NULL,
`priorite` tinyint(4) NOT NULL DEFAULT '0',
`etat` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

N'hésitez pas à poster un commentaire pour dire ce que vous en penser ou si il y a une erreur.

Commentaires

Merci beaucoup pour ce code, je cherchais depuis longtemps ce genre d'outil simple qui se résume à une page php qui peut très facilement être implanté sur un site qui possède un espace membre :)

Bonjour,

Est-ce que votre code est disponible avec les nouvelles requêtes PDO ? CAr je vois que c'est en mysql_query.

Merci d'avance pour votre réponse.

Bonjour,

Votre code à l'air intéressant mais j'ai une erreur à l'exécution.

La connexion se passe bien, celle que la requête SQL également, le formulaire s'affiche bien, mais dès que je clique sur "Envoyer" il y a le message "Une erreur s'est produite", j'ai affiché les erreurs PHP, check les logs, et rien d'anormal...
Savez-vous d'où ça pourrait venir ?
Merci d'avance.

Bonjour, il vous faut "débuguer" au fur et à mesure le script, inscrivez un 1 après "Une erreur s'est produite, merci de réessayer" pour savoir d'où vient cette erreur (il y a deux fois "Une erreur s'est produite, merci de réessayer" dans le script donc marquez un 1 au premier puis un 2 au second.

Avez vous bien enregistré la page au format .php ?

Bonjour ITMang, vue que le code s'utilise sur une seule page, oui il y a pas besoin de compatibilité.

PS: ce script utilise la dernière version de mysql: mysqli donc pas de souci avec les version que vous utilisez.


// on vérifie si le choix de la priorité est correcte:
if(!preg_match("#^(1|2|3)$#",$_POST['priorite'])) {
echo "<p>Le choix de la priorité est incorrect.</p>";
} else {
//on vérifie l'adresse mail
if(!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z]{2,6}$#",$_POST['mail'])) {
echo "<p>Le mail est incorrect.</p>";
} else {
// tous les champs sont correctement renseignés, on insère le message dans la bdd et on informe l'administrateur (vous) qu'un nouveau ticket est ouvert:
// on sécurise les champs avant de les insérer:
$Sujet = htmlent($_POST['sujet']);
$Message = nl2br(htmlent($_POST['message'])); // la fonction nl2br() permet d'afficher des saut de ligne par des (saut de ligne html)
$Priorite = $_POST['priorite'];
$Mail = htmlent($_POST['mail']);
if(mysqli_query($mysqli,"INSERT INTO tickets SET
id_membre = ".$IdMembre.",
mail_du_membre='".$Mail."',
sujet = '".$Sujet."',
message = '".$Message."',
priorite = ".$Priorite.",
etat = 1")) {
echo "<p>Ticket ajouté avec succès !

Une réponse vous sera délivrée dans les plus brefs délais.</p>";
envoyerMail($MailAdmin, 'Nouveau ticket', 'Nouveau ticket disponible');
$AfficherFormulaire = 0;
} else {
echo "<p>Une erreur s'est produite, merci de réessayer. 1</p>";
}


Bonjour, le message d'erreur affiché vient de ce code.

en dessous de cette ligne:

Code source (PHP)

echo "<p>Une erreur s'est produite, merci de réessayer. 1</p>";


Mettez:

Code source (PHP)

echo mysqli_error($mysqli);//affichera l'erreur retournée par MySQL

Bonjour,


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@mon-teamspeak.fr, mail_du_membre='support@mon-team' at line 2


Une erreur de syntaxe apparemment.

votre id_membre doit correspondre à un entier et non du texte, d'où l'erreur à ...'@mon-teamspeak.fr,...

Le problème c'est que mon $_SESSION['login']; correspond à une adresse e-mail, et je n'ai pas de $_SESSION['id']; (Je ne sais pas comment procéder pour activer celui-ci).

J'ai réussi à faire mon session ID, en revanche je ne peux pas répondre au ticket, je le vois bien, mon ID dans la bdd est bien le 1, et je vois bien le ticket ouvert par le client, mais quand je clique afficher ce ticket, ça marque "Ce ticket n'existe pas (ou plus) ou n'est pas le votre".

essayez de recréer un ticket et collez l'url du ticket que vous n'arrivez pas à visionner ici

https://lien-de-monsite.fr/index.php?page=ticket&action=afficher&id=3

Côté client tout fonctionne bien, en revanche côté admin j'ai toujours le "Visualisation du ticket
Le ticket demandé n'existe pas (ou plus) ou n'est pas le votre."

Bonjour,

au niveau de $IdAdmin à la configuration, en haut du code source, mettez bien votre id tel qu'il est dans la base de données dans votre table "membres" (ou users, suivant ce que vous avez utilisé comme nom.

J'ai eu moi aussi ce problème mtn résolus.
Remplacer

$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket." AND id_membre = ".$IdMembre);

Par
$req = mysqli_query($mysqli,"SELECT * FROM tickets WHERE id = ".$IdTicket.($IdMembre==$IdAdmin?"":" AND id_membre = ".$IdMembre));

Merci pour le code de ce système de ticket qui est vraiment simple a integrer sur une page web.

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * six × = 30

Les champs marqués d'un * sont obligatoires.

Retour à la liste des scripts

Flag Counter