arkilon Posté 31 Août 2006 Posté 31 Août 2006 Bonjour, Aprés m"etre creuser la tete et fais de nombreuses recherche sur google je me decide a poster car la je bloque mon script de messagerie interne fonctionne et cela sans probleme, toutefois je me suis penché sur l'idee de mettre des pieces jointes avec et la je bloque... je n'ai trouvé sur google aucun lien, sur les forums peu de chose non plus voir meme rien du tout. Ma table message contient msgID, fromUserID, titre, message, date, msg,ParID, piecejointe si quelqu'un a vu passer ce genre de script ou a une idee je suis preneur merci
Jeromnimo Posté 31 Août 2006 Posté 31 Août 2006 bonjour, heuu une idée rapide comme ça au passage : pourquoi ne pas faire un dossier contenant les pièces jointes (que tu renommes avec un identifiant unique, et tu conserve le vrai nom dans ta BDD). Tu stockes aussi le nom généré dans ta base, et comme ça pour la retrouver, tu n'as plus qu'à aller voir dans ton repertoire de piece jointe, et chercher le fichier dont le nom correpond à celui de la base... (j'ai pas cherché de script, donc y'a peut etre quelque chose de déjà fait qui fonctionne ;-) ) Question à part : à quoi sert ton champ parID dans ta table ?
arkilon Posté 31 Août 2006 Auteur Posté 31 Août 2006 (modifié) Bon deja quand on parle d'un script c mieux si on le pose : edit oups pardon ouais y manque des bouts a mon message deja erreur de ma part c'est msgparid et pas msg, parid Alors les pieces jointes doivent etre stocké dans un dossier a par et je pensais utiliser l'Idmsg afin de lier la pj au message et de retrouver le msg dans une autre table avec en reference l'id du msg function upload ($Userid, $userfile_size, $userfile_type, $msgID, $type, $defaut ) <?php/************************************************************</* Messages Fonctions diverses** Fonctions :* * * - formulaireMessage($ref_dossier) : * */***********************************************************/// $modeformulaire : creer - mode creation// - voir : lecture - permet de repondre// - relire : lecture sans bouton pour répondre ( cas d'un mssage envoyé)// - repondre au message $ficheID// $special = 'dossier' 'commande' // La variable $special permet de préciser si le message est rattaché a un dossier par exemple// $ref : précisera le numéro de dossier, ou le parametre a transmettre avec $specialfunction EditerMessage($modeformulaire, $ficheID = '0',$special='',$ref=0){ global $sessid, $sesscode; global $uid; // 3 modes d'affichages // Creer, Modifer, voir // Affichage : on affiche le formulaire, mais tous les champs sont marqués en READONLY if ($modeformulaire == 'voir') $readonly = 'readonly'; else $readonly = ''; switch ($modeformulaire) { case 'creer': $contactID = 'creation'; $titre = stripslashes($_POST['titre']); $message = stripslashes($_POST['message']); $destinataire = $_POST['destinataire']; break; case 'voir' : case 'relire': // tester si c'est le destinataire case 'repondre': case 'modifier' : // $requeteFiche="Select * from $TABLE_rubrique WHERE rubriqueID=\"$rubriqueID\""; // $fiche=DB_RequeteBase($requeteFiche); $reqMsg=MCI_safe_query("SELECT * FROM MCI_msgtable WHERE msgID=\"$ficheID\""); $fichemessage=mysql_fetch_array($reqMsg); // on cherche a savoir si l'utilisateur qui lit est bien le destinataire $reqUser=MCI_safe_query("SELECT date_lecture FROM MCI_msgsend WHERE msgID=\"$ficheID\" AND toUserID=\"$uid\""); if ( list($date_lecture)=mysql_fetch_array($reqUser) ) { if ($date_lecture=='0000-00-00 00:00:00') { // 1ere lecture - Mettre a jour la fiche $rightnow=date("Y-m-d H:i:s"); $lecture=MCI_safe_query("UPDATE MCI_msgsend SET date_lecture=\"$rightnow\" WHERE msgID=\"$ficheID\" AND toUserID=\"$uid\""); } } // Cas d'un message systeme // on verif qu'il s'agit d'un message systeme // si oui, on insere une entrée dans msgsend pour indiquer l'heure de lecture par l'utilisateur en cours $reqMsgSys=MCI_safe_query("SELECT date_lecture FROM MCI_msgSystem AS sys LEFT JOIN MCI_msgsend AS lu ON (lu.msgID=sys.msgID) WHERE sys.msgID=\"$ficheID\" "); if ( list($msgID)=mysql_fetch_array($reqMsgSys) ) { // si date_lecture est vide, alors le message n'a pas encore été lu par l'utilisateur if ($date_lecture=='') { $rightnow=date("Y-m-d H:i:s"); $lecture=MCI_safe_query("INSERT INTO MCI_msgsend SET date_lecture=\"$rightnow\" , msgID=\"$ficheID\" , toUserID=\"$uid\""); } } $msgID = $ficheID; $fromUserID= $fichemessage['fromUserID']; $titre = stripslashes($fichemessage['titre']); $message = stripslashes($fichemessage['message']); $date_envoi= $fichemessage['date']; $piece_jointe_id = stripslashes($fichemessage['piecejoinjte']); $msgParID = $fichemessage['msgParID']; $readonly='readonly'; break; default: } if ($modeformulaire=='repondre') { $message_origine=$message; $message=""; $titre="Re : ".$titre; $destinataire=$fromUserId; $readonly=''; } $disp = ''; $disp .= "<form name='formContact' action='$PHPSELF' method=POST>";// $disp .= '<a href="#p1" class="toggle">Infos</a> | <a href="#p2" class="toggle">Commentaires</a> | <a href="#p3" class="toggle">Appels</a> | <a href="#p4" class="toggle">Groupes</a>'; $disp .= '<div id="skform">'; $disp .= session_form(); // Indiquer le destinataire if ($modeformulaire=='creer') { $disp.= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp.= '<span class="col2"><b>Nouveau message</b></span>'; $disp.= '</div>'; //$disp .= '<div style="float:left;margin-left:50px;margin-right:20px;">'; $disp.= '<div class="row">'; $disp .= "<label class='col1'>Destinataire :</label>"; $boite_select='<br><select name="destinataire[]" '.$readonly.' multiple size=\'15\'><option value="-1">-------------</option>'; $utilisateurs=MCI_safe_query("SELECT uid,login,nom,prenom FROM MCI_utilisateur WHERE type!='Profil' ORDER BY nom"); while(list($user_id,$login,$nom,$prenom)=mysql_fetch_array($utilisateurs)){ $boite_select.="<option value='$user_id'>$nom $prenom</option>"; } // while $boite_select.='</select>'; $disp .= "<span class='col2'>$boite_select</span>"; $disp .= "</div>\n"; //$disp.='<div style="float:right;">'; } if ($modeformulaire=='repondre'){ $utilisateurs=MCI_safe_query("SELECT uid,login,nom,prenom FROM MCI_utilisateur WHERE uid=\"$fromUserID\""); list($user_id,$login,$nom,$prenom)=mysql_fetch_array($utilisateurs); $disp .= '<div class="row">'; $disp .= "<label class='col1'>Destinataire :</label>"; $disp .= "<span class='col2'>$nom $prenom </span>"; $disp .= "</div>\n"; mysql_free_result($utilisateurs); // transmettre la valeur du destinataire // transmis comme un tableau ( meme si le destinataire est ici unique) // ( pour n'avoir qu'un seul code de traitement) $disp .= "<input type='hidden' name='destinataire[]' value=\"$fromUserID\">"; } // Si message rattaché à un dossier // transmettre en champ caché le dossier // Si on est dans le cas d'une réponse, on regarde si le message parent est un message deja rattaché // a un dossier. Si c'est le cas , on recupere les infos. $attachDossier=MCI_safe_query("Select ref_dossier from MCI_msgdossiers WHERE msgID=\"$ficheID\""); if (list($ref_dossier)=mysql_fetch_array($attachDossier)) { $special='dossier'; // on passe dans le cas dossier $ref=$ref_dossier; } if ($special=='dossier') { if ($modeformulaire=='creer') $titre="Dossier $ref : ".$titre; // indiquez si public ou privé if ($modeformulaire=='creer') { $disp_mode='<select name="prive" style="font-family : monospace; font-size : 7pt"><option value="0">public</option><option value="1">privé</option></select>'; } else { // on hérite du message parent list($prive)=mysql_fetch_array(MCI_safe_query("SELECT prive FROM MCI_msgdossiers WHERE msgID=\"$ficheID\"")); $disp.="<input type='hidden'name='prive' value='$prive'>"; if ($prive==0) $disp_mode='public'; else $disp_mode='privé'; } $disp .= "<input type='hidden' name='dossier' value='$ref'>"; $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'>Message $disp_mode rattaché au dossier $ref</span>"; $disp .= "</div>\n"; } // Sujet du message $disp .= '<div class="row">'; $disp .= "<label class='col1'>Sujet :</label>"; if ($modeformulaire!='voir') $disp .= "<span class='col2'><input name='titre' value=\"$titre\" size='50' $readonly></span>"; else $disp.="<span class='col2'><b>$titre</b></span>"; $disp .= "</div>\n"; if ($modeformulaire=='voir') { $utilisateurs=MCI_safe_query("SELECT uid,login,nom,prenom FROM MCI_utilisateur WHERE uid=\"$fromUserID\""); list($user_id,$login,$nom,$prenom)=mysql_fetch_array($utilisateurs); $disp .= '<div class="row">'; $disp .= "<label class='col1'>Exp. :</label>"; $disp .= "<span class='col2'>$nom $prenom - $date_envoi</span>"; $disp .= "</div>\n"; // reafficher le destinataire - pour impression $utilisateurs=MCI_safe_query("SELECT uid,login,nom,prenom FROM MCI_utilisateur WHERE uid=\"$uid\""); list($user_id,$login,$nom,$prenom)=mysql_fetch_array($utilisateurs); $disp .= '<div class="row">'; $disp .= "<label class='col1'>Dest. :</label>"; $disp .= "<span class='col2'>$nom $prenom </span>"; $disp .= "</div>\n"; mysql_free_result($utilisateurs); } // Message $disp .= '<div class="row">'; $disp .= "<label class='col1'>Message :</label>"; if ($modeformulaire!='voir')$disp .= "<span class='col2'><textarea name='message' cols='60' rows='10' $readonly>$message</textarea></span>"; else $disp.='<span class="col2">'.nl2br($message).'</span>'; $disp .= "</div>\n"; // rappeler message d'origine et transmettre le numéro d'ID parent if ($modeformulaire=='repondre') { $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'><b>Rappel du message reçu : </b><br>$message_origine</span>"; $disp .= "</div>\n"; $disp.="<input type='hidden' name='msgParID' value='$ficheID'>"; } // afficher les boutons d'action if ($modeformulaire == 'voir') { // Transmettre en hidden le numero du message Parent $disp .= "<input type='hidden' name='msgID' value='$ficheID'>"; // Inclure le bouton Répondre $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'><input type='submit' name='bouton' value='répondre'></span>"; $disp .= "<span class='col2'><input type='hidden' name='action' value='lire'></span>"; $disp .= "<span class='col2'><input type='hidden' name='sousaction' value='repondre'></span>"; $disp .= "</div>\n"; } if ($modeformulaire == 'creer' ) { $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'><input type='submit' name='bouton' value='envoyer'></span>"; $disp .= "<span class='col2'><input type='hidden' name='action' value='creer'></span>"; $disp .= "<span class='col2'><input type='hidden' name='sousaction' value='envoyer'></span>"; $disp .= "</div>\n"; } if ($modeformulaire == 'repondre' ) { $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'><input type='submit' name='bouton' value='envoyer'></span>"; $disp .= "<span class='col2'><input type='hidden' name='action' value='lire'></span>"; $disp .= "<span class='col2'><input type='hidden' name='sousaction' value='validerrepondre'></span>"; $disp .= "</div>\n"; } //if ($modeformulaire=='creer') $disp.='</div>'; $disp .= '<div class="row">'; $disp .= "<label class='col1'></label>"; $disp .= "<span class='col2'><br><br><a href='java script:history.back()'>Retour Page précédente</a></span>"; $disp .= "</div>\n"; $disp .= '</div>'; // fin div id=skform $disp .= '</form>'; echo $disp;} function ValiderMessage($modeformulaire){ global $sessid, $sesscode; global $uid; if ((!isset($_POST["destinataire"])) || $_POST['destinataire'] == "") $erreurs[] = "Indiquez un destinataire"; if ((!isset($_POST["titre"])) || $_POST['titre'] == "") $erreurs[] = "Merci de donner un titre à votre message"; if ((!isset($_POST["message"])) || $_POST['message'] == "") $erreurs[] = "Votre message est vide"; if (!count($erreurs)) { // Champs communs pour une insertion ou une modification $date_rightnow = date("Y-m-d H:i:s"); $requeteSQL = " fromUserID=\"$uid\", titre = '" . FORM_FormateEntree($_POST['titre']) . "', message = '" . FORM_FormateEntree($_POST['message']) . "', date=\"$date_rightnow\" "; // Creation de la requete SQL en entier switch ($modeformulaire) { case 'creer': // Ajout des champs complétmentaires //$requeteSQL = "date_inscription='$date_today'," . $requeteSQL; // Creation de la commande d'insertion $requeteSQL = "INSERT into MCI_msgtable SET " . $requeteSQL; break; case 'repondre': // ajouter le message parent $requeteSQL = "msgParID='" . $_POST['msgParID'] . "'," . $requeteSQL; $requeteSQL = "INSERT into MCI_msgtable SET " . $requeteSQL; break; case 'modifier': $requeteSQL = "UPDATE MCI_msgtable SET " . $requeteSQL; $requeteSQL .= "WHERE contactID='{$_POST['ficheID']}'"; break; } // Fin switch $resultDB = MCI_safe_query($requeteSQL); if ($modeformulaire=='creer' || $modeformulaire=='repondre') $ficheID = mysql_insert_id(); else $ficheID=$_POST['ficheID']; // Remplir la table des destinataires $destinataires=$_POST['destinataire']; if ($destinataires){ foreach ($destinataires as $destID){ $requeteEnvoi="INSERT INTO MCI_msgsend SET msgID=\"$ficheID\", toUserID='" . $destID . "' "; $envoi=MCI_safe_query($requeteEnvoi); } } // traiter les cas spéciaux // message d'un dossier if (isset($_POST["dossier"])){ $requeteEnvoi="INSERT INTO MCI_msgdossiers SET msgID=\"$ficheID\", ref_dossier='" . $_POST['dossier'] . "', prive='" . $_POST['prive'] . "' "; $envoi=MCI_safe_query($requeteEnvoi); } echo ".....Message envoyé"; // Envoyer une notification au destinataire // si le champ notification est a oui $requete_notification=MCI_safe_query("SELECT notification,email FROM MCI_utilisateur WHERE uid=\"$destID\" "); if ( list($notification,$email)=mysql_fetch_array($requete_notification) ) { if ($notification=='oui') { $expediteur=MCI_safe_query("SELECT nom, prenom FROM MCI_utilisateur WHERE uid=\"$uid\" "); list($nom,$prenom)=mysql_fetch_array($expediteur); $to_email=$email; $from_email='arkilon_AT_yahoo.fr; $reply_email='no-reply_AT_free.fr; $sujet="Intra : ".$_POST['titre']; $signature_email="\n\n\n==========================================\n\n==========================================\n\n\n"; $message="Vous avez reçu un nouveau message dans l'intranet.\n\n"; $message.="\n Copie du message :\n"; $message.="\n -------------------------------------------------------"; $message.="\nExpéditeur : $prenom $nom\n\n"; $message.=$_POST['message']; $message.="\n -------------------------------------------------------"; $message.="\n Merci d'utiliser l'intranet pour répondre à ce message"; $entetedate = date("D, j M Y H:i:s -0000"); // avec offset horaire -0600 decalage 6 heures $entetemail = "From: $from_email \n"; // Adresse expéditeur $entetemail .= "Reply-To: $reply_email \n"; // Adresse de retour - Par defaut sur l'email fourni par l'internaute repondant $entetemail .= "X-Mailer: MaxChaoulProd/" . phpversion() . "\n" ; $entetemail .= "Date: $entetedate"; mail($to_email,$sujet,$message,$entetemail); echo "<br>..... Notification envoyée."; } } listing(); } else { foreach($erreurs as $val) { echo "<LI><div class='erreur'>$val</div></LI>"; } EditerMessage($modeformulaire, $_POST['ficheID']); } // fin else}///////////////////////////////////////////////////////////// function listing()// // ////////////////////////////////////////////////////////function listing(){global $uid; // Afficher la liste des messages recus $msgRecus=MCI_safe_query("SELECT msg.msgID,titre,date,date_lecture,fromUserID,nom,prenom FROM MCI_msgsend AS send LEFT JOIN MCI_msgtable AS msg ON (msg.msgID=send.msgID) LEFT JOIN MCI_utilisateur AS user ON (user.uid=msg.fromUserID) WHERE toUserID=\"$uid\" AND fromUserID<>'0' ORDER BY date DESC LIMIT 200"); //AND msgParID='0' $disp_recus='<div id="p1">'; $disp_recus.='<b>Messages recus</b>'; $disp_recus.='<ul class="listeMessages">'; while( list($msgID,$titre,$date,$date_lecture,$fromUserID,$nom,$prenom)=mysql_fetch_array($msgRecus)) { $titre=stripslashes($titre); $nom=stripslashes($nom); $prenom=stripslashes($prenom); $url= session_url("messages.php?action=lire&msgID=".$msgID); if ($date_lecture=='0000-00-00 00:00:00') { $disp_recus=$disp_recus."<li><b><a href='$url'>$titre</a> - $nom $prenom - $date - Non Lu</b></li>"; } else $disp_recus=$disp_recus."<li><a href='$url'>$titre</a> - $nom $prenom - $date - Lu :$date_lecture</li>"; } $disp_recus.='</ul>'; $disp_recus.='</div>'; // Messages envoyés // Afficher la liste des messages envoyés $msgRecus=MCI_safe_query("SELECT msg.msgID,titre,date,date_lecture,fromUserID,nom,prenom FROM MCI_msgsend AS send LEFT JOIN MCI_msgtable AS msg ON (msg.msgID=send.msgID) LEFT JOIN MCI_utilisateur AS user ON (user.uid=send.toUserID) WHERE fromUserID=\"$uid\" ORDER BY date DESC LIMIT 200"); $disp_envoyes='<div id="p2">'; $disp_envoyes.='<b>Messages Envoyés</b>'; $disp_envoyes.='<ul class="listeMessages">'; while( list($msgID,$titre,$date,$date_lecture,$fromUserID,$nom,$prenom)=mysql_fetch_array($msgRecus)) { $titre=stripslashes($titre); $nom=stripslashes($nom); $prenom=stripslashes($prenom); $url= session_url("messages.php?action=relire&msgID=".$msgID); if ($date_lecture=='0000-00-00 00:00:00') { $disp_envoyes=$disp_envoyes."<li><b><a href='$url'>$titre</a> - $nom $prenom - $date - Non Lu</b></li>"; } else $disp_envoyes=$disp_envoyes."<li><a href='$url'>$titre</a> - $nom $prenom - $date - Lu :$date_lecture</li>"; } $disp_envoyes.='</ul>'; $disp_envoyes.='</div>'; // Messages Systemes $id_menu_msgSystem = MCI_ValeurChampSimpleCle("MCI_menu", 'id_menu', 'url', 'matieres.php?action=msgSystem' , "silence"); if (check_niveau_acces($uid, $id_menu_msgSystem)) { $msgSys=MCI_safe_query("SELECT send.msgID,titre,date,toUserID,date_lecture FROM MCI_msgSystem AS msgSys LEFT JOIN MCI_msgtable AS send ON (msgSys.msgID=send.msgID) LEFT JOIN MCI_msgsend AS lu ON (msgSys.msgID=lu.msgID) WHERE fromUserID=\"0\" ORDER BY date DESC LIMIT 300"); $disp_system='<div id="p3">'; $disp_system.='<b>Messages Système</b>'; $disp_system.='<ul class="listeMessages">'; while( list($msgID,$titre,$date,$toUserID,$date_lecture)=mysql_fetch_array($msgSys)) { $titre=stripslashes($titre); $nom='System'; $prenom='Neosys'; $url= session_url("messages.php?action=lire&msgID=".$msgID); // on teste dans MCI_msgsend s'il existe un enregistrement de lecture pour l'utilisateur en cours // sinon la fiche n'existe pas' if ($toUserID='' || ($toUserID!=$uid) ) { $disp_system=$disp_system."<li><b><a href='$url'>$titre</a> - $nom $prenom - $date - Non Lu</b></li>"; } else $disp_system=$disp_system."<li><a href='$url'>$titre</a> - $nom $prenom - $date - Lu : $date_lecture</li>"; } $disp_system.='</ul>'; $disp_system.='</div>'; } // fin panel msg System $url= session_url("messages.php?action=creer"); $disp_entete="<a href='$url'>Créer un message</a><br><br>"; $disp_entete.='<ul class="onglets"> <li><a href="#p1" class="toggle">Messages reçus</a></li> <li><a href="#p2" class="toggle">Messages envoyés</a></li>'; if (check_niveau_acces($uid, $id_menu_msgSystem)) $disp_entete.='<li><a href="#p3" class="toggle">Messages Système</a></li>'; $disp_entete.='</ul>'; echo '<blockquote>'; echo $disp_entete; echo $disp_recus; echo $disp_envoyes; echo $disp_system; echo '</blockquote>';} ?> Modifié 31 Août 2006 par arkilon
Jeromnimo Posté 31 Août 2006 Posté 31 Août 2006 Je pense que les modérateurs ne vont pas trop aprécier ton message, et ce, pour deux raisons : * Quand tu mets un long code, mets une balise "code" autour, c'est plus propre ;-) * As-tu un début de recherche, une idée sur la manière dont tu veux envoyer stocker, joindre, retrouver les pièces jointes ??? Ce n'est pas en postant des lignes et des lignes de codes que tu obtiendras une réponse je pense...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant