[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Условный оператор if
Renden
Доброе утро, подозреваю что нельзя, но на всякий случай спрошу.
Пример

//условие
if ($a == $b) {
//тут какой-то вывод
}

//тут какой-то код

//а тут оно опять понадобилось через n количество строк.

if ($a == $b) {
//тут какой-то вывод
}

Можно ли после закрытия условия еще раз его выполнить, чтоб еще раз не писать тоже самое условие.



Спустя 3 минуты, 30 секунд (17.02.2011 - 10:23) Evilsoul написал(а):
только функцией

Спустя 1 минута, 10 секунд (17.02.2011 - 10:24) Snus написал(а):
Renden
Расшифруй вот эту строчку
Цитата
Можно ли после закрытия условия еще раз его выполнить, чтоб еще раз не писать тоже самое условие.

Спустя 1 минута, 5 секунд (17.02.2011 - 10:26) Evilsoul написал(а):
Snus
см. пример, он там объясняет.

Спустя 2 минуты, 22 секунды (17.02.2011 - 10:28) Snus написал(а):
Evilsoul
Знаешь, я уже привык, что многие на этом форуме пишут код один,а просят помочь в другом. Понять точно, что они хотят сложно. Поэтому, чтобы не услышать в итоге вот это - "Нет, это не то, что я хотел, будьте вы все прокляты, гомосеки!", я на всякий случай уточняю, что хочет автор.

Спустя 10 минут, 14 секунд (17.02.2011 - 10:38) Renden написал(а):
Snus
Ххаха +1)) Не у мня вопрос в коде был)
Evilsoul
Хм.. тогда посоветуй как обойти загвоздку есть код:

while($row = mysql_fetch_assoc($query)) {
if ($row['id'] != $id) {
$id = $row['id'];
//тут выводиться 1 строчка имени
echo '<div class="общий"><div class="имени">'.$row['name'].'</div>';
}
//а тут куча строчек параметров к этому имени
echo $row['param']; //если я сдесь закрою див то их будет больше чем открытых, тк открытый всего 1
}
//Див не закрыт

вопрос как закрыть div class "общий" чтобы в него попал вывод $row['param']?
с утра голова не варит вообще))

Спустя 5 минут, 40 секунд (17.02.2011 - 10:44) Snus написал(а):
while($row = mysql_fetch_assoc($query)) {
echo '<div class="общий">';
if ($row['id'] != $id) echo '<div class="имени">'.$row['name'].'</div>';
echo $row['param'];
echo '</div>';
}

Спустя 3 минуты, 54 секунды (17.02.2011 - 10:48) Renden написал(а):
Snus
ты непонял, в твоем случае див общий откроется допустим 10 раз (потому что цикл выведет 10 строк), а мое условие режет повторяющиеся выводы имени (вывод 3 раза допустим), так вот надо окрыть div class общий 3 раза и закрыть 3 раза, а не 10.
Криво обьяснил, надеюсь поймешь.

Спустя 3 минуты, 46 секунд (17.02.2011 - 10:51) Evilsoul написал(а):
перед циклом открой и после цикла закрой

Спустя 1 минута, 6 секунд (17.02.2011 - 10:53) Evilsoul написал(а):

echo '<div class="общий">';
while($row = mysql_fetch_assoc($query)) {
if ($row['id'] != $id) {
$id = $row['id'];
//тут выводиться 1 строчка имени
echo '<div class="имени">'.$row['name'].'</div>';
}
//а тут куча строчек параметров к этому имени
echo $row['param']; //если я сдесь закрою див то их будет больше чем открытых, тк открытый всего 1
}
echo '</div>'; //Див закрыт

Спустя 1 минута, 3 секунды (17.02.2011 - 10:54) Renden написал(а):
Evilsoul
Тогда див будет только 1, а надо столько раз сколько выводиться row['name'].

кароче надо обьединить одним дивом $row['name'] и $row['param'], блин неужели я так криво изьясняюсь что меня никто понять не может sad.gif

Спустя 2 минуты, 47 секунд (17.02.2011 - 10:56) Evilsoul написал(а):
так сделай ЛИМИТ, или тебе нужны все 10 строк?

Спустя 2 минуты, 36 секунд (17.02.2011 - 10:59) Evilsoul написал(а):
или создай в цикле два массива парам и нейм и выведи где нужно будет, вариантов куча... тебе видней чего ты хочешь.

Спустя 1 минута, 32 секунды (17.02.2011 - 11:01) Renden написал(а):
Evilsoul
Нужны, ща прокоментирую код:

//Сам запрос выводит:
//Вася Пупкин | параметр1
//Вася Пупкин | параметр2
//Вася Пупкин | параметр3 и тд.

while($row = mysql_fetch_assoc($query)) {
if ($row['id'] != $id) {
$id = $row['id'];
//тут выводиться 1 строчка имени допустим Вася Пупкин
echo '<div class="общий"><div class="имени">'.$row['name'].'</div>';
}
//тут допустим 5 строчек с параметрами Васи Пупкина
echo $row['param'];
}
//нужно закрлючить ИМЯ и Параметры в 1 общий див.


У мня с массивами беда, я незнаю как с ними работать тольком.

Спустя 1 минута, 16 секунд (17.02.2011 - 11:02) Evilsoul написал(а):
Я сам не супер-пупер программер :) но что-то вроди этого:
while($row = mysql_fetch_assoc($query)) 
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name .= array($row['name']);
}

$param .= array($row['param']);
}

Спустя 2 минуты, 56 секунд (17.02.2011 - 11:05) Evilsoul написал(а):
$name и $param у тебя должны получится индексными массивами, которые сможешь вывести где захочень echo $name[0].$param[1].$param[2] ...

Спустя 1 минута, 4 секунды (17.02.2011 - 11:06) Snus написал(а):
Renden
Тебе нужен вот такой вид?
Вася Пупкин:
- Большой пенис
- Маленькая зарплата
- Занудная жена

Петя Васечкин
- Пенис кроха
- ЗП такая же
- Жены нет (см. пункт 1)

Спустя 48 секунд (17.02.2011 - 11:07) Evilsoul написал(а):
Snus
как я понял, да.

Спустя 4 минуты, 15 секунд (17.02.2011 - 11:11) Renden написал(а):
Snus
именно
Evilsoul
echo $name[0].$param[1].$param[2] ... так писец не удобно выводить, тк параметров может быть n-количество

Спустя 1 минута, 25 секунд (17.02.2011 - 11:12) Evilsoul написал(а):
Renden
ну а получилось?

Спустя 2 минуты, 33 секунды (17.02.2011 - 11:15) Snus написал(а):
Renden

while($row = mysql_fetch_assoc($query)) {
$arr[$row['name']][] = $row['param'];
}

foreach($arr as $name => &$arr2){
echo '<div class="name">'.$name.'</div>';
foreach($arr2 as &$param){
echo '<div class="param">'.$param.'</div>';
}
}

Спустя 1 минута, 18 секунд (17.02.2011 - 11:16) Evilsoul написал(а):
Renden
а для такого вывода есть цикл for($i = 0; $i < 100; $i++)

Спустя 54 секунды (17.02.2011 - 11:17) Evilsoul написал(а):
Snus
Вот завернул smile.gif 3 цикла ещё и друг в друге smile.gif

Спустя 4 минуты, 9 секунд (17.02.2011 - 11:21) Snus написал(а):
Evilsoul
Как вариант. Тратить часы работы, чтобы решить задачу более оптимально, у меня нет. smile.gif
Зато вариант резиновый. Любое кол-во наименований и параметров пихай - код менять не нужно.

Спустя 5 минут, 59 секунд (17.02.2011 - 11:27) Renden написал(а):
Snus
Прости, но это тоже самое что было у меня доэтого. Я тебя обманул нечаяно мне надо не
Цитата

Вася Пупкин:
- Большой пенис
- Маленькая зарплата
- Занудная жена

Петя Васечкин
- Пенис кроха
- ЗП такая же
- Жены нет (см. пункт 1)


А так

- Пенис кроха
Вася Пупкин - Жены нет (см. пункт 1)
- Пенис кроха

- Пенис кроха
Петя Васечкин - ЗП такая же
- Жены нет (см. пункт 1)


В html это должно быть так:

<div class="общий">
<div
class="name">Вася Пупкин</div>
<div
class="param">- Пенис кроха</div>
..
</div>
<div
class="общий">
<div
class="name">Петя Васечкин</div>
<div
class="param">- Жены нет</div>
..
</div>

Спустя 1 минута, 23 секунды (17.02.2011 - 11:29) Evilsoul написал(а):
Renden
у тебя массивы получились, как я писал?

Спустя 1 минута, 44 секунды (17.02.2011 - 11:30) Renden написал(а):
Evilsoul
Несовсем, что-то перебрать их не получается.. Ща еще попробую.

Спустя 3 минуты, 28 секунд (17.02.2011 - 11:34) Evilsoul написал(а):
Renden
Не нужно их перебирать, я сам тебе переберу, я не уверен что в такой способ он точно сформируется...
Запусти это:
while($row = mysql_fetch_assoc($query)) 
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name .= array($row['name']);
}

$param .= array($row['param']);
}

echo '<pre>';
print_r($name);
echo '</pre>';

echo '<pre>';
print_r($param);
echo '</pre>';


и отпиши что выведет тебе.

Спустя 22 секунды (17.02.2011 - 11:34) Snus написал(а):
Renden
?! Так просто div дописать и все. Я тебе мысль подкинул.

while($row = mysql_fetch_assoc($query)) {
$arr[$row['name']][] = $row['param'];
}

foreach($arr as $name => &$arr2){
echo '<div class="общий">';
echo '<div class="name">'.$name.'</div>';
foreach($arr2 as &$param){
echo '<div class="param">'.$param.'</div>';
}
echo '</div>';
}


И Выведет он тебе

<div class="общий">
<div
class="name">Вася Пупкин</div>
<div
class="param">- Пенис кроха</div>
..
</div>
<div
class="общий">
<div
class="name">Петя Васечкин</div>
<div
class="param">- Жены нет</div>
..
</div>

Спустя 13 минут, 9 секунд (17.02.2011 - 11:47) Renden написал(а):
Snus
Для меня это слишком сложно для понимания, как ты это сделал. Но параметр у мня там не один $row['param'] а там еще куча $row['param2'], $row['param3'], $row['date'], в твоем случае мне придеться для каждого делать отдельный foreach так чтоль?))

Как-то странно для того чтоб внедрить 1 общий див надо устраивать такие танцы с бубном..жесть, я думаю как-то проще все можно это..

Спустя 2 минуты, 42 секунды (17.02.2011 - 11:50) Evilsoul написал(а):
Renden
Ты мне напишешь что в выводе ты получил?

Какие тут танцы? создать два массива и вывести всё где нужно...

Спустя 1 минута, 37 секунд (17.02.2011 - 11:52) Snus написал(а):
Renden
Делай так
while($row = mysql_fetch_assoc($query)) {
$param = $row['param'];
$param2 = $row['param2'];
$param3 = $row['param3'];
$arr[$row['name']][] = compact('param','param2','param3');
}

foreach($arr as $name => &$arr2){
echo '<div class="общий">';
echo '<div class="name">'.$name.'</div>';
foreach($arr2 as &$val){
echo '<div class="param">'.$val['param'].'</div>';
echo '<div class="param">'.$val['param2'].'</div>';
echo '<div class="param">'.$val['param3'].'</div>';
}
echo '</div>';
}

Спустя 2 минуты, 47 секунд (17.02.2011 - 11:54) Evilsoul написал(а):
Renden
Покажи мне вывод, ибо буду ругаться mad.gif

Спустя 1 минута, 12 секунд (17.02.2011 - 11:56) Renden написал(а):
Evilsoul
не ругайся)))
Цитата

ArrayArrayArrayArrayArrayArray

ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray

Спустя 57 секунд (17.02.2011 - 11:56) Evilsoul написал(а):
во блин, немного не так как хотелось, сек...

Спустя 2 минуты, 53 секунды (17.02.2011 - 11:59) Evilsoul написал(а):
о, а без точки попробуй
$name = array($row['name']);
так.

