[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: eval
Гость_Михаил
Нужно запустить один из двух циклов по условию if. Пробовал реализовать через eval, использовал при этом 3 разных варианта реализации. результат отрицательный. по отдельности циклы работают нормально. Помогите с данной проблемкой.

if (!$idb) { $vr='for ($i=12; $i<13; ++$i) {'; } else { $vr='foreach($idb as $i) {';}
eval('?>'.$vr);
//eval('?'.'>' . $vr . '<'.'?');
//eval($vr);



Спустя 2 часа, 14 минут, 14 секунд (24.04.2012 - 08:34) vagrand написал(а):
Эммм, а почему бы просто не написать:


if (!$idb) {
for ($i=12; $i<13; ++$i) {
....
}
}
else {
foreach($idb as $i) {
....
}
}


Спустя 52 минуты, 29 секунд (24.04.2012 - 09:26) Игорь_Vasinsky написал(а):
Цитата
for ($i=12; $i<13;

понтов от такого цикла...

не проще сразу

$i = 12;
:lol:

Спустя 19 минут, 21 секунда (24.04.2012 - 09:45) bodja написал(а):
Игорь_Vasinsky biggrin.gif biggrin.gif biggrin.gif

Спустя 3 часа, 6 минут, 13 секунд (24.04.2012 - 12:52) Игорь_Vasinsky написал(а):
laugh.gif вот и я говорю.

Спустя 34 минуты, 6 секунд (24.04.2012 - 13:26) Guest написал(а):
дело в том, что тело большое и дублировать не хочется. хотелось бы реализовать по другому. а один из циклов от 1 до 13... для тех кого удивило число 12...

Спустя 4 минуты, 34 секунды (24.04.2012 - 13:30) Гость_Михаил написал(а):
Цитата (vagrand @ 24.04.2012 - 06:34)
Эммм, а почему бы просто не написать:


if (!$idb) {
for ($i=12; $i<13; ++$i) {
....
}
}
else {
foreach($idb as $i) {
....
}
}


дело в том, что тело большое и дублировать не хочется. хотелось бы реализовать по другому. а один из циклов от 1 до 13... для тех кого удивило число 12...

Спустя 34 минуты, 2 секунды (24.04.2012 - 14:04) twin написал(а):
Скорее всего тут напутано с логикой. Стоит показать весь код (вернее этот участок). Я уверен, что можно найти решение гораздо проще и цивилизованнее.

Спустя 3 часа, 40 минут, 42 секунды (24.04.2012 - 17:45) Гость_Михаил написал(а):
Цитата (twin @ 24.04.2012 - 12:04)
Скорее всего тут напутано с логикой. Стоит показать весь код (вернее этот участок). Я уверен, что можно найти решение  гораздо проще и цивилизованнее.

$idb - это массив выборочных $i, формируется по строкам input type='checkbox' name='idb[]' из отдельной формы.

if (!$tx) { $where=""; } else {

$txt[1]="$tx";
$txt[2]=ucfirst($txt[1]);
$txt[3]=strtoupper($txt[1]);

foreach ($txt as $key=>$val) { $txt1[$key]=iconv("windows-1251","utf-8",$txt[$key]); }
$where=" where translation like '%".$txt1[1]."%' or translation like '%".$txt1[2]."%' or translation like '%".$txt1[3]."%'";

}

$j=1;

if (!$idb) { $vr='for ($i=1; $i<13; ++$i) {'; } else { $vr='foreach($idb as $i) {'; }

eval($vr);

$sql = mysql_query("SELECT * from folds where id=$i");
while($row1 = mysql_fetch_array($sql)) {$id="$row1[id]"; $lang="$row1[lang]"; $folder="$row1[folder]";}

$db = new PDO("sqlite:base/$i/words.sqlite3");
$result = $db->query("SELECT * FROM words$where$ord");


foreach ($result as $row) {
$id="$row[id]";
$word="$row[word]";
$tr2="$row[translation]";
$tr1="$row[transcription]";
$audio="$row[audio]";

$wd= str_replace(' ', '%20', $word);
$tr11= str_replace(' ', '%20', $tr1);
$tr22= str_replace(' ', '%20', $tr2);

$list.="<tr><td>$j</td><td><a href=test.php?fld=$i&audio=$audio&word=$wd&tr2=$tr22&tr1=$tr11&num=$num>$word</a></td><td>$tr1</td><td>$tr2</td><td>$lang</td></tr>";


++
$j;}}

echo "<table align=center>$list</table>";



}



примерно как-то так

Спустя 36 минут, 24 секунды (24.04.2012 - 18:21) twin написал(а):
Ну так и есть. Грубейшие логические ошибки.
Но начинать нужно даже не с них, а со стиля в первую очередь. Вот отсюда. В подписи у меня есть ссылка, можно поправить сразу скопом.

Пежде чем навести порядок в логике, нужно навести порядок в мозгу. А этого не выйдет, если вместо кода такая каша. Приведи код в порядок, будем дальше рзбираться.

Спустя 37 минут, 18 секунд (24.04.2012 - 18:59) Гость_Михаил написал(а):
smile.gif типичный ответ вместо помощи. Может ошибки какие по тексту и есть, и каша в голове наверно тоже давно готова, но не смотря на такие логические отклонения циклы по отдельности работают, а по скольку я не программист, у меня и возник вопрос, можно ли не дублировать код, как это было показано в данном примере.

if (!$idb) {
for ($i=12; $i<13; ++$i) {
....
}
} else {
foreach($idb as $i) {
....
}
}

не красиво задваивать текст если можно этого не делать. в связи с этим и был вопрос, а реально ли это... а ответ как и следовало не соответствует никакой логике, за исключение подростковой, когда человек не знает и готов нести при этом всякую фигню, вместо изложения осмысленного ответа.

Спустя 8 минут, 9 секунд (24.04.2012 - 19:07) Гость_Михаил написал(а):
Цитата (twin @ 24.04.2012 - 16:21)
Ну так и есть. Грубейшие логические ошибки.
Но начинать нужно даже не с них, а со стиля в первую очередь. Вот отсюда. В подписи у меня есть ссылка, можно поправить сразу скопом.

Пежде чем навести порядок в логике, нужно навести порядок в мозгу. А этого не выйдет, если вместо кода такая каша. Приведи код в порядок, будем дальше рзбираться.

Да, еще один момент, like при обращении к базе с кодировкой utf-8 не находит файлы если они не того регистра. как правильно сделать запрос? может хоть на этот вопрос найдется ответ. smile.gif

Спустя 6 минут, 22 секунды (24.04.2012 - 19:13) twin написал(а):
Гость_Михаил
Цитата
типичный ответ вместо помощи

То есть то, что людям тяжело разбираться в таком бардаке для Вас не новость? Раз ответ типичный. Значит Вам уж указывали на то, что если Вы просите безвозмездной помощи, то должны как минимум уважать отвечающих и экономить их время? Писать читабельный код. И не сделали выводов.

Цитата
может хоть на этот вопрос найдется ответ
Ответы найдутся на любые вопросы, если Вы перестанете считать, что кто-то Вам чем то обязан и начнете сотрудничать, а не только просить.

Поверьте, это пойдет на пользу всем, если Вы научитесь писать читабельный код. Это не так сложно, а профиту будет вагон.

Спустя 8 минут, 34 секунды (24.04.2012 - 19:22) Гость_Михаил написал(а):
Спасибо за затраченное время и глубоко проработанные ответы smile.gif
Быстрый ответ:

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