Partage
  • Partager sur Facebook
  • Partager sur Twitter

insérer photos dans sous catégories

    17 août 2018 à 0:41:00

    Bonjour, je n' arrive pas à trouver la requête pour enregistrer une photo dans une catégorie précise.

    En effet dans mon projet j' enregistre des livres et il y a 3 catégories, donc facile pour le mettre dans le dossier img/livres c'est ok.

    Mais je n' arrive pas à les insérer dans un dossier type img/livre2 ou img/livre3

    j'ai indexé photo (id_photo dans la table livres ) dans la bdd et ohoto dans la table catégories.

    Voilà mon code, à priori c'est bon mais pour le move move_uploaded_file je sais pas comment faire vu qu'il y a 3 dossiers : livres ou livres 2 ou livres3

    <?php
    require_once 'connexion_BDD.php';
    
    
    if (!empty($_POST))
    {
    	move_uploaded_file($_FILES['photo']['tmp_name'],'img/livres/'.$_FILES['photo']['name']);
    		
    	$query = $pdo->prepare(
    		'INSERT INTO Books
    	   	 (collection, auteur, titre, editeur, contenu, date_creation, id_categorie, prix, id_photo)
    	     VALUES
    	     (:collection,:auteur, :titre,:editeur, :contenu, NOW(), :id_categorie, :prix, :id_photo)'
    	);
    
    	$query->execute( 
    		[ 
    		':auteur' => $_POST['auteur'],
    	    	':collection' => $_POST['collection'],
    	    	':prix' => $_POST['prix'],	
    	    	':titre' => $_POST['titre'],
    	    	':contenu' => $_POST['contenu'],
    	    	':editeur' => $_POST['editeur'],
    	    	':id_categorie' => $_POST['categorie'],
    	    	':id_photo' => $_FILES['photo']['name']	
    	    ] 
    	);
    
    	header('Location: index.php');
    	exit;
    	
    	
    }
    else
    	{
    		$query = $pdo->prepare(
    			'SELECT 
    				nom,
    				photo,
    				id_categorie	 
    			 FROM categories'
    		);	 	
    
    		$query->execute();
    		$categories = $query->fetchAll();
    		// var_dump($categories);
    	}
    
    // var_dump($_POST);
    
    $vuePartielle = 'add-post.phtml';
    include 'layout.phtml';

     le code phtml pour l 'upload photo

    <form method="POST" id="formulaire" action="add-book.php" enctype="multipart/form-data">
    	<fieldset>
    		<legend>
           <h2><i class="fa fa-edit"></i> Enregistrer un nouveau Livre</h2></legend>
                  
    
                    <div class="formDiv">
                        <div>
    	                   <label>Nom du Livre:</label>
    	                   <input type="text" name="titre" id="titre">
                      	</div>
                    </div>
    
                    <div class="formDiv">
                        <div>
    	                   <label>Auteur:</label>
    	                   <input type="text" name="auteur" id="auteur">
                      	</div>
                    </div>
    
    
    				<div class="formDiv">
                        <div>
    	                   <label>Editeur:</label>
    	                   <input type="text" name="editeur" id="editeur">
                      	</div>
                    </div>
    
                    <div class="formDiv">
                        <div>
    	                   <label>Collection:</label>
    	                   <input type="text" name="collection" id="collection">
                      	</div>
                    </div>
    
    
    				<div class="formDiv">
    					<label>Catégorie:</label>
    						<select name="categorie" id="categorie">
    							<?php foreach ($categories as $categorie) : ?>
    
    								<?php if($categorie['id_categorie'] == $livre['id_categorie']) : ?>
    
    									<option value="<?= $categorie['id_categorie']?>" selected><?= $categorie['nom']?></option>
    
    							<?php else: ?>
    
    									<option value="<?= $categorie['id_categorie']?>"><?= $categorie['nom']?></option>
    
    								<?php endif; ?>
    							<?php endforeach; ?>
    						</select>
    				</div>
    
                    <div class="formDiv">
                          <div>
                        <label>Description:</label>
                        <textarea name="contenu" id="contenu" rows="10" cols="50" placeholder=""></textarea>
                      </div>
                    </div>
    				
    				<div class="formDiv">
    					<label>Prix:</label>
    					<input type="text" name="prix" data-name="prix" data-required data-lenght value="">
    				</div>
    
                    <div class="formDiv">
    					<label>Photo:</label>
    					<input type="file" name="photo" id="photo" data-name="photo">
    				</div>
    
    
                  <div class="formDiv">
                       
                    <button type="submit" class="add">Enregistrer</button>
    				<button type="reset" class="delete">Annuler</button>
                  </div>	
    
                  </fieldset>	 
         
          </form>
          <?php
    			if(isset($msg))
    			{
    				echo '<font color="teal >' .$msg."</font>";
    			}
    
    		?>


    -
    Edité par thomas4437 17 août 2018 à 0:46:17

    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2018 à 20:54:13

      Bonjour,

      Comme tu sembles transmettre l'id de la catégorie du formulaire vers ton action, il suffit à mon avis de concaténer l'id_categorie dans la ligne 7 de ton code.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2018 à 22:07:31

        Bonjour monkey3d merci pour m aider, comme ça ? 

        move_uploaded_file($_FILES['photo']['tmp_name'],'img/livres/'.$_FILES['photo']['name'].['id_categorie']);

        ou avec le name categorie du input en valeur

        vu que pour le $query_>execute() c'est ':id_categorie' => $_POST['categorie'],

        move_uploaded_file($_FILES['photo']['tmp_name'],'img/livres/'.$_FILES['photo']['name'].$_POST['categorie']); 

        et encore même si je concaténe bien l' id catégorie il reste que je ne lui donne pas ou enregistrer/ dans quel dossier l'image comme img/livresArt et img/livresModerne ( mes 2 autres dossiers d'images par catégorie )

        Sinon ça ne fait pas d'érreurs avec l id categorie ou $_POST('categorie') j'enregistre bien le livre mais sans l'  image

        -
        Edité par thomas4437 18 août 2018 à 22:18:17

        • Partager sur Facebook
        • Partager sur Twitter
          19 août 2018 à 7:54:17

          Oui comme tu le fais.

          J'utiliserai plutôt l'id que le nom de la catégorie car si un jour tu modifies le nom de catégorie, les répertoires restent inchangées.

          Pour le fait que l'image ne s'enregistre pas il peut y avoir plein de raisons :

          - le code d'upload,

          - les permissions sur les répertoires,

          - la taille d'image qui dépasse ce qui est autorisé par les paramètres de php.ini

          - ...

          As tu trappé les erreurs php ? as tu regardé les logs de ton serveur weeb (apache) ?

          A+

          -
          Edité par monkey3d 19 août 2018 à 7:56:03

          • Partager sur Facebook
          • Partager sur Twitter

          insérer photos dans sous catégories

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown