Fusionner le post d'une news et un upload en PHP

Résolu/Fermé
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 - Modifié le 10 févr. 2018 à 23:06
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 - 1 mars 2018 à 19:41
Bonjour,

Alors voila j'ai mis en place 2 script php qui indépendamment fonctionnent parfaitement :
Le premier sert à poster des "news" dans un fichier txt via un formulaire et un fichier php
=> il suffit de remplir les champs et cliquer sur "envoyer"
Le second sert à uploader un fichier dans un répertoire sur mon serveur.
=> il suffit de choisir le fichier cliquer sur "Envoyer le fichier"

Ce que j'aimerais faire :
Je voudrais maintenant fusionner les deux actions afin que l'utilisateur n'ai qu'a sélectionner son fichier (ce qui ne doit pas être obligatoire) et cliquer sur "Envoyer" que le fichier soit envoyé et la news postée.

Voila les codes actuels :

Le formulaire auquel je veux donc fusionner les deux boutons envoyer :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Créer un ticket</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<script language="javascript" type="text/javascript">

function ajoutbalise(balise) {
if (balise == '<img src=\'URL\'>')
{var url = prompt("URL de l'image :","");
balise = '<img src=\'' + url +'\'>' ;
}
else if ( balise == '<a href=\'URL\'>Lien</a>')
{var url = prompt("URL du lien :","http://");
var lien = prompt("Nom du lien :","");
balise = '<a href=\'' + url +'\'>' + lien +'</a>';
}
var txtarea = document.formulaire.mess_news;
 text = ' ' + balise + '';
 if (txtarea.createTextRange && txtarea.caretPos) {
  var caretPos = txtarea.caretPos;
  caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  txtarea.focus();
 } else {
  txtarea.value  += text;
  txtarea.focus();
 }
}
</script>
<div align="center"><u><h1>Créer un ticket :</h1></u></div>
<form action="post.php" method="post" name="formulaire">

<br>
<br>

  <div align="center">
    
    <table width="454" border="0">
      <div align="right">
   <tr>
        <td width="448"><p align="center">Votre nom (ou nom du demandeur) : <br>


  <form action="/action_page.php" method="get">
  <input list="browsers" name="post_news" type="text" required size="50">
  <datalist id="browsers">
    <option value="Billy 0836656565">
    <option value="Julien 0836656565">
    <option value="Philippe 0836656565">
    <option value="Commercial1 0836656565">
    <option value="Commercial2 0836656565">
  </datalist>

</form>

  
  
  
  <p align="center">Priorité (urgence du ticket) : <br>
      
    
<SELECT name="titre_prio" size="1" type="option" required >
<OPTION>
<OPTION>3 (basse)
<OPTION>2 (haute)
<OPTION>1 (très haute)
</SELECT>


            </p>
            <p align="center">Résumé du ticket : <br><input name="titre_news" type="text" required size="50">
            </p>
<br>
    </td>
      </tr>
   </div>
    </table>

 
 
    <table width="100" border="0" bordercolor="#FFFFFF">
      <tr>
        <td><div align="center">
              
            <p><img src="../img/IMG-URL-BR-B-I.jpg" width="149" height="26" border="0" usemap="#MapMap"> 
              <img src="../img/Text_Color.jpg" width="64" height="66" border="0" usemap="#Map2"> 
              <map name="MapMap">
                <area shape="rect" coords="0,1,33,25" href="javascript:ajoutbalise('<img src=\'URL\'>')">
                <area shape="rect" coords="32,1,73,25" href="javascript:ajoutbalise('<a href=\'URL\'>Lien</a>')">
                <area shape="rect" coords="72,1,99,25" href="javascript:ajoutbalise('<BR> \n')">
                <area shape="rect" coords="99,2,122,26" href="javascript:ajoutbalise('<b></b>')">
                <area shape="rect" coords="122,1,149,25" href="javascript:ajoutbalise('<i></i>')">
              </map>
            </p>
          </div></td>
      </tr>
    </table>
    
      <map name="Map">
        <area shape="rect" coords="0,1,33,25" href="javascript:ajoutbalise('<img src=\'URL\'>')">
        <area shape="rect" coords="32,1,73,25" href="javascript:ajoutbalise('<a href=\'URL\'>Lien</a>')">
        <area shape="rect" coords="72,1,99,25" href="javascript:ajoutbalise('<BR> \n')">
        <area shape="rect" coords="99,2,122,26" href="javascript:ajoutbalise('<b></b>')">
        <area shape="rect" coords="122,1,149,25" href="javascript:ajoutbalise('<i></i>')">
      </map>
  <p> 
  
    <p><u>Description du ticket :</u></p>
      <textarea name="mess_news" cols="50" rows="10" required></textarea>
    </p>
  <p>
     <!-- transfert fichier -->
  <form method="POST" action="http://coukies.zapto.org:8005/FichiersUploader/upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 10000Ko -->
     <input type="hidden" value="10000000">  
    <input  type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
       <!-- fin transfert fichier -->
    <input type="submit" name="Submit" value="Envoyer">
  </p>
  </div>
