[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: array() в запросе
Gabriel
вот дали почитать исходники сайта нашел какойто дико интересный запрос вот такого вида:
$select=$BD->SelectTabla('usuarios',array('*'),array('user'=>$_POST['user'],'estado'=>0));
    $long=$select->length;

етот запрос находиться в функции востановления данных пользователя.
на всякий случай выложу всю функцию.
Свернутый текст
function Recordar(){

global $BD, $CONFIG;

$select=$BD->SelectTabla('usuarios',array('*'),array('user'=>$_POST['user'],'estado'=>0));
$long=$select->length;

$xml = "<xml>\\n\\t";
if($long==1){

$cuerpo = file_get_contents("./includes/mail_recuerda.html");
$username = $select->ItemCol(0,'user');
$userpass = $select->ItemCol(0,'pass');

$mensaje = "тут письмо с данными пользователя";

$cuerpo = str_replace("[[TEXTO]]", $mensaje, $cuerpo);
$cuerpo = str_replace("[[RAIZWEB]]", $CONFIG['raiz_web'], $cuerpo);

$header = "MIME-Version: 1.0\\n";
$header.= "Content-Type: text/html; charset=ISO-8859-1\\n";
$CONFIG['mail_to']="javi.fernandez@ipdea.com";
$header.= "From: ".$CONFIG['mail_to']."\\n";
//$header.= "Bcc: ".$CONFIG['mail_to']."n";

$ok = mail($select->ItemCol(0,'email'), 'Recordatorio de datos SEPD', $cuerpo, $header);

//$ok = mail('javi.fernandez@ipdea.com', 'Recordatorio de datos SEPD', $cuerpo, $header);
if ($ok){
$xml.="<resultado>1</resultado>";
}else{
$xml.="<resultado>0</resultado>";
}
}
else{
$xml.="<resultado>0</resultado>";
}

$xml.= "\\n</xml>";

header("Content-Type: text/xml;charset=ISO-8859-1");
echo $xml;
}

вообшем непонятна конструкция запроса для чго применяються такие конструкции и вообше стоит ли применять такие струкры?



Спустя 13 минут, 45 секунд (3.11.2009 - 23:52) glock18 написал(а):
PHP
$BD->SelectTabla('usuarios',array('*'),array('user'=>$_POST['user'],'estado'=>0));


это самая распространенная реализация ORM. То есть это вряд ли можно назвать ORM, но ноги растут оттуда.

А как прочитать параметры - можно и нужно посмотреть исходники этого метода и класса в целом.

могу предположить:
1 аргумент - имя таблицы
2 аргумент - список полей для выборки. видимо выставляются implode'ом, поэтому такой финт с * прокатывает.
3 аргумент - похож на where. думаю, что получится where user = $_POST['user']. На самом деле, не совсем удачная реализация, если нет альтернативы передавать условие строкой. Могут быть проблемы со сложными условиями с кучей or/and и т.д.

4 аргумент - могу только гадать. испанский не знаю, но могу предположить, что это limit. а 0 означает, что лимит не нужен.

Спустя 4 минуты, 24 секунды (3.11.2009 - 23:57) Gabriel написал(а):
glock18
ну последний ето статус скорее всего, была бы БД тогда можно сказать, а так сам в догадках:) спасибо за оперативный ответ

Спустя 46 минут, 51 секунда (4.11.2009 - 00:44) twin написал(а):
Яркий пример "удобства" всяких подобного рода "улучшений" посредством ООП.
Вот и гадайте теперь на кофейной гуще... Нет что бы нормальный, человеческий запрос написать, начинаются всякие PDO, ORM, шаурмэ. Горе от ума. biggrin.gif

Спустя 11 минут (4.11.2009 - 00:55) Dron19 написал(а):
А как сделать свернутый текст, чтобы нажимая на + он разворачивался?

Спустя 6 минут, 27 секунд (4.11.2009 - 01:01) Gabriel написал(а):
twin
это именно та мысль которая пришла мне в голову как только я ето увидел а еше с толку сбивают последние 3 переменные вот тут
Свернутый текст
PHP
function PintaImagen(){
    
    global 
$BD,$row;
    
    
$select=SelectTabla("personalizacion",array('*'),array('borrado'=>0,'id'=>1));

    
$row2=mysql_fetch_assoc($select);

    

    
$select=SelectTabla("personalizacion",array('*'),array('borrado'=>0,'id'=>2));
    
    
$row3=mysql_fetch_assoc($select);

    
$row=array();

    
$row['imagen']=$row2['imagen'];
    
$row['texto']=$row3['texto'];
    
$row['imagen_url'] = $row2['url'];

}

да и вообше сайт мечта любого хацкера ниодного ескейпа данных которые проходят через БД, я ненашел.

