|
|
|
| Драсте у меня интересная проблема, в файле csv идёт список мобильников со всякими данными. У меня это всё с файла выводится в таблицу, с этим всё замечательно, никаких глюков, зато когда я пытаюсь таким же способом создать mail и выслать такую же таблицу на э-почту у меня иногда в определённых ячейках вставляется знак восклицания "!". Из-за этого портится таблица. Тоесть идёт код:
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
|
и в тег <center> вставляется знак ! переделывая его в <c!enter> что приводит к ошибке в таблице. Как с этим боротся? Для вывода использую for возможно ли такое что код "не успевает" обработать всё и вставляет свои символы? Всего записей в файле 191. | |
|
|
|
|
|
|
|
для: Maxys
(14.12.2007 в 14:48)
| | так кто нибудь знает решение данной проблемы? Очень надо.. | |
|
|
|
|
|
|
|
для: Maxys
(03.01.2008 в 11:46)
| | Пока не покажете хотя бы часть своего csv и возможно кода, никто знать не будет. | |
|
|
|
|
|
|
|
для: sim5
(03.01.2008 в 12:59)
| | маленькую часть csv приложил, но всего записей 200
а код, может и смешной но палками и ногами не бейте!
$data = File("testcsv.csv");
$dat_arr = explode(";", $data[0]);
$mail = $_POST['mail'];
$headers = "Content-Type: text/html; charset=Windows-1251";
$mailmsg = "<table width=100% border=1 style=border-top-width:1; border-right-width:thin; border-left-width:1; border-top-color:black; border-left-color:black; border-top-style:solid; border-right-style:dotted; border-left-style:solid;>
<tr>
<td width=1%><center><b>Производитель</b></center></td>
<td width=55%><center><b>Модель/Описание</b></center></td>
<td width=10%><center><b>Цена LVL+PVN</b></center></td>
<td width=1%><center><b>На складе</b></center></td>
</tr>";
for ($i=3;$i<count($data);$i++)
{
$data_array = explode(";", $data[$i]);
$mailmsg .= "<tr>";
for ($f=0;$f<count($data_array);$f++)
{
if ($f == 0)
{
if ($data_array[0] == "0")
{
$checking = 0;
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
}
elseif ($f == 1)
{
if ($data_array[1] == $checking)
{
break(2);
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
}
}
$mailmsg .= "</tr></table>";
mail ($mail, "Цены", $mailmsg, $headers);
|
$checking и break установленны для того что бы csv не выводил строки с 0. По этому можно не обращать внимание на это.
Edit: ой я не заметил, я код не много переделал и файл и всё нормально стало выводится, только это не дело каждый раз csv файл перекавыривать и удалять не нужное. Раньше было ещё так:
elseif ($f == 1)
{
if ($data_array[1] == $checking)
{
break(2);
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
}
elseif ($f2 == "")
{
echo "";
}
elseif ($f3 == "")
{
echo "";
}
elseif ($f4 == "")
{
echo "";
}
elseif ($f5 == "")
{
echo "";
}
elseif ($f6 == "")
{
echo "";
}
elseif ($f8 == "")
{
echo "";
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
|
| |
|
|
|
|
|
|
|
для: Maxys
(03.01.2008 в 15:24)
| | Ваша беда в том, что Вы всё тело таблицы записываете одной длиннющей строкой без единого разрыва.
CSV же тут совершенно не при чем. | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 15:48)
| | понятно... что мне предпринять в таком случае? | |
|
|
|
|
|
|
|
для: Maxys
(03.01.2008 в 15:55)
| | Добавить в цикл вывод закрывающего тега "</tr>\r\n" | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 16:00)
| | вставил я </tr> но всё равно ошибка со знаком ! остаётся
и я заметил что когда я вывожу весь список (тоесть 11 столбцов) то на мыло приходит всё нормально, а когда начинаю их вырезать скриптом, то тогда уже знак ! вставляется.
elseif ($f == 6)
{
"";
}
elseif ($f == 7)
{
"";
}
elseif ($f == 8)
{
"";
}
elseif ($f == 11)
{
"";
}
else
{
$mailmsg .= "<td><center>$data_array[$f]</center></td>";
}
|
| |
|
|
|
|
|
|
|
для: Maxys
(03.01.2008 в 17:41)
| | я предложил вставить несколько другое. | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 18:32)
| | а да, спасибо всё теперь правильно работает, а теперь можете объяснить пожалуйста в чём разница между </tr> и </tr>\r\n?
я где то читал что \n это тот же <br> а \r ещё что то. Я просто этими \n\r никогда не пользовался. | |
|
|
|
|
|
|
|
для: Maxys
(04.01.2008 в 10:33)
| | Появление символов ! при отправке почты у вас, скорее всего связано с тем, что это штатное ограничение количества символов в одной строке от sendmail, которое по умолчанию равно 1015 символов, между 1015 и 1016 символами и т.д., будет появлятся ! (я так думаю).
Решнием это - обращение в техподдержку на увеличение длины строки, или выставить переносы строк, чаще 1015 символов, что вам и предложил Trianon. | |
|
|
|
|
|
|
|
для: Maxys
(14.12.2007 в 14:48)
| | Тела прикрепленных файлов электронной почты .следует кодировать mime/base64
Тела самих сообщений вобщем-то тоже... как минимум, если они с длинными строками. | |
|
|
|