</form>
<map name="Map2">
  <area shape="rect" coords="3,17,21,31" href="javascript:ajoutbalise('<font color=\'#FF0000\'></font>')">
  <area shape="rect" coords="3,33,21,47" href="javascript:ajoutbalise('<font color=\'#1800FF\'></font>')">
  <area shape="rect" coords="22,17,41,31" href="javascript:ajoutbalise('<font color=\'#FF9900\'></font>')">
  <area shape="rect" coords="23,33,41,47" href="javascript:ajoutbalise('<font color=\'#FF00DE\'></font>')">
  <area shape="rect" coords="3,49,21,63" href="javascript:ajoutbalise('<font color=\'#000000\'></font>')">
  <area shape="rect" coords="23,49,41,63" href="javascript:ajoutbalise('<font color=\'#999999\'></font>')">
  <area shape="rect" coords="42,17,61,31" href="javascript:ajoutbalise('<font color=\'#FFFF00\'></font>')">
  <area shape="rect" coords="43,33,61,47" href="javascript:ajoutbalise('<font color=\'#00FF06\'></font>')">
  <area shape="rect" coords="43,49,61,63" href="javascript:ajoutbalise('<font color=\'#FFFFFF\'></font>')">
</map>

</body>
</html>



Le fichier d'upload :
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 10000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extension = strrchr($_FILES['avatar']['name'], '.'); 
//Début des vérifications de sécurité...
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'le fichier à bien été envoyé au support informatique, merci !';
     echo '<br />';
 echo '<a href="http://coukies.zapto.org:8005">Retour</a>';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>


Et le formulaire de post pour ajouter la news :
<? 
touch("news.bdd"); // on cree le fichier si il existe pas

if(ereg("^(.+)@(.+)\\.(.+)$", $_POST["mail_news"]))
{
$_POST["post_news"] = "<a href='mailto:".$_POST["mail_news"]."'>".$_POST["post_news"]."</a>";
}
$_POST["mess_news"] = ereg_replace("\n", "<br>", $_POST["mess_news"]);
$News =  
"<br>=====================================<br>
<b>Créé par :</b> ".$_POST["post_news"]."<br>".
"<b>Résumé :</b> ".$_POST["titre_news"].
"<br><b>Priorité :</b> ".$_POST["titre_prio"].
"<br><b>Date :</b> ".date("d-m-Y H:i:s").
"<br><b>Description :</b><br> ".$_POST["mess_news"] ; 

$Fichier = 'news.bdd' ; //on regarde si le fichier existe 

//on charge le contenue actuel 
$Fichier_r = fopen($Fichier,"r+"); 
$contenue = fread($Fichier_r , filesize($Fichier)); 
fclose($Fichier_r); 

//on ecrit la nouvelle news puis l'ancien contenue 
$Fichier_w = fopen($Fichier,"w+"); // on ouvre le fichier 
fwrite($Fichier_w,stripslashes($News.
"<!-- *********** -->".
$contenue)); // on ecrit dans le fichier; 
fclose($Fichier_w); // on referme le fichier; 

?> 
Ticket créé pour voir les tickets actuellement ouverts <a href="voire.php">cliquez ici</a> <br>
Sinon pour revenir sur le dashboard <a href="../index.php">cliquez ici</a>
<!-- T-News par Tulkar -->  


Voici en image la visualisation des deux script utilisés indépendamment et ce que je voudrais avoir :
A voir également:

2 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
11 févr. 2018 à 11:58
bonjour, je pense qu'une bonne partie du travail sera de modifier le javascript, pas le PHP.
es-tu d'accord de transférer le sujet vers le forum javascript?
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 févr. 2018 à 15:02
Bonjour,

Aucun rapport avec le JS visiblement....

La première chose à faire, donc, est de n'avoir qu'un seule formulaire.
Et donc... UNE SEULE balise FORM
Balise form qui devra disposer d'un ENCTYPE

Donc place le enctype dans ton premier FORM
 enctype="multipart/form-data"> 


Ensuite, prend le code qui se situe dans ton fichier
http://coukies.zapto.org:8005/FichiersUploader/upload.php

Et place le dans ton autre fichier PHP (celui qui te sert à gérer tes news)

Une fois que cela sera fait... il faudra peut-être ajuster un peu ton code....
Si tu ne trouves pas... reviens nous voir avec ton code modifié.

NB : Applique ceci dans la rédaction de tes codes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
1
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 8
Modifié le 16 févr. 2018 à 16:17
Bonjour Jordane,
J'avais essayé de rassembler le fichier mais l'upload etait toujours en echec, sauf quand je clique sur le bouton "envoyer le fichier" et non celui que je souhaites "envoyer"
=> voici le code de mon code modifié "post.php" qui génére ma news et maintenant mon upload egallement :
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 10000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extension = strrchr($_FILES['avatar']['name'], '.'); 
//Début des vérifications de sécurité...
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'le fichier à bien été envoyé au support informatique, merci !';
     echo '<br />';
 echo '<a href="http://coukies.zapto.org:8005">Retour</a>';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>


<? 
touch("news.bdd"); // on cree le fichier si il existe pas

if(ereg("^(.+)@(.+)\\.(.+)$", $_POST["mail_news"]))
{
$_POST["post_news"] = "<a href='mailto:".$_POST["mail_news"]."'>".$_POST["post_news"]."</a>";
}
$_POST["mess_news"] = ereg_replace("\n", "<br>", $_POST["mess_news"]);
$News =  
"<br>=====================================<br>
<b>Créé par :</b> ".$_POST["post_news"]."<br>".
"<b>Résumé :</b> ".$_POST["titre_news"].
"<br><b>Priorité :</b> ".$_POST["titre_prio"].
"<br><b>Date :</b> ".date("d-m-Y H:i:s").
"<br><b>Description :</b><br> ".$_POST["mess_news"] ; 

$Fichier = 'news.bdd' ; //on regarde si le fichier existe 

//on charge le contenue actuel 
$Fichier_r = fopen($Fichier,"r+"); 
$contenue = fread($Fichier_r , filesize($Fichier)); 
fclose($Fichier_r); 

//on ecrit la nouvelle news puis l'ancien contenue 
$Fichier_w = fopen($Fichier,"w+"); // on ouvre le fichier 
fwrite($Fichier_w,stripslashes($News.
"<!-- *********** -->".
$contenue)); // on ecrit dans le fichier; 
fclose($Fichier_w); // on referme le fichier; 

?> 
Ticket créé pour voir les tickets actuellement ouverts <a href="voire.php">cliquez ici</a> <br>
Sinon pour revenir sur le dashboard <a href="../index.php">cliquez ici</a>


J'ai tenté de mettre ça dans le "post.php" mais j'obtiens un message "Cette page ne fonctionne pas" :
enctype="multipart/form-data"> 
0
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 8
16 févr. 2018 à 16:20
ok j'ai compris pardon je modifie mon formulaire et reviens ;D
0
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 8
16 févr. 2018 à 17:06
Bon bah je dois avouer que je n'arrive pas à modifier correctement mon formupost.php en ne laissant qu'une balise "FORM" la communauté CCM pourrait m'aider à modifier mon formulaire ? =)
J'ai essayé grace à ton commentaire de suivre les infos ici :


mais meme avec ça je n'y arrive pas.
https://www.la-grange.net/w3c/html4.01/interact/forms.html

Voici mon code actuel :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Créer un ticket</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<script language="javascript" type="text/javascript">

function ajoutbalise(balise) {
if (balise == '<img src=\'URL\'>')
{var url = prompt("URL de l'image :","");
balise = '<img src=\'' + url +'\'>' ;
}
else if ( balise == '<a href=\'URL\'>Lien</a>')
{var url = prompt("URL du lien :","http://");
var lien = prompt("Nom du lien :","");
balise = '<a href=\'' + url +'\'>' + lien +'</a>';
}
var txtarea = document.formulaire.mess_news;
	text = ' ' + balise + '';
	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		txtarea.focus();
	} else {
		txtarea.value  += text;
		txtarea.focus();
	}
}
</script>
<div align="center"><u><h1>Créer un ticket :</h1></u></div>
<form action="post.php" method="post" name="formulaire">

<br>
<br>

  <div align="center">
    
    <table width="454" border="0">
      <div align="right">
	  <tr>
        <td width="448"><p align="center">Votre nom (ou nom du demandeur) : <br>


		<form action="/action_page.php" method="get">
  <input list="browsers" name="post_news" type="text" required size="50">
  <datalist id="browsers">
    <option value="Billy 0836656565">
    <option value="Julien 0836656565">
    <option value="Philippe 0836656565">
    <option value="Commercial1 0836656565">
    <option value="Commercial2 0836656565">
  </datalist>

</form>

		
		
		
		<p align="center">Priorité (urgence du ticket) : <br>
						
				
<SELECT name="titre_prio" size="1" type="option" required >
<OPTION>
<OPTION>3 (basse)
<OPTION>2 (haute)
<OPTION>1 (très haute)
</SELECT>


            </p>
            <p align="center">Résumé du ticket : <br><input name="titre_news" type="text" required size="50">
            </p>