Спустя 48 минут, 31 секунда (4.11.2009 - 01:50) glock18 написал(а):
twin
Gabriel
комментарии надо читать. а тем кто пишет, надо их писать.

если формировать запрос прямо в коде, то поверьте понятнее точно не станет.

Спустя 1 час, 21 минута, 25 секунд (4.11.2009 - 03:11) twin написал(а):
Цитата
если формировать запрос прямо в коде, то поверьте понятнее точно не станет.

Станет. Еще как. Любой программист знает SQL, а вот испанский только Gabriel знает. И то разобраться не смог. Если было бы по человечески написано:
PHP
<?php

$select 
= mysql_query("SELECT * FROM `usuarios` 
                       WHERE `user`='"
.$_POST['user'] ."' 
                       AND `estado`= 0"
);
                       
$long 
= mysql_num_rows($select);

то он бы вопрос этот не задал бы.
И более того, сам разработчик бы увидел всю кривизну этого запроса. И не нужно говорить, что гдето там, за семью горами, в каком то классе наверно обрабатываются переменные. И что как то там звездочка - это не все колонки а всего лишь COUNT.
Я этого не вижу и не увижу никогда. А вот в моем варианте все на месте. И вопросов немае biggrin.gif
Так что мазохизм это и садизм тоже, а не удобство. Тьфу. laugh.gif

Спустя 52 минуты, 16 секунд (4.11.2009 - 04:03) SunSet написал(а):
twin
Когда это ты таким простым стал?)) Обычно, в моем понимании единица, а у тебя на уме чтото вроде ((954 / 4 - 58.3) * 0.5 - 0.1) / 90 smile.gif

Спустя 9 минут, 55 секунд (4.11.2009 - 04:13) kirik написал(а):
/* во блин, и вправду единица.. */

Спустя 47 минут, 1 секунда (4.11.2009 - 05:00) twin написал(а):
Цитата
Когда это ты таким простым стал?))

Приехали... Для меня избыточность и непрозрачность кода - самый злой враг. Конечно я не призываю никого следовать моему примеру, каждый пишет по своему. Но лично я никак не понимаю, зачем усложнять то, что и так прекрасно работает
Вот допустим аплоадер, который на конкурсе разбирали, тот да. Если не классом делать его - черт ногу сломит. Там это удобно и на своем месте.
А зачем коверкать язык SQL всякими приблудами - ни когда не пойму. Нет в этом пользы никакой. Вообще никакой пользы. Мы разбирали это уже.
Горе от ума, говорю же... Раз умеешь писать на ООП, значь иначе никак уже.
Вот автор этого произведения видимо нахватался верхушек и решил под крутого закосить. Смотрится впечатляюще - для ламера. А на поверку - кривизна и дыры.
Зато крууууто - ORM!!!
Если дыры запрятаны в нечитабельность, это не значит, что их нету. Как ребенок - закрыл глаза, я в домике значит. biggrin.gif

Спустя 35 минут, 22 секунды (4.11.2009 - 05:36) Gabriel написал(а):
glock18
код без кaментов не есть хорошо.
twin
если бы по человерчески яб не услышал абревиатуры ORM laugh.gif
ну наверное ORM не просто так придумали и есть случаи где желательно использовать? или я неправ?
SunSet
а кады твин вообше чтолибо усложнял? вроде такого неприпоминаю.

Спустя 25 минут, 29 секунд (4.11.2009 - 06:01) twin написал(а):
Цитата
ну наверное ORM не просто так придумали и есть случаи где желательно использовать? или я неправ?

Есть конечно. На конвеере.
Тут по аналогии с ювелирной промышленностью. Заводские изделия делаются штамповкой, быстро и однообразно.
Штамповальный станок - это ORM.
А вот Мойша - ювелир из одессы не знает как на этом станке работать. И Фаберже не знает. Однако их изделия ценятся на сто порядков выше. Потому что ручная, эксклюзивная, с душой сделанная работа.

Так что если у тебя стопицот заказчиков в очереди на почти одинаковые сайты - тут как раз к месту. Быстро, дешево и сердито.
А если ты рейтинга хочешь и цениться как программист, а не как вебмастер, то все эти приблуды (ORM, фреймворки, шаблонизаторы и иже с ними) советую оставить в покое. Знать их конечно надо, но писать на них...
Какой же ты программист тогда... Халявщик)))

Спустя 5 часов, 18 минут, 41 секунда (4.11.2009 - 11:20) glock18 написал(а):
twin
Как обычно не согласен smile.gif

То что выше нисколько ни круто, и там ORM только где-то на горизонте маячит. Никто и не говорил, что ORM круто кстати. Вот ты говоришь, что все жутко как запутано, а посмотреть как будто кто-то мешает.

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

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

