|
|
|
| Вот у меня для админки новостей есть 20 блоков полей, заголовок, текст, картинка, подпись к картинке. Пытаюсь сделать так, чтобы можно было заполнять блоки как угодно, и работало, и я пытаюсь в цикле склеить и добавить эти значения:
for($i=0; $i<21; $i++){
$TopicN=($_POST['Topic'][$i]); // заголовок
if(!empty($TopicN)) { $TopicN=("<h2 class=news>".($_POST['Topic'][$i])."</h2>"); } else { $TopicN=(""); }
$TextN=($_POST['Text'][$i]); // текст
if(!empty($TextN)) { $TextN=("<p class=news>".($_POST['Text'][$i])."</p>"); } else { $TextN=(""); }
$ImgCommentN=($_POST['ImgComment'][$i]); подпись к картинке
if(!empty($ImgCommentN)) { $ImgCommentN=("<p class=imgnews>".($_POST['ImgComment'][$i])."</p>"); } else { $ImgCommentN=(""); }
if (is_uploaded_file($_FILES['attach']['tmp_name'][$i])){
image_700($_FILES['attach']['name'][$i],$_FILES['attach']['tmp_name'][$i],$t,$newsid,$save_dir_pub,$i,$autoimg); // функция преобразования и добавления картинки
$ImgLinkN=("<center><img src=\"".LinkImgPub($newsid, "-".$i)."\" alt=\"".$ImgAltN."\"></center>"); // ссылка на картинку
}
$content.= ($TopicN.$TextN.$ImgLinkN.$ImgCommentN); // все это склеиваем и вносим в базу,
}
|
так вот, проблема в том, что если передаются 3, 5, 10 картинок, строка
$ImgLinkN=("<center><img src=\"".LinkImgPub($newsid, "-".$i)."\" alt=\"".$ImgAltN."\"></center>"); - выполняется 20 раз
такое впечетление что if (is_uploaded_file($_FILES['attach']['tmp_name'][$i]))
выполняется только для функции imege_700
я могу эту строку $ImgLinkN=("<center><img src=\"".LinkImgPub($newsid, "-".$i)."\" alt=\"".$ImgAltN."\"></center>");
добавить в конец в функцию image_700 , только как мне получить значение $ImgLinkN из функции ???
кто то поможет, а? | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 13:27)
| | то есть уточню, вот тут
if (is_uploaded_file($_FILES['attach']['tmp_name'][$i])){
imege_700($_FILES['attach']['name'][$i],$_FILES['attach']['tmp_name'][$i],$t,$newsid,$save_dir_pub,$i,$autoimg);
$ImgLinkN=("<center><img src=\"".LinkImgPub($newsid, "-".$i)."\" alt=\"".$ImgAltN."\"></center>");
}
при передачи скажем 4 картинок, на сервер закидываются только три,
в базу идет запись от $ImgLinkN
<img src="/00000513-0.jpg">
<img src="/00000513-1.jpg">
<img src="/00000513-2.jpg">
<img src="/00000513-3.jpg">
это правильно, но потом зацикливает, и выводит еще 16 записей с последним присвоенным $i, то есть
<img src="/00000513-3.jpg">
<img src="/00000513-3.jpg">
<img src="/00000513-3.jpg">
<img src="/00000513-3.jpg">
<img src="/00000513-3.jpg">
... и т.д.
вот как тут быть? | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 13:33)
| | Вы не по нужной переменной задаете итерации цикла. | |
|
|
|
|
|
|
|
для: sim5
(01.07.2009 в 14:55)
| | в смысле? | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 15:40)
| | В прямом смысле. Если у вас форма, например, содержит 10 элеметов с текстом, и пять с изображениями, то в чего это перебирать эелементы file по числу элементов с текстом? | |
|
|
|
|
|
|
|
для: sim5
(01.07.2009 в 15:48)
| | просто не всегда будут все поля заполнены, могут быть и пропушены, или первые текстовые, а последние только картинки ...
то есть к количеству передаваемых значений форм привязываться нельзя ...
вот их 20
и как бы задача проверять каждое, если есть, склеивать по порядку и вносить запись в базу в одно поле ... | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 16:25)
| | Вы вместо цикла, распечайте на экран полученные массвы POST и FILES, поймете ошибку. | |
|
|
|
|
|
|
|
для: sim5
(01.07.2009 в 16:42)
| | распечатал, посмотрел, вот для пустой формы, где нет картинки, скажем
[name] => Array (
[0] => 1.jpg
[1] => 2.jpg
[2] =>
то есть это условие выполняетя на i=0, i=1, на i=2 не выполняется
if (is_uploaded_file($_FILES['attach']['tmp_name'][$i])){
image_700($_FILES['attach']['name'][$i],$_FILES['attach']['tmp_name'][$i],$t,$newsid,$save_dir_pub,$i,$autoimg); // функция преобразования и добавления картинки
$ImgLinkN=("<center><img src=\"".LinkImgPub($newsid, "-".$i)."\" alt=\"".$ImgAltN."\"></center>"); // ссылка на картинку
}
я так понимаю переменная $ImgLinkN - запоминает последнее значение при i=1
и начинает его повторять, а как это все можно переиграть? | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 17:12)
| | о!
кажись работает, я подставил
else
{
$ImgLinkN=("");
}
шас буду тестить ....
но кажись это топорный метод реализации, да? | |
|
|
|
|
|
|
|
для: AN
(01.07.2009 в 17:19)
| | Если вы в одном цикле проверяете число полученных записей и подчиненым им изображениям, то это еще не значит, что по счетчику этих записей нужно проверять массив FILES. Да собственно и 21 у вас не выдерживает критки, вы же сами говорите, что не обязательно все 20 записей могут быть, если я вас правильно понял.
Вы получаете форму, и следуя вашему повествованию, это N групп элементов с однотипным набором. Но в каждом таком наборе все таки есть главный элемент, которому подчинены остальные элементы в наборе, а значит число этих элементов и должно определять счетчик для цикла. Если имена элементов групп формы представить как многомерный массив, и в общем форма будет выглядеть многомерным массивом, тогда пройдя цикл по числу принятых главных элементов, можно уже проверять что они имеют - изображение, еще чего-то и т.д.... | |
|
|
|