JeuWeb - Crée ton jeu par navigateur
Fonction suppresion des MP - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Fonction suppresion des MP (/showthread.php?tid=3197)



Fonction suppresion des MP - fenix - 22-10-2008

Bonjours,
voila j'ai voulu faire un formulaire pour la messagerie avec un checkbox pour cocher toutes les autres.
seulement voila en fesant cela j'ai du modifier le code et maintenant la fonction de suppresion des MP ne fonctionnent plus et je n'arrive pas a trouver d'alternative.

voici les codes :
Code PHP :
<?php 
function inbox() {
global
$userrow, $controlrow;
$query = doquery("SELECT * FROM {{table}} WHERE owner='$userrow[id]' ORDER BY date DESC LIMIT 50", "mail");
$page = "
<script>

function selectall(cas,choix){

if(choix.length>0){
if (cas.checked){
for (var i=0; i<choix.length;i++){
choix[i].checked=true
}
}
else{
for (var i=0; i<choix.length;i++){
choix[i].checked=false
}
}
}
else{
if (cas.checked){
choix.checked=true
}
else{
choix.checked=false
}
}
}</script>
<form name=\"formulaire\" method=\"POST\" action=\"mail.php?do=Supprimer le(s) message(s)\">
<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\">
<tr><th colspan=\"4\" style=\"background-color:#dddddd;\"><center>Messagerie interne</center></th></tr>
<tr><th width=\"50%\" style=\"background-color:#dddddd;\">Lettre(s)</th><th width=\"20%\" style=\"background-color:#dddddd;\">Auteur</th>
<th width=\"20%\" style=\"background-color:#dddddd;\">Date</th><th style=\"background-color:#dddddd;\">Suprimer</th></tr>\n"
;
$count = 1;
if (
mysql_num_rows($query) == 0) {
$page .= "<tr><td style=\"background-color:#ffffff;\" colspan=\"4\"><b>Aucun message dans la boîte de réception</b></td></tr>\n";
} else {
while (
$row = mysql_fetch_array($query)) {
$query2 = doquery("SELECT * FROM {{table}} WHERE id='$row[sender]'", "users");
$author = mysql_fetch_array($query2);
$update = doquery("update {{table}} set newmessage='0' Where id='".$userrow["id"]."'", "users");
$rien = $row["id"];
if (
$count == 1) {
$page .= "<tr><td style=\"background-color:#ffffff;\"><a href=\"mail.php?do=Lire le message:".$row["id"]."\">".$row["title"]."</a></td><td style=\"background-color:#ffffff;\"><a href=\"index.php?do=onlinechar:".$author["id"]."\">".$author["username"]."</a></td><td style=\"background-color:#ffffff;\">".$row["date"]."</td><td style=\"background-color:#ffffff;\"><input type=\"checkbox\" name=\"choix\" value=\"".$row["id"]."\" /></td></tr>\n";
$count = 2;
} else {
$page .= "<tr><td style=\"background-color:#eeeeee;\"><a href=\"mail.php?do=Lire le message:".$row["id"]."\">".$row["title"]."</a></td><td style=\"background-color:#eeeeee;\"><a href=\"index.php?do=onlinechar:".$author["id"]."\">".$author["username"]."</a></td><td style=\"background-color:#eeeeee;\">".$row["date"]."</td><td style=\"background-color:#eeeeee;\"><input type=\"checkbox\" name=\"choix\" value=\"".$row["id"]."\" /></td></tr>\n";
$count = 1;
}
}

}
$page .= "</table></td></tr></table>";
$page .= "<table><tr><td><input type=\"submit\" name=\"do\" value=\"Nouveau message\" /></td><td><input type=\"submit\" name=\"do\" value=\"Supprimer le(s) message(s)\" /></td>";
if (
$userrow["authlevel"] == 1)
$page .= "<td><input type=\"submit\" name=\"do\" value=\"Email de masse\" /></td>";
$page .= "</tr></table><br>
<input type=\"checkbox\" name=\"all\" onclick=\"selectall(document.formulaire.all,document.formulaire.choix)\"> : Tout cocher</form>"
;
display($page, "Messagerie -- Boîte de réception");
}

Code PHP :
<?php 
function delete_mail($id) {
global
$userrow;

if (
$_POST['do'] == 'Nouveau message') {
header("Location: mail.php?do=Nouveau message");
die();
}
if (
$_POST['do'] == 'Email de masse') {
header("Location: mail.php?do=Email de masse");
die();
}

foreach(
$_POST as $a => $b) {
if (
$a != "do")
doquery("DELETE FROM {{table}} WHERE id={$a}", "mail");
}
header("Location: mail.php");
die();
}


je ne sais pas pas trop par ou passer. une nouvelle boucle peut etre ou un sys que je ne connait pas encore


RE: Fonction suppresion des MP - pascal - 22-10-2008

fais attention, avec ce code, si'lon met l'id d'un message au hasard, on peut supprimer les messages des autres membres. il faut aussi vérifier qui est le destinataire du message.

A+

Pascal