Спустя 31 минута, 20 секунд (4.11.2009 - 11:51) SunSet написал(а):
twin
Gabriel
Это сложно для понимания новичком:
PHP
$mod = !empty($_GET['mod'])?$_GET['mod']:NULL;


А это в самый раз:
PHP
if (isset($_GET['mod'])) $mod $_GET['mod'];
else 
$mod="";


Только не нужно разводить демогогию про то как правильно и как нет - работать будет и то и то нормально. smile.gif

Спустя 33 минуты, 46 секунд (4.11.2009 - 12:25) Gabriel написал(а):
SunSet
ну если новичку обьяснить что такое первая запись, а не просто пульнуть ей в него то он все поймет и она будет казаться ему такой же простой.
ЗЫ. нащет NULL незнаю как народ в обшем но я както с первого взгляда на него понял что это такое и зачем оно там стоит.

Спустя 13 минут, 23 секунды (4.11.2009 - 12:38) twin написал(а):
Цитата
Это сложно для понимания новичком:

Это смотря как объяснять. Если обяснять так:
Цитата
Тернарный оператор. В зависимости от выполнения условия возвращает правое или левое значение.
то наверно сложно. А если так:
Цитата
Переменная спрашивает: истинно ли условие. Если да, то будет равна левой половине, до двоеточия. Если нет, то правой.
то проще. А сам оператор компактнее и красивее. Ничего тут сложного...
Цитата

Вот ты говоришь, что все жутко как запутано, а посмотреть как будто кто-то мешает.

Ну а чтож ты не посмотрел? Что вот это такое?
Цитата
могу предположить:
1 аргумент - имя таблицы
2 аргумент - список полей для выборки...
зачем предполагать, когда можно сразу все увидеть... А если нет такой возможности - посмотреть? Мало ли что в жизни бывает. Да и время надо, чтоб искать это все по классам и сопоставлять в единую картину.
Хрень это все. Путаница и никакой практической пользы.
Формировать запрос вполне недурственно можно и без этих извращений. Хоть сразу, хоть постепенно. Только гораздо приятнее читать книгу на родном языке, чем каждый раз нырять в справочник. Как в твоем случае - в классы. Смотреть что там какие методы вытворяют с бедным SQL.

Цитата
ООП - сила,
никто и не спорит. Но только на своем месте. А обычно доводят это до абсурда и считают что шибко круто.
Цитата

он для того, чтобы потом не оказалось, что вот мы делали все детали болты отдельно, а они у нас разные получились.
вот именно. Если нужны одинаковые болты - применяем штамп. То есть класс. Вполне оправданно. А настраивать огромный пресс, делать матрицу и пуансон для того, что бы сделать один болтик - абсурд. Его можно руками выточить. И резьбу нарезать. И если ты мастер, то он гораздо точнее выйдет, чем штампованный, с заусенцами и погрешностями огромного пресса.
Другой вопрос, что оператор уже считает впадлу взять в руки лерку, а лучше будет свою махину настраивать. Потому что он крут, он не слесарь, а Оператор Огромного Пресса. biggrin.gif

Спустя 53 минуты, 35 секунд (4.11.2009 - 13:32) SunSet написал(а):
twin
Лично вот для меня - ту твою запись я понимаю, но вот запомнить никак)) Это чтото вроде сокращенного варианта вставок эко в хтмл-код по Котерову: <?=$main['any']=?> или както так, точно сейчас не вспомню.
То что твой вариант компактнее - согласен, но то что проще - то нет. Поповцы даже не знают что такое NULL.

Спустя 3 минуты, 27 секунд (4.11.2009 - 13:35) glock18 написал(а):
SunSet
если это сложно, то я даже не знаю что сказать smile.gif

Спустя 23 минуты, 6 секунд (4.11.2009 - 13:58) Gabriel написал(а):
SunSet
вторй знак равенства насколько помню лишний и насколько поню при выключенных коротких тегах в php.ini вставка такая работать небудет.
ПХП язык не тяжелый если ты читаеш а потом делаеш или если ты понимаеш что делаеш.
если ошибаюсь поправьте.

Спустя 1 час, 57 минут, 50 секунд (4.11.2009 - 15:56) SunSet написал(а):
Gabriel
Я сказал что примерно описал ту конструкцию, по которой Котеров делает. Хотя у него там вообще хтмл и пхп в коротких тегах в перемешку, хотя как он утверждает, такой подход будет "намного понятней" для незнающего пхп дизайнера.
Вобщем, каждый должен делать так, чтобы было понятно для себя лично, а во вторую очередь для когото, если сайт для личных нужд делается. А то взять три самоучителя по пхп и в каждом будет разный подход - один отделяет логику от хтмл, второй кучей пишет, третий через принт хтмл выводит.


_____________
one step, two steps HERE WE GO!!!
Быстрый ответ:

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