Спустя 1 минута, 28 секунд (17.02.2011 - 12:01) Evilsoul написал(а):
и вывод дай, блин сейчас сам попробую.

Спустя 47 секунд (17.02.2011 - 12:02) Renden написал(а):
Evilsoul
Так только 1 результат

Array
(
[0] => Вася
)

Array
(
[0] => 15.08.2011
)

Спустя 1 минута, 6 секунд (17.02.2011 - 12:03) Snus написал(а):
Renden
Я тебе рабочий код дал, чего голову ломаешь?

Спустя 4 минуты, 21 секунда (17.02.2011 - 12:07) Renden написал(а):
Snus
Да я его сохранил, я просто ищю другие варианты, просто у мня был код малюсенький, 1 условие if и все, а теперь столько циклов и массивов, которых я не понимаю, если у меня появиться еще раз такая задача, я нехочу копипастить тупо не понимая как так сделать..

Спустя 8 минут, 33 секунды (17.02.2011 - 12:16) Evilsoul написал(а):
Вот, сделал:

$name = array();
$param = array();
while($row = mysql_fetch_assoc($query))
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name[] = $row['name'];
}

$param[] = $row['param'];
}

echo '<pre>';
print_r($name);
echo '</pre>';

echo '<pre>';
print_r($param);
echo '</pre>';


Вывод покажешь, должно работать.

Спустя 1 минута, 16 секунд (17.02.2011 - 12:17) Snus написал(а):
Evilsoul
И как же ты потом соберешь $name и $param в том виде, как показал автор?

Спустя 31 секунда (17.02.2011 - 12:17) Evilsoul написал(а):
потом вставим в нужные дивы и всё.

Спустя 31 секунда (17.02.2011 - 12:18) Evilsoul написал(а):
Snus
Легко smile.gif

Спустя 3 минуты, 44 секунды (17.02.2011 - 12:22) Snus написал(а):
Evilsoul
Показывай

Спустя 1 минута, 49 секунд (17.02.2011 - 12:23) Renden написал(а):
Evilsoul
Отходил, вывод вроде верный..

Array
(
[0] => Инна
[1] => Денис
[2] => Сергей
[3] => Ольга
[4] => Анна
[5] => Вера
)

Array
(
[0] => 13.06.2011
[1] => 21.11.2011
[2] => 11.07.2011
[3] => 10.10.2011
[4] => 1.07.2011
[5] => 1.12.2011
[6] => 12.09.2011
[7] => 25.07.2011
[8] => 13.06.2011
[9] => 1.08.2011
[10] => 16.05.2011
[11] => 7.11.2011
[12] => 11.01.2011
[13] => 8.06.2011
[14] => 4.05.2011
[15] => 15.08.2011
)


Ну и как собрать теперь это чтоб Дивы располагались верно?

Спустя 8 минут, 26 секунд (17.02.2011 - 12:32) Evilsoul написал(а):
Прошу прощения, немного не так, сейчас всё напишу.

Спустя 1 минута, 14 секунд (17.02.2011 - 12:33) Snus написал(а):
Господа, объясните мне почему нельзя использовать предложенный мною метод? biggrin.gif

Спустя 3 минуты, 46 секунд (17.02.2011 - 12:37) Evilsoul написал(а):
Snus
потому что грузно очень

Вот:

    $name = array();
while($row = mysql_fetch_assoc($query))
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name[$row['name']] = $row['param'];
}
}


echo '<pre>';
print_r($name);
echo '</pre>';

должны получить ассоциативный массив.

Спустя 1 минута, 19 секунд (17.02.2011 - 12:38) Renden написал(а):
Snus
Я его использую, спасибо,яж тебе плюсанул даже, мне обидно то что я использую готовое решение, которое я не понимаю как оно работает, поэтому пытаюсь как-то более просто это реализовать, и чтоб самое главное я понял как так получилось.

Спустя 1 минута, 1 секунда (17.02.2011 - 12:39) Snus написал(а):
Evilsoul
Ты хоть сам представляешь какого вида массив твой будет?

Ты будешь перезаписывать ключ $row['name']

Спустя 20 секунд (17.02.2011 - 12:40) Evilsoul написал(а):
$name[$row['name']] .= $row['param'];

