ты мыслишь правильно но как-то не правильно пытаешься реализовать. на такой вот случай и были придуманы исключения. если что-то не так - выброшенное исключение прервет работу метода без возврата результата. если все ок но результата нет - возвращай тот же false, а если данные есть - возвращай полезные данные. ну уж если очень надо двойное состояние возвращать - всегда можно вернуть массивом а встречная часть может разбить массив в переменные
ДА ты прав переписал малость просто хотел удлжить всё в 1 запрос к базе а так получаться два сначало я проверяю есть ли записть а пото коли она есть делаю запрос и получаю её Код (PHP): $id_vopros = $conn->prepare('SELECT COUNT(0) AS ROW_COUNT FROM `vop` WHERE id = :id'); $id_vopros->execute(array('id' => $str)); $vopros = $id_vopros->fetch(PDO::FETCH_BOTH); if (!$vopros['ROW_COUNT'] == '1'){ $error = 'Данного овпроса не обнаружено';//ID вопроса не обноружено return $error; } Вторая часть Код (PHP): $id_vopros = $conn->prepare('SELECT FROM `vop` WHERE id = :id'); $id_vopros->execute(array('id' => $str)); $vopros = $id_vopros->fetch(PDO::FETCH_BOTH); return $vopros;
а что мешает спросить сразу запись? и если её нет - то её в ответе не будет. и ты сможешь обработать как отсутствие строки. ты упорно изобретаешь велосипед на костылях.
Да ещё раз спасибо ))))) Всё переделал 1 запрос 2 варианта ответа то что нужно было !!! Спасибо Добавлено спустя 1 минуту 56 секунд: А нет нифига я пришёл к тому с чего начал ))))) Добавлено спустя 1 минуту 42 секунды: В результате я не могу проверить как отрабтала функция ......... если ошибка то $error = 'Такого вопроса нет'; если есть то получаю массив с вопросом. А как проверить как отрабталась функция Добавлено спустя 2 минуты 14 секунд: Или писать ещё одну функцию для проврки? В случае успеха первой функции верёнм 0 потом на странице можно будет проверить типа if($data == 0) {} else {} и во второй функции всёравно надо писать ещё 1 запрос к базе
Код (PHP): <?php // tvoj zapros na poluchenije voprosa $zapros = "SELECT * FROM `voprosi` WHERE `identifikator_voprosa` = {$identifikator_voprosa}"; // vipolnenije zaprosa $rezultat = mysql_query($zapros); // poluchenije teksta oshibki $oshibka = mysql_error(); // proverka teksta oshibki if ($oshibka) { // zavershenije raboti esli est' oshibka die("MYSQL Oshibka: ", $oshibka); } // poluchenie stroki iz rezultata zaprosa $vopros = mysql_fetch_array($rezultat); // proverka stroki iz rezultata zaprosa if (!$vopros) { // funktsiya majeskuel_fetch_errej() vozvrashaet stroku s tekuschej pozitsii // iteratora rezultata ili FOLS esli boleje strok net // esli strok net srazu - srazu vernetsa FOLS // dlya tebya eto znachit chto... die("Vopros ne najden"); } // proverka sledujuschej stroki if(mysql_fetch_array($rezultat)){ // v poiske po unikalnomu identifikatoru ne dolzhno bit sledujuschej stroki // jejo nalichije v rezultate govorit ob oshibke v logike zaprosa ili // mozhet bit o potere tselostnosti bazi dannikh die("Najdeno boleje odnovo voprosa"); } // obrabotka voprosa edinstvennovo i nepovtorimovo // PS. ne schitaju ujebanstvom napisat kommentarii k kodu na translite tak kak // antjushka na njom programmu pishet // PPS. rasshirenije MYSQL vibrano potomu chto mne lenivo pisat pod PDO a // antjushka ne znakom s MYSQLI
Не ты не понял там ошибки работы скрипта быть не должно ошибка будет если например был запрос на несуществующую запись Sql просто вернет пустой результат а мне же его надо обработать создать ошибку и тд
это ты не понял. в моем листинге есть то что ты хочешь. просто ты не умеешь программы ни писать ни читать. иф-не-вопрос - как раз и есть секция в который как ты выражаешься обрабатывается пустой результат и создается ошибка. прочитай комментарии к коду, дундук.
Такой вопрос возник, о шаблонизаторе, есть файл с разметкой HTML, в нем встречается текст типа: Код (Text): [[[load_logo]]] Ну собственно мне в этом файле нужно выискать все эти конструкции и заменить на соответствующие данные (ну я надеюсь ясно что за место данной конструкции должна вызваться функция с названием load_logo), так вот вопрос, более дешевый способ тут будет искать через регулярку или же обычным поиском сначала искать '[[[', потом искать ']]]', вычленять текст между ними и его уже запускать. Что будет более дешевым?
регулярка будет быстрой (кешировать полюбас хорошо бы), но можно войти в мегаперебор на долгие секунды =)
Вообщем решил я проблему так Запускаем функцию передаём в неё параметр ID Код (PHP): $vopros = polychitVopros(trim($_GET['post'])); В самой функции Код (PHP): function polychitVopros($str) { $error = ''; // Если отсутствует строка возвращаем сообщение об ошибке if(!$str) { global $lang; $error = 'ID вопроса не обноружено';//ID вопроса не обноружено return $error; } $pattern = '|^[\d]+$|'; $result = preg_match($pattern, $str); if(!$result) { global $lang; $error = 'Недопустимые символы'; //Недопустимые символы'; return $error; } global $conn; $id_vopros = $conn->prepare('SELECT * FROM `vopros` WHERE id = :id'); $id_vopros->execute(array('id' => $str)); $vopros = $id_vopros->fetch(PDO::FETCH_ASSOC); if (!empty($vopros)) { $vopros['errors'] ='0'; return $vopros; } else { $error = 'ТАкого вопроса нет'; return $error; } } Если проверка прошла успешно добавляем в массив параметр errors ='0' После выполнения функции Код (PHP): if ($vopros['errors'] == '0') { echo 'Ошибок не обнаружено можно работать дальше';} else { echo 'Выявлена ошибка';}
Лучше слепи их оба в один массив тогда. Правда не очень понятно чем тебя фалс не устроил. Ну нет вопроса такого в бд и хер с ним.
К моей логике нет замечаний??? Мои действия правильные и обдуманные? Возможно как то упростить или написать по другому? Схема работы нормальная ???? Я сейчас адекватен ???? Мне можно доверить управление самолётом?
есть но мы уже точно знаем что бесполезно тебе что-то говорить. критика проходит мимо твоего сознания. может быть. каждый делает так как знает и понимает. сколько людей столько и мнений. тебе вот так удобно. может быть многим покажется решение убогим, но у каждого свой путь. рано тебе еще оптимизацией заниматься. потому что сначала нужно знаний набраться. оптимизация это когда ты понимаешь что и как оптимизировать а не когда тебе говорят и ты потом такой мол а мне парни сказали садишься переписывать всё. мы ведь тебе можем спецом неправильно сказать. а ты будучи без знаний схаваешь и поломается у тебя логика проекта ура. тебе самому нравится? тебе самому удобна? думаю многие выкинули бы твою схему и тебя бы уволили заодно, но как мы уже договорились - у каждого свой путь. на моей памяти ты никогда не был адекватен. не льсти себе. мы на форуме пхп-программистов. самолеты тут каким боком? вот ты и ответил на свой прошлый вопрос. ты неадекватен. ну или шутка у тебя совсем не смешная получилась. поставлю смайлик чтоб ты не сильно обижался на меня
исходя из задачи ты плодишь лишние сущности. Функция должна возвращать либо массив с полями, либо фалс. Этого достаточно и даже более чем.
Вообщем всё нормально функция всегда теперь возвращает массив различие только в содержание массива если ошибка то возвращаеться массив с ошибкой и циферкой один если всё удачно то массив с данными и цеферкой ноль. Вопрос про отправку данных возник. Есть форма Код (Text): <form method="POST" action="test.php"> <textarea rows="8" name="otvet" cols="50"></textarea> <input type="text" name="id"> <input type="submit" value="Ответить"> </form> Проблема в том что я не понимаю как отправить ещё 1 параметр ID новости. Её я изначально получил GETом а вот как отправить её через форму POSTом???? Раньше я делал поле Код (Text): <input type="text" name="id"> потом прятал через display: none но как то можно по другому реализовать ?
На сколько мне известно input пишется так: Код (Text): <input type="text" value="hello" /> Обратите внимание на 2 последних символа.
Браузеры справятся в любом случае, но если цель в написании чистого кода, проходящего любой валидатор, то надо придерживаться стандартов — либо HTML, либо XHTML. Это может иметь значение при прохождении профессиональных тестов.