RE: Fonction suppresion des MP - fenix - 22-10-2008

la fonction n'affiche pas le $id dans la barre d'adresse juste ceci :
http://negima-rpg.net/mail.php?do=Supprimer%20le(s)%20message(s)

et pour le reste les fonction de lecture des mail et autre verifie si le message est bien destiné a ce joueur


RE: Fonction suppresion des MP - Zamentur - 22-10-2008

oui mais on peut trés bien envoyer un faux formulaire en POST et çà n'apparait effectivement pas dans la barre d'adresse.


RE: Fonction suppresion des MP - fenix - 25-10-2008

en gros vous me conseillez de refaire tout le code
c'est bien ça ?


RE: Fonction suppresion des MP - z3d - 25-10-2008

Voici ton code aéré, indenté, utilisant avec ingéniosité les simples et doubles quotes.
N'est-il pas plus agréable d'avoir à lire ce qui suis ? De plus, cela te permettra de localiser plus facilement les bogues et/ou d'apercevoir des améliorations possibles.
Code PHP :
<?php
function inbox()
{
global
$userrow, $controlrow;

$query = doquery("SELECT * FROM {{table}} WHERE owner = '".$userrow['id']."' ORDER BY date DESC LIMIT 50", 'mail');
$page =
'<script type="text/js">
function selectall(cas, choix)
{
if(choix.length > 0) {
if(cas.checked) {
for(var i = 0; i < choix.length; i++) { choix[i].checked = true }
} else {
for(var i = 0; i < choix.length; i++) { choix[i].checked = false }
}
} else {
if(cas.checked) { choix.checked = true
} else { choix.checked = false }
}
}
</script>'
.
'<form name="formulaire" method="post" action="mail.php?do=supprimer_les_messages">'.
'<table width="100%">'.
'<tr>'.
'<td style="padding:1px; background-color:black;">'.
'<table style="margins:0px;" cellspacing="1" cellpadding="3">'.
'<tr>'.
'<th colspan="4" style="background-color:#dddddd;"><center>Messagerie interne</center></th>'.
'</tr>'.
'<tr>'.
'<th width="50%" style="background-color:#dddddd;">Lettre(s)</th>'.
'<th width="20%" style="background-color:#dddddd;">Auteur</th>'.
'<th width="20%" style="background-color:#dddddd;">Date</th>'.
'<th style="background-color:#dddddd;">Supprimer</th>'.
'</tr>';
$count = 1;
if(
mysql_num_rows($query) === 0) {
$page .= '<tr>'.
'<td style="background-color:#ffffff;" colspan="4">'.
'<b>Aucun message dans la boîte de réception</b>'.
'</td>'.
'</tr>';
} else {
while(
$row = mysql_fetch_array($query))
{
$query2 = doquery("SELECT * FROM {{table}} WHERE id = '".$row['sender']."'", "users");
$author = mysql_fetch_array($query2);
$update = doquery("update {{table}} set newmessage = 0 WHERE id = '".$userrow['id']."'", "users");
$rien = $row['id'];
if(
$count === 1)
{
$page .= '<tr>'.
'<td style="background-color:#ffffff;">'.
'<a href="mail.php?do=Lire le message:'.$row['id'].'">'.$row['title'].'</a>'.
'</td>'.
'<td style="background-color:#ffffff;">'.
'<a href="index.php?do=onlinechar:'.$author['id'].'>'.$author['username'].'</a>'.
'</td>'.
'<td style="background-color:#ffffff;">'.$row['date'].'</td>'.
'<td style="background-color:#ffffff;">'.
'<input type="checkbox" name="choix" value="'.$row['id'].'" />'.
'</td>'.
'</tr>';
$count = 2;
} else {
$page .= '<tr>'.
'<td style="background-color:#eeeeee;">'.
'<a href="mail.php?do=Lire le message:'.$row['id'].'">'.$row['title'].'</a>'.
'</td>'.
'<td style="background-color:#eeeeee;">'.
'<a href="index.php?do=onlinechar:'.$author['id'].'">'.$author['username'].'</a>'.
'</td>'.
'<td style="background-color:#eeeeee;">'.$row['date'].'</td>'.
'<td style="background-color:#eeeeee;">'.
'<input type="checkbox" name="choix" value="'.$row['id'].'" />'.
'</td>'.
'</tr>';
$count = 1;
}
}
}
$page .=
'</table>'.
'</td>'.
'</tr>'.
'</table>'.

'<table>'.
'<tr>'.
'<td><input type="submit" name="do" value="Nouveau message" /></td>'.
'<td><input type="submit" name="do" value="Supprimer les messages" /></td>'.
(
$userrow['authlevel'] == 1 ?
'<td><input type="submit" name="do" value="Email de masse" /></td>' : '').
'</tr>'.
'</table>'.
'<br />'.
'<input type="checkbox" name="all" onclick="selectall(document.formulaire.all, document.formulaire.choix)">'.
' : Tout cocher'.
'</form>';

display($page, "Messagerie -- Boîte de réception");
}
?>