Guest User

Untitled

a guest
Jan 23rd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. # Développements complémentaires (1)
  2. ## Comment renommer mon fichier en "film_38.png" ?
  3.  
  4. > Nous prendrons comme exemple une base de films. A vous d'adapter afin de correspondre à votre cas.
  5.  
  6. Une fois le fonctionnement de l'upload d'images terminé, vous allez déplacer le bloc de vérification du champ `$_FILES['image']` **après** l'execute.
  7.  
  8. En effet, nous voulons d'abord enregistrer notre élément **sans l'image**, récupérer l'ID de l'élément nouvellement créé, et enfin enregistrer l'image avec l'ID dans le nom de l'image.
  9.  
  10.  
  11. ## 1. Déplacement du bloc de validation après le execute :
  12.  
  13. Vous allez **déplacer** ce bloc de code suivant, celui qui effectue les vérifications sur l'image :
  14. ```php
  15.  
  16. /**
  17. * VALIDATION DE L'IMAGE
  18. */
  19. if (...) { }
  20. elseif(...) { }
  21. elseif (...) { }
  22. else { /* traitement de l'image */ }
  23. ```
  24.  
  25. A l'endroit suivant, c'est à dire juste après le `execute`.
  26.  
  27. ```php
  28.  
  29. /**
  30. * ENREGISTREMENT DES DONNEES
  31. */
  32. $req = "INSERT INTO films(titre, genre, duree, date_de_sortie, realisateur, acteur_principal, note, image)
  33. VALUES(:titre, :genre, :duree, :date_de_sortie, :realisateur, :acteur_principal, :note, :image)";
  34.  
  35. $res = $bdd->prepare($req);
  36.  
  37. $res->execute([
  38. 'titre' => $titre,
  39. 'genre' => $genre,
  40. 'duree' => $duree,
  41. 'date_de_sortie' => $dateDeSortie,
  42. 'realisateur' => $realisateur,
  43. 'acteur_principal' => $acteurPrincipal,
  44. 'note' => $note,
  45. 'image' => $image
  46. ]);
  47.  
  48. /**
  49. * VALIDATION DE L'IMAGE
  50. */
  51. if (...) { }
  52. elseif(...) { }
  53. elseif (...) { }
  54. else { /* traitement de l'image */ }
  55.  
  56. ```
  57.  
  58. En effet, maintenant on attend que l'élément soit enregistré avant de traiter notre image.
  59.  
  60.  
  61. ## 2. Modification de la requête
  62.  
  63. Comme j'effectue l'enregistrement de mon image **après** l'enregistrement de l'élément, il va falloir modifier la requête ! En effet, je n'ai plus de `$image` à enregistrer.
  64.  
  65. Ma **requête** et mon `->execute()` ressemblent dorénanvant à cela (idem qu'au dessus, mais en enlevant le champ `image`):
  66.  
  67. ```php
  68.  
  69. // On retire le champ "image" ici
  70. $req = "INSERT INTO films(titre, genre, duree, date_de_sortie, realisateur, acteur_principal, note)
  71. VALUES(:titre, :genre, :duree, :date_de_sortie, :realisateur, :acteur_principal, :note)";
  72.  
  73. $res = $bdd->prepare($req);
  74.  
  75.  
  76. // On retire le champ "image" dans le tableau ci-dessous aussi
  77. $res->execute([
  78. 'titre' => $titre,
  79. 'genre' => $genre,
  80. 'duree' => $duree,
  81. 'date_de_sortie' => $dateDeSortie,
  82. 'realisateur' => $realisateur,
  83. 'acteur_principal' => $acteurPrincipal,
  84. 'note' => $note
  85. ]);
  86. ```
  87.  
  88. ## 3. Ajustement du nom de l'image (film_38.png)
  89.  
  90. Dans le `else { /* traitement de l'image */ }`, c'est à dire le "else" qui enregistre l'image si les validations sont passées, vous allez modifier les données de telle sorte qu'on récupère l'ID de l'image :
  91.  
  92.  
  93. ```php
  94.  
  95. else {
  96.  
  97. // On récupère le dernier ID enregistré
  98. $idChaussure = $bdd->lastInsertId();
  99.  
  100. // On nomme l'image comme souhaité
  101. $nomImage = "film_" . $idChaussure;
  102.  
  103. // Pensez bien à rajouter l'extension du fichier à la place de [extension] !!
  104. $nomImageComplet = $nomImage . "." . [extension];
  105.  
  106. // On adapte la suite de l'enregistrement en utilisant cette fois $nomImageComplet et plus $nomAleatoire
  107. ...
  108. }
  109.  
  110. ```
  111.  
  112. ## 4. Mise à jour de l'élément
  113.  
  114. Nous avons (1) déplacé l'enregistrement de l'image après la création de l'élément, afin d'avoir son ID, (2) mis à jour la requête afin de ne plus enregistrer l'image immédiatement en BDD, (3) renommé l'image en "film_38.png".
  115.  
  116. Il faut dorénavant mettre à jour l'élement enregistré afin d'indiquer en base de données le nouveau nom de l'image !
  117.  
  118. Toujours dans le `else`, à la suite, vous allez ajouter l'upload :
  119.  
  120. ```php
  121.  
  122. else {
  123.  
  124. // On récupère le dernier ID enregistré
  125. $idChaussure = $bdd->lastInsertId();
  126.  
  127. // On nomme l'image comme souhaité
  128. $nomImage = "film_" . $idChaussure;
  129.  
  130. // Pensez bien à rajouter l'extension du fichier à la place de [extension] !!
  131. $nomImageComplet = $nomImage . "." . [extension];
  132.  
  133. // On adapte la suite de l'enregistrement en utilisant cette fois $nomImageComplet et plus $nomAleatoire
  134. ...
  135.  
  136. /**
  137. * PARTIE UPLOAD
  138. */
  139.  
  140. $reqUpload = "UPDATE films SET image = :image WHERE id = :id";
  141.  
  142. $responseUpload = $bdd->prepare($reqUpload);
  143.  
  144. $responseUpload->execute([
  145. 'id' => $idElement,
  146. 'image' => $nomImageComplet
  147. ]);
  148.  
  149. }
  150.  
  151. ```
Add Comment
Please, Sign In to add comment