<br>
    </td>
      </tr>
	  </div>
    </table>

	
	
    <table width="100" border="0" bordercolor="#FFFFFF">
      <tr>
        <td><div align="center">
              
            <p><img src="../img/IMG-URL-BR-B-I.jpg" width="149" height="26" border="0" usemap="#MapMap"> 
              <img src="../img/Text_Color.jpg" width="64" height="66" border="0" usemap="#Map2"> 
              <map name="MapMap">
                <area shape="rect" coords="0,1,33,25" href="javascript:ajoutbalise('<img src=\'URL\'>')">
                <area shape="rect" coords="32,1,73,25" href="javascript:ajoutbalise('<a href=\'URL\'>Lien</a>')">
                <area shape="rect" coords="72,1,99,25" href="javascript:ajoutbalise('<BR> \n')">
                <area shape="rect" coords="99,2,122,26" href="javascript:ajoutbalise('<b></b>')">
                <area shape="rect" coords="122,1,149,25" href="javascript:ajoutbalise('<i></i>')">
              </map>
            </p>
          </div></td>
      </tr>
    </table>
    
      <map name="Map">
        <area shape="rect" coords="0,1,33,25" href="javascript:ajoutbalise('<img src=\'URL\'>')">
        <area shape="rect" coords="32,1,73,25" href="javascript:ajoutbalise('<a href=\'URL\'>Lien</a>')">
        <area shape="rect" coords="72,1,99,25" href="javascript:ajoutbalise('<BR> \n')">
        <area shape="rect" coords="99,2,122,26" href="javascript:ajoutbalise('<b></b>')">
        <area shape="rect" coords="122,1,149,25" href="javascript:ajoutbalise('<i></i>')">
      </map>
  <p> 
  
    <p><u>Description du ticket :</u></p>
      <textarea name="mess_news" cols="50" rows="10" required></textarea>
    </p>
  <p>
     <!-- transfert fichier -->
  <form method="POST" action="http://coukies.zapto.org:8005/FichiersUploader/upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 10000Ko -->
     <input type="hidden" value="10000000">  
    <input  type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
       <!-- fin transfert fichier -->
    <input type="submit" name="Submit" value="Envoyer">
  </p>
  </div>
</form>
<map name="Map2">
  <area shape="rect" coords="3,17,21,31" href="javascript:ajoutbalise('<font color=\'#FF0000\'></font>')">
  <area shape="rect" coords="3,33,21,47" href="javascript:ajoutbalise('<font color=\'#1800FF\'></font>')">
  <area shape="rect" coords="22,17,41,31" href="javascript:ajoutbalise('<font color=\'#FF9900\'></font>')">
  <area shape="rect" coords="23,33,41,47" href="javascript:ajoutbalise('<font color=\'#FF00DE\'></font>')">
  <area shape="rect" coords="3,49,21,63" href="javascript:ajoutbalise('<font color=\'#000000\'></font>')">
  <area shape="rect" coords="23,49,41,63" href="javascript:ajoutbalise('<font color=\'#999999\'></font>')">
  <area shape="rect" coords="42,17,61,31" href="javascript:ajoutbalise('<font color=\'#FFFF00\'></font>')">
  <area shape="rect" coords="43,33,61,47" href="javascript:ajoutbalise('<font color=\'#00FF06\'></font>')">
  <area shape="rect" coords="43,49,61,63" href="javascript:ajoutbalise('<font color=\'#FFFFFF\'></font>')">
</map>

</body>
</html>

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 16 févr. 2018 à 19:21
Dans le code que tu nous montres...
Il y a encore DEUX FORM
<form action="post.php" method="post" name="formulaire">

et
<form action="/action_page.php" method="get">


Ah NON ... rectification ... tu as TROIS FORM...
Il y a aussi celui la :
<form method="POST" action="http://coukies.zapto.org:8005/FichiersUploader/upload.php" enctype="multipart/form-data">


Qu'est-ce que tu n'as pas compris lorsque je t'ai indiqué de n'en mettre qu' UN SEUL ?
Ce n'est pourtant pas sorcier....

Pour être plus clair...
Tu prends TOUT le code HTML de ton formulaire (y compris la gestion des fichiers...) ( mais SANS LES BALISES FORM bien entendu... )
et tu le place entre la balise form
<form method="POST" action="traitement.php" enctype="multipart/form-data">
   
   <!-- ICI TU PLACE TON CODE HTML DE TON FORMULAIRE ! -->

   <input type="submit" name="Submit" value="Envoyer">
</form>


Et dans ton fichier "traitement.php" tu places TOUT le code PHP qui correspond au traitement de tes formulaires.
0
Coukies94 Messages postés 40 Date d'inscription jeudi 3 septembre 2015 Statut Membre Dernière intervention 25 avril 2018 8
1 mars 2018 à 19:41
Parfait ça a fonctionné ! merci pour ton aide ! !
0