Page 1 sur 1

Problème mise a jour table et upload

Posté : 10 févr. 2010, 19:03
par LaGuiche
Bonjour à tous !

Je viens vous trouver, car après de long moment de recherches et d'essai, je m'avoue un peu vaincu et je ne sais plus trop quoi essayer. C'est pour cela que je suis ici :)

Je vous explique le projet rapidement. Je dois créer une interface d'affichage sur TV. Un prof, via l'emploi du temps que je fait, choisi quoi afficher pendant des horaire défini (photo, vidéo, pdf, etc).

Pour ce faire, j'ai une page d'accueil sous forme d'emploi du temps de la semaine :
Image

Lorsque je clique sur un des bouton "organiser", j'obtiens la fenetre suivante :
Image Image

Donc a ce moment, on choisi dans la liste déroulante ce que l'on veut choisir (ici photo)
Dans un premier temps il y avait les champs "date" et "parcourir" pour tous, mais m'étant heurtez a la limite des 2mo en upload, ça allait pas pour les vidéos.
J'ai donc décidé de faire un page php pour chaque type de fichier, et de l'afficher selon le choix de la liste, a la suite de celle-ci.
Or j'ai maintenant un problème, lorsque je choisi une photo, et que je clique sur le bouton d'envoi, la page est raffraichi, mais rien d'upload, ni de mis a jour dans ma base de donnée :s

Je pense que le soucis viens du fait que j'ai deux formulaires, et qu'il y a donc un souci, mais je ne trouve pas comment le résoudre :/

voici le code de la page "organisation" :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Organisation</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   
   <body>
   	
		<!-- affichage du titre en récupérant les valeurs dans l'URL -->		
		<?php 
			$cellule = $_GET['numcellule'];
			$nomjour = $_GET['jour'];
			$heure = $_GET['horaire'];
		?>
	   
	   <p>
		   <h1>Organisation</h1>
		   <h5>de la cellule n°<?php echo $cellule?> (<?php echo $nomjour . ' de ' . $heure . ' à ' . ($heure+1); ?>)</h5>
	   <p>

	   
	   <br /><br />
	   
	   
	   <!-- Création de la fonction pour conserver le choix de la liste déroulante -->
	   <?php
		function choixParDefaut($typefichier) 
		{
		$par_defaut = ''; 

			if (isset($_POST['typefichier'])) 
			{
				if ($_POST['typefichier'] == $typefichier)
				{
					$par_defaut='selected="selected"'; 
				}
			}

		return $par_defaut; 
		}
		?>

	   
	   
	   <!-- Liste déroulante pour choisir le type de fichier -->
	   <form method="POST" class="centrer" >	
			<p>
			   <label for="typefichier">Type de fichier</label><br />
			   <select name="typefichier" id="typefichier" tabindex="10" onChange='javascript:this.form.submit();>
				   <option value="vide" selected="selected" <?php echo choixParDefaut('vide'); ?>> </option>
				   <option value="photo" <?php echo choixParDefaut('photo'); ?>>Photo</option>
				   <option value="video" <?php echo choixParDefaut('video'); ?>>Vidéo</option>
				   <option value="emploitemps" <?php echo choixParDefaut('emploitemps'); ?>>Emploi du temps</option>
				   <option value="pdf" <?php echo choixParDefaut('pdf'); ?>>PDF</option>
			   </select> <br />
			   

			<!-- Switch pour afficher la page correspondante au type de fichier -->
			<?php 
			if (!isset($_POST["typefichier"])) ($choix="vide");
			else ($choix=$_POST["typefichier"]);
			
			
			switch ($choix) {
			case 'photo':
				include "photo.php";
			break;
			case 'video':
				include "video.php";
			break;
			case 'page4':
				include "page4.php";
			break;
			case 'travail':
				include "travail.php";
			break;
			}
			?>
 
			   
		   
		   </p>
		</form>
		
		
		
		
		
		<br /><br />

		<!-- Bouton de fermeture de page -->
		<div id="pied_de_page">
			<form>
				<p style="text-align: center;">
				<input type="button" value="Fermer la fenêtre" onclick="window.close()">
				</p>
			</form>
			

		
			
		</div>

		



   
   </body>
</html>
et le code de la page "photo.php" qui se rajoute lorsqu'on l'a choisi dans la liste :
	   <!-- formulaire pour récupérer les informations choisies -->
	   <form method="POST" class="centrer" enctype="multipart/form-data" >	
			<p>
			   
			   
			   <label for="date">Date (jj/mm/aa)</label><br />
			   <input type="text" name="date" id="date" value="<?php echo date("d/m/y"); ?>" tabindex="20" /><br />

			   <label for="fichier">Fichier</label><br />
			   <input type="file" name="fichier" id="fichier" tabindex="30" /><br />
			   
			   <input type="submit" value="ok" />
			   
			   
				 <?php
				// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
				if (isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0)
				{

								// Testons si l'extension est autorisée
								$infosfichier = pathinfo($_FILES['fichier']['name']);
								$extension_upload = $infosfichier['extension'];
								$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
								if (in_array($extension_upload, $extensions_autorisees))
								{
										// On peut valider le fichier et le stocker définitivement
										move_uploaded_file($_FILES['fichier']['tmp_name'], 'uploads/' . basename($_FILES['fichier']['name']));
										echo "L'envoi a bien été effectué !";
								}
						
				}
				?>

			   
			   
		   
		   </p>
		</form>
		
		
		<br /><br />
		
				<!-- si les champs sont remplis, on stock les infos dans des variables -->
		<?php
		if (isset($_POST['typefichier']) AND isset($_POST['date']) AND isset($_FILES['fichier']['name'])) 
			{
				$type = $_POST['typefichier'];
				$date = $_POST['date'];
				$fichier = $_FILES['fichier']['name'];
			}
		
		
  		// On se connecte à la base de données
		mysql_connect("localhost", "root", "") or die('Connexion impossible à la BDD');
		mysql_select_db("projet_tut") or die('Erreux dans le choix de la BDD'); 
		
		
		// Si les variables existent, on met a jour la table
		if (isset($_POST['typefichier']) AND isset($_POST['date']) AND isset($_FILES['fichier']['name'])) 
			{
				//On récupère le numero de la cellule, le type de fichier, la date et le fichier
				$requete = mysql_query("UPDATE planning SET type='$type', date='$date', lien='$fichier' WHERE cellule='$cellule'");
			}

			
		?> 

Donc voila, je pense avoir tout expliqué, et j'espère que vous comprendrez mon soucis.
Merci d'avance pour vos explications et votre aide :)

Bonne soirée à tous !

Re: Problème mise a jour table et upload

Posté : 10 févr. 2010, 19:18
par Ryle
Le code html que tu génères n'est en effet pas correct, tu as 2 formulaires imbriqués :
<form>
  <form enctype="multipart/form-data">
  </form>
</form>
Ceci n'est pas autorisé en html, et le navigateur ne sait pas où s'arrête réellement le premier form...

Il faut remonter le multipart dans le premier formulaire et que le code que tu inclues ne comporte pas de formulaire :
<form enctype="multipart/form-data">
  ... ton fichier inclu sans formulaire
</form>
Ca devrait mieux fonctionner :)