|
|
|
| Доброго времени суток! такая проблемка: есть таблица, в которой хранится информация о номерах секций забронированных в выставочном зале (поля таблицы: фио,email, номера сециий(sections)). номера секция необходимы для заполнения флешки с рисунком зала, значения входной переменной для флеш является переменная вида "sect1=1", соответственно необходимо все полученные записи склеить. суть в том, что я написал код который так и делает, но он работает корректно только в том случае если в ячейке 1 номер секции, а необходимо чтобы в ячейке хранилось более чем 4 номера секции. на сколько я понимаю необходимо вначале парситьячейк и уже потом склеивать, но как это сделать-не представляю абсолютно! помогите пожалуйста, который день над этой проблемой бьюсь.
$qr = "SELECT * FROM customers";
$prev = mysql_query($qr);
if(!$prev) puterror("Ошибка при обращении к базе данных");
$i=0;
while($fields= mysql_fetch_assoc($prev)){
$string .= "sect".$fields['sections']."=1&";
$i++;
}
|
| |
|
|
|
|
|
|
|
для: Nameless
(28.05.2009 в 00:19)
| | А что у вас $i в цикле делает? В остальном ничего не понятно.... У вас поле sections должно содержать несколько записей (номеров) и в этом случае у вас ничего не получается? | |
|
|
|
|
|
|
|
для: sim5
(28.05.2009 в 08:09)
| | млин, цикл и лишний, уже убрал. проблема в том что это цикл выводит номера всех секторов в одой записи в одну часть переменной стринг, т.е. если 1 запись содержит следующие значения 1,4,5,6, то будет выводится следующее sect1,4,5,6=1&, а нужно, чтобы было sect1=1§4=1§5=1§6=1
после чего идет переход по циклу while к следующей строке бд и операция повторяется, полученные номера секций приклеиваются к уже имеющимся и так пока свсе записи не будут просмотрены | |
|
|
|
|
|
|
|
для: Nameless
(28.05.2009 в 09:07)
| | В таком случе:
<?
while($fields= mysql_fetch_assoc($prev)){
$s = explode(",", $fields['sections']);
for ($i=0; $i<count($s); $i++) {
//тут в цикле получать номера и формировать строку
}
//или
$s = str_replace(",","=1§",$fields['sections']);
$s = "sect" . $s . "=1";
}
|
| |
|
|
|
|
|
|
|
для: sim5
(28.05.2009 в 09:30)
| |
while($fields= mysql_fetch_assoc($prev)){
$s = explode(",", $fields['sections']);
for ($i=0; $i<count($s); $i++) {
$s .= "sect".$s[i]."=1&";
}
//или
$s = str_replace(",","=1§",$fields['sections']);
$s = "sect" . $s . "=1";
}
|
при добавлении этого кода выводит тока последнюю запись из бд... несовсем понятно... объясните пожалуйста в чем суть идеи? | |
|
|
|
|
|
|
|
для: Nameless
(28.05.2009 в 11:14)
| | А сами не можете догадаться почему? Потому, что переменная $s при каждом проходе цикла while принимает новое значение - следующей записи из базы, и в конце цикла, естественно будет равна последней.
Я понятия не имею, куда и зачем вы потом эту строку помещаете, потому показываю вам пример, а уж вам решать, что сделать, чтобы получить вам нужное.
PS. И я вам показал два способа - разбить строку на массив, или заменить в ней запятые нужным. Вы уж виберите один из них, а не запускайте оба. Собственно замену (второй способ) можно сделать непосредственно при запросе к базе, и получать уже готовое. | |
|
|
|
|
|
|
|
для: sim5
(28.05.2009 в 15:19)
| | большое вам спасибо, разобрался) прошу прощения за тупку-уже неделю нормально не спал | |
|
|
|