точку забыл

Спустя 18 секунд (17.02.2011 - 12:40) Snus написал(а):
Renden
Я тебе могу объяснить вкратце что к чему там

Спустя 35 секунд (17.02.2011 - 12:40) Evilsoul написал(а):
Snus
ассоциативный многомерный

Спустя 37 секунд (17.02.2011 - 12:41) Evilsoul написал(а):
а вывод сделать через foreach()

Спустя 28 секунд (17.02.2011 - 12:42) Renden написал(а):
Evilsoul
Так не верно, результаты параметров не все.
Array
(
[Инна] => 13.06.2011
[Денис] => 11.07.2011
[Сергей] => 1.07.2011
[Ольга] => 12.09.2011
[Анна] => 1.08.2011
[Вера] => 8.06.2011
)
Snus, буду признателен.

Спустя 28 секунд (17.02.2011 - 12:42) Snus написал(а):
Цитата (Evilsoul @ 17.02.2011 - 09:40)
$name[$row['name']] .= $row['param'];

точку забыл

И получится у тебя
'Вася Пупкин' => 'Большой пенисТупая женаМаленькая ЗП'

Спустя 1 минута, 7 секунд (17.02.2011 - 12:43) Evilsoul написал(а):
Renden
$name[$row['name']][] .= $row['param'];

вот так

Спустя 43 секунды (17.02.2011 - 12:44) Evilsoul написал(а):
и получим так:

Array
(
[dfjs] => Array
(
[0] => dfjasdafsdfs1
[1] => dfjasdafsdfs1
)

)

это то, чего я пытался добится

Спустя 27 секунд (17.02.2011 - 12:44) Snus написал(а):
Цитата (Evilsoul @ 17.02.2011 - 09:43)
Renden
$name[$row['name']][] .= $row['param'];

вот так

И чем же теперь твой пример отличается от моего? biggrin.gif

Спустя 34 секунды (17.02.2011 - 12:45) Evilsoul написал(а):
Snus
он без 3 циклов друг в друге, короткий и простой

Спустя 49 секунд (17.02.2011 - 12:46) Snus написал(а):
Evilsoul
Ты так показал пример, как создать массив, а теперь распарсь его. Покажи свой пример как вывести в нужном автору виде.

Спустя 1 минута, 23 секунды (17.02.2011 - 12:47) Renden написал(а):
Evilsoul
Ога, и как терь вывести?

Array
(
[Инна] => Array
(
[0] => 13.06.2011
[1] => 21.11.2011
)

[Денис] => Array
(
[0] => 11.07.2011
[1] => 10.10.2011
)

[Сергей] => Array
(
[0] => 1.07.2011
[1] => 1.12.2011
)


Спустя 1 минута, 24 секунды (17.02.2011 - 12:48) Snus написал(а):
Renden
Если дампнешь мой вариант, то поймешь, что Evilsoul ничего нового не предложил biggrin.gif

Спустя 4 минуты, 30 секунд (17.02.2011 - 12:53) Renden написал(а):
Evilsoul
Snus кстати прав)
Цитата

И получится у тебя

'Вася Пупкин' => 'Большой пенисТупая женаМаленькая ЗП'

Так и получаеться если подставить несколько параметров..

Snus
Ты вроде обещался в краце показать как ты так сделал, и что у тя за символ &$val перед переменной в переборе масива?

Спустя 54 секунды (17.02.2011 - 12:54) Evilsoul написал(а):
Renden
Следующим циклом, я вроде писал, foreach(); щя напишу

Спустя 2 минуты, 49 секунд (17.02.2011 - 12:57) Evilsoul написал(а):
    
$name = array();
while($row = mysql_fetch_assoc($query))
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name[$row['name']][] .= $row['param'];
}
}


foreach($name as $key => $val)
{
echo '<div class="общий"><div class="name">' . $key . '</div>';
echo '<div class="param">'. $key -> $val . '</div>';
echo '</div>';
}

Спустя 7 минут, 28 секунд (17.02.2011 - 13:04) Snus написал(а):
Evilsoul
Ты хоть знаешь, что выдаст твой foreach? ^^

