Автор Тема: Качване на няколко снимки едновремено и записване в бд  (Прочетена 788 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

vici

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 3
Това ме е кода за качване на няколко снимки.
<form name="upload" enctype="multipart/form-data" method="POST" style="text-align: center">
<input name="upload[]" type="file" multiple="multiple" />

<input type="submit" name="upload" value="Upload"><p>&nbsp;
</form>
<?php
if (isset($_POST['upload'])){
$total count($_FILES['upload']['name']);


for(
$i=0$i<$total$i++) {
  
  
$tmpFilePath $_FILES['upload']['tmp_name'][$i];

  
  if (
$tmpFilePath != ""){
    
    
$newFilePath "./upload/" $_FILES['upload']['name'][$i];
if(
move_uploaded_file($tmpFilePath$newFilePath)) {

  }
}
}


?>


Имам таблица за снимките в бд с поле ид и 3 полета за снимки. Искам като  кача снимки да ги записвам в бд. Дано някои да помогне.
« Последна редакция: 18 Юни 2016, 22:15:10 от vici »

Darnel

  • Full Member
  • ***
  • Благодарности
  • -Казани: 32
  • -Получени: 3
  • Публикации: 139
С кода който ти давам само вкарва целия път на снимката в базата данни. (Кажи ми коя версия PHP ползваш?)
Кода може да се пипне и да си нагласиш ако нямаш папката upload да ти я създава автоматично след качването на 1вия файл.
Другото което е че можеш да го направиш да ти записва в един ред и пътя и името на снимката поотделно , аз тук съм ти задал крайния път.
<form name="upload" enctype="multipart/form-data" method="POST" style="text-align: center">
<input name="upload[]" type="file" multiple="multiple" />
<input type="submit" name="upload" value="Upload"><p>&nbsp;
</form>
<?php
#Връзката ти към базата
$connect mysqli_connect("localhost","root","","pic") or die();

if (isset(
$_POST['upload'])){
$total count($_FILES['upload']['name']);

for($i=0$i<$total$i++) {
$tmpFilePath $_FILES['upload']['tmp_name'][$i];

if ($tmpFilePath != "") {
$newFilePath "upload/" $_FILES['upload']['name'][$i];

if (move_uploaded_file($tmpFilePath$newFilePath) === TRUE) {
$path $newFilePath// Пътя който се записва в Базата данни
$sql "INSERT INTO pics (path) VALUES ('$path')"//Така вкарва пътя на снимката в бд
mysqli_query($connect$sql) or die();
}
}
}
}
?>
Това е само пример btw.

vici

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 3
PHP версията е 5.6.14. Но аз искам като кача няколко снимки да ги записвам на един ред в бд. Бд има полета ид, снимка1, снимка2 и снимка3.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Здрасти, идеята за записване на снимки в един ред е лоша идея и ти гарантирам, че ще се мразиш след време ако го избереш (поне аз бях така). Просто по този начин си връзваш ръцете за евентуално добавяне на повече снимки, вариантът със запазването им в отделна таблица е по-приятен, и не чак толкова труден за работа. А иначе работа с качване на файлове хич не е сложна и всичко се свежда с достъпването на пратените файлове от супер-глобалната $_FILES и записването им с move_uploaded_file, както вече видя от примера на Darnel
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

vici

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 3
Здрасти, идеята за записване на снимки в един ред е лоша идея и ти гарантирам, че ще се мразиш след време ако го избереш (поне аз бях така). Просто по този начин си връзваш ръцете за евентуално добавяне на повече снимки, вариантът със запазването им в отделна таблица е по-приятен, и не чак толкова труден за работа. А иначе работа с качване на файлове хич не е сложна и всичко се свежда с достъпването на пратените файлове от супер-глобалната $_FILES и записването им с move_uploaded_file, както вече видя от примера на Darnel
Може би си прав, не се бях замислил за това. Иначе ако ги записвам в един ред трябва да имам поне 10 полета за всеки случай ако ми се наложи да качвам повече снимки. 

Darnel

  • Full Member
  • ***
  • Благодарности
  • -Казани: 32
  • -Получени: 3
  • Публикации: 139
Както каза Аваленч , запис на един ред просто, как да кажа, просто си го избий от главата. Лоша практика е и води до усложнения.
Начина който съм ти показал е много прост и е просто пример. Разбира се можеш да си го направиш както искаш ти , по твой вкус но съвета ни с Ава е това - запис на един ред  НЕ.