Спустя 42 секунды (17.02.2011 - 13:05) Evilsoul написал(а):
Snus
Дело в том что у тебя мало того что 3 цикла друг в друге, так они у тебя еще и не принимают больше трех параметров "param"

Спустя 20 секунд (17.02.2011 - 13:05) Renden написал(а):
Evilsoul
Страннно имена выводяться, а значения нет..

Спустя 1 минута, 59 секунд (17.02.2011 - 13:07) Evilsoul написал(а):
Сейчас посмотрю, я с foreach оч. мало работал, да и с массивами тоже, вот мне и интересна эта тема, ибо вариант Санса считаю не оч. хорошим.

Спустя 31 секунда (17.02.2011 - 13:08) Snus написал(а):
Evilsoul
А твой вообще дальше ключей и array не идет. Это раз. Во-вторых - запросто можно foreach'ем пройтись по params. Я показал как вариант. Если он дергает их из таблицы, где не намечается прибавления столбцов - то сойдет код. Если таблица может быть резиновой - то foreach

Спустя 1 минута, 17 секунд (17.02.2011 - 13:09) Snus написал(а):
Evilsoul
У тебя такой же массив получается. Так распарсь его. Действительно видно, что ты мало работал с массивами.

Спустя 45 минут, 57 секунд (17.02.2011 - 13:55) Evilsoul написал(а):
Вот такой вариант как по мне будет намного оптимальней и быстрее, количество входящих параметров "парам" не имеет значения, количество строк с именем не имеет значения, цикл фор выполнит столько итераций, сколько будет нужно.

    $name = array();
while($row = mysql_fetch_assoc($query))
{
if ($row['id'] != $id)
{
$id = $row['id'];

$name[$row['name']][] .= $row['param'];
}
}


foreach($name as $key => $val)
{
echo '<div class="общий" style="border:1px solid;"><div class="name">' . $key . '</div>';

for($i = 0; $i < count($name[$key]); $i++)
echo '<div class="param">' . $name[$key][$i] . '</div>';

echo '</div>';
}



Спустя 4 минуты, 19 секунд (17.02.2011 - 13:59) Snus написал(а):
Evilsoul
Так чем твой код отличается от моего-то? ))) Только тем, что у меня foreach, а у тебя for?! biggrin.gif

Спустя 1 минута, 33 секунды (17.02.2011 - 14:01) Evilsoul написал(а):
Snus
Я же тебе написал smile.gif)) они не вложены все вместе и не привязаны к определенному количеству парам

Спустя 1 минута, 14 секунд (17.02.2011 - 14:02) Snus написал(а):
Evilsoul
А ты мой скрипт запусти для начала, чтобы судить, раз ты его прочитать не можешь ) param, param2 и param3 - 3 лвл массива )) а у тебя только 2. В остальном твой скрипт делает тоже самое, что и мой.

Спустя 56 секунд (17.02.2011 - 14:03) Snus написал(а):
Цитата (Snus @ 17.02.2011 - 08:15)
Renden

while($row = mysql_fetch_assoc($query)) {
  $arr[$row['name']][] = $row['param'];
}

foreach($arr as $name => &$arr2){
  echo '<div class="name">'.$name.'</div>';
  foreach($arr2 as &$param){
      echo '<div class="param">'.$param.'</div>';
  }
}

Вот первый вариант, который я ему предложил. Чем он отличается от твоего? :D

А вот это у тебя
        if ($row['id'] != $id) 
{

Абсолютно лишнее действие )

Спустя 4 минуты, 50 секунд (17.02.2011 - 14:08) Evilsoul написал(а):
Snus
Ничем.
        if ($row['id'] != $id) 
{

я это действие не трогал, потому что я не знаю зачем оно ему и что проверяет.

Спустя 59 секунд (17.02.2011 - 14:09) Snus написал(а):
Evilsoul
Ну так почему ты сказал, что мой вариант плохой? Если сам предлагаешь такой же? ) Жду извинений )

Спустя 6 минут, 21 секунда (17.02.2011 - 14:15) Evilsoul написал(а):
Snus
Подожду решения автора smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.