Иногда нужно вывести текст не полностью, а – только заданной длинны. Например, нужно вывести первые 200 символов текста без разрыва слов. Решение такое: PHP: $n = strpos ($text.' ', ' ', 200)-1; $text = substr ($text1, 0, (strlen($n) < 200 ? 200 : $n)); или так: PHP: if (strlen($text)>200) { $text = substr ($text, 0,strpos ($text, " ", 200)); echo $text; } else echo $text; А есть ли ещё способы?
Gervorovski Ваш вариант работает? Попробуйте это: PHP: $len = 200; $text = substr($text, 0, strrpos(substr( $text, 0, $len ), ' ')));
Так вопрос такой. Имею index.php?k=next&id=5 на этой странице есть 2 формы 1 инпут текстовый. пока ее не введу 2я форма скрыта туда ввожу любое натур. число 2 появляется новые инпуты в количестве введенном в предыдущей форме. Каждая форма имеет name=\"cname".$i"\" . Где $i число 1 до введенного числа. Нужно записать поочередно каждый инпут в бд mysql. Как с помощью цикла это можно автоматизировать. у каждой формы новый $_POST['cname1'] $_POST['cname2'] и тд В этом у меня и загвоздка, есть варианты? как по конкретному запросу, так и по его логике
Dimaus Сперва прочитайте это - https://forum.antichat.ru/thread30641.html Потом замените name=\"cname".$i"\" на name=\"cname[".$i"]\" Тогда в коде: PHP: $tabellenname="category"; foreach($_POST['cname'] as $cname) { $sql="INSERT INTO $tabellenname(`rest`, `cname`, `date`) VALUES('".$id."', '".$cname."', now())"; mysql_query($sql) or die(mysql_error()); } Плюс придется проверять, что вам передали массив
Так не пойдёт. Давайте сделаем сравнение: PHP: <?php $str=" *фs@*/+"; // исходная строка для наглядности - utf8 // в начале строки не видно первые 2 символа: // 1. chr(32) или 0x20 2. chr(160) или 0xA0 // для сохранности работоспособности скрипта при копировании: $str=base64_decode('IMKg0YRzQCovKw=='); echo urlencode($str).'<BR>'; echo rawurlencode($str).'<BR>'; echo '<script>document.write(escape("'.addslashes($str).'"));</script>'; ?> вывод строки после urlencode, rawurlencode, escape соответственно: +%C2%A0%D1%84s%40%2A%2F%2B %20%C2%A0%D1%84s%40%2A%2F%2B %20%u0412%A0%u0421%u201Es@*/+ зелёный - идентичное преобразование для cp1251 +%A0%F4s%40%2A%2F%2B %20%A0%F4s%40%2A%2F%2B %20%A0%u0444s@*/+
всем привет,как делаються гет запрос вида index.php?k=next&id=5 ? покажите пример и где можно прочитат про это?
так и делается, а что собственно не понятно? ставим ссылочку, в нее подставляем параметры через амперсант, принимаем, обрабатываем, выводим index.php?k=$next&id=$id принимаем $k = $_GET['next'] так же и с ид; обрабатывем функциями и выводим
Ребята подскажите как убрать позицию в модуле adsmanager advanced search Вот сам код поиска: PHP: <div class="adsmanager_inner_box"> <div align="left"> <table id="adsmanager_fieldset_s"> <form action="<?php echo sefRelToAbs("index.php");?>" method="get"> <tr><td><?php echo ADSMANAGER_FORM_CATEGORY; ?></td> <td><select name="catid" > <option value="0" <?php if ($catid == 0) echo 'selected="selected"'; ?>><?php echo ADSMANAGER_MENU_ALL_ADS; ?></option> <?php mods_selectCategories(0,"",$cats,$catid,1,0); ?> </select></td></tr> <input type="hidden" name="option" value="<?php echo $option; ?>" /> <input type="hidden" name="page" value="show_result" /> <?php foreach($fields_searchable as $fsearch) { if (($catid == 0)||(strpos($fsearch->catsid, ",$catid,") !== false)||(strpos($fsearch->catsid, ",-1,") !== false)) { echo "<tr><td>".mods_getLangDefinition($fsearch->title)."</td><td>"; switch($fsearch->type) { case 'checkbox': if(mosGetParam( $_GET, $fsearch->name)=='1'){ echo "<input class='inputbox' type='checkbox' name='$fsearch->name' value='1' checked/>\n"; }else{ echo "<input class='inputbox' type='checkbox' name='$fsearch->name' value='1' />\n"; } break; case 'multicheckboximage': echo "<table class='cbMulti'>\n"; $k = 0; $ng = 0; for ($i=0 ; $i < $fsearch->rows;$i++) { echo "<tr>\n"; for ($j=0 ; $j < $fsearch->cols;$j++) { $fieldvalue = @$field_values[$fsearch->fieldid][$k]->fieldvalue; $fieldtitle = @$field_values[$fsearch->fieldid][$k]->fieldtitle; $fieldtitle = "<img src='$mosConfig_live_site/images/$option/fields/$fieldtitle' alt='$fieldtitle' />"; echo "<td>\n"; if (isset($field_values[$fsearch->fieldid][$k]->fieldtitle)) { if($fieldvalue==$_GET[$fsearch->name][$ng]){ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."[]' value='$fieldvalue' checked/> $fieldtitle \n"; $ng++; }else{ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."[]' value='$fieldvalue'/> $fieldtitle \n"; } } echo "</td>\n"; $k++; } echo "</tr>\n"; } echo "</table>\n"; break; case 'multicheckbox': echo "<table class='cbMulti'>\n"; $k = 0; $ng = 0; for ($i=0 ; $i < $fsearch->rows;$i++) { echo "<tr>\n"; for ($j=0 ; $j < $fsearch->cols;$j++) { $fieldvalue = @$field_values[$fsearch->fieldid][$k]->fieldvalue; $fieldtitle = @$field_values[$fsearch->fieldid][$k]->fieldtitle; if (isset($fieldtitle)) $fieldtitle=mods_getLangDefinition($fieldtitle); echo "<td>\n"; if (isset($field_values[$fsearch->fieldid][$k]->fieldtitle)) { if($fieldvalue==$_GET[$fsearch->name][$ng]){ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."[]' value='$fieldvalue' checked/> $fieldtitle \n"; $ng++; }else{ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."[]' value='$fieldvalue'/> $fieldtitle \n"; } } echo "</td>\n"; $k++; } echo "</tr>\n"; } echo "</table>\n"; break; case 'radio': case 'select': echo "<select id='".$fsearch->name."' name='".$fsearch->name."'>\n"; echo "<option value='' > </option>\n"; if (isset($field_values[$fsearch->fieldid])) { foreach($field_values[$fsearch->fieldid] as $v) { $ftitle = mods_getLangDefinition($v->fieldtitle); if(mosGetParam( $_GET, $fsearch->name,'')==$v->fieldvalue){ echo "<option value='$v->fieldvalue' selected>$ftitle</option>\n"; }else{ echo "<option value='$v->fieldvalue' >$ftitle</option>\n"; } } } echo "</select>\n"; break; case 'file': if(mosGetParam( $_GET, $fsearch->name,'')==1){ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."' value='1' checked/> $fsearch->fieldtitle \n"; }else{ echo "<input class='inputbox' type='checkbox' name='".$fsearch->name."' value='1'/> $fsearch->fieldtitle \n"; } break; case 'multiselect': echo "<select name=\"".$fsearch->name."[]\" multiple='multiple' size='$fsearch->size'>\n"; if (isset($field_values[$fsearch->fieldid])) { $ng = 0; foreach($field_values[$fsearch->fieldid] as $v) { $ftitle = mods_getLangDefinition($v->fieldtitle); if($v->fieldvalue==$_GET[$fsearch->name][$ng]){ echo "<option value='$v->fieldvalue' selected>$ftitle</option>\n"; $ng++; }else{ echo "<option value='$v->fieldvalue' >$ftitle</option>\n"; } } } echo "</select>\n"; break; case 'price': //ЦЕНА ОТ И ДО ?> <input class="inputbox" type="text" VALUE="1" size="3" maxlength="20" class="inputbox" name="pr_ot" /> до <input class="inputbox" type="text" size="3" maxlength="20" name="pr_do" /> <?php break; break; break; case 'textarea': case 'number': case 'emailaddress': case 'url': case 'text': } echo "</td>"; } }?> </table></div> <script> function raskr(containerid){var gg=document.getElementById(containerid);if(gg.style.display=="block"){gg.style.display="none";}else{gg.style.display="block";}} function wwwt(){raskr('pppt');raskr('pppt2');} </script> <center><input type="submit" id="pppt" style="display:block;" onClick="wwwt();" value="Показать" <?php echo ADSMANAGER_SUBMIT_BUTTON; ?>" /></center> <center><span id="pppt2" style="display:none;" ><?php echo ADSMANAGER_WAIT; ?></span></center> <input type="hidden" name="Itemid" value="<?php echo $itemid;?>" /> </form> </div> Нужно убрать одну позицию, вот к примеру на сайте: http://krascapital.ru Убираем поле "Тип", и нужно чтоб это поле не отображалось только на главной странице. Бился-бился, так и не понял( Решение: В админке добавить полю "описание" которое нужно убрать, напрмер 123. В запросе модуля поиска подправить запрос с: PHP: $database->setQuery( "SELECT f.* FROM #__".$dboption."_fields AS f ". "WHERE f.searchable = 1 AND f.published = 1 ORDER by f.ordering" ); на: PHP: $database->setQuery( "SELECT f.* FROM #__".$dboption."_fields AS f ". "WHERE f.searchable = 1 AND f.published = 1 AND f.description <> 123 ORDER by f.ordering" ); т.е. показаны будут все поля кроме тех у которых описание равно 123
Dimasof Это раздел для новичков,а не "пишем/редактируем программы на халяву" думаю к сообщению выше приемлема цена вопроса, думаю мало у кого возникнет желание твой скрипт изучать. Nelz Добавлю к сообщению Andres что отправлять значения можно не только по ссылке, но через форму как в случае с POST запросом, только форма будет выглядеть примерно: <form action="index.php" method="GET"> Ну а как подхватывать переменную уже написано, вообще GET используется в основном для удобной выборки из БД и проставлению ссылок под каждое выбраное значение, как вариант id таблицы равно переменной GET, ну или там для реф системы, для всего остального есть POST.
Потому, что с точки зрения PHP (и не только) некорректного здесь ничего нет. Просто цикл без тела. В итоге весь ассоциативный массив вхолостую обходится в цикле, а в $field_name остается значение последней ячейки. Подробнее здесь.
<? $b=array(); $m=file('in.txt'); foreach($m as $k => $e) { if (($e>=0) and ($e<=500)) {$b[$k]=15000;} if (($e>=500) and ($e<=700)) {$b[$k]=18000;} if (($e>=700) and ($e<=1000)) {$b[$k]=23000;} if (($e>=1000) and ($e<=1300)) {$b[$k]=26000;} if (($e>=1300) and ($e<=1600)) {$b[$k]=29000;} if (($e>=1600) and ($e<=1900)) {$b[$k]=34000;} if (($e>=1900) and ($e<=2100)) {$b[$k]=38000;} if (($e>=2100) and ($e<=2400)) {$b[$k]=42000;} if (($e>=2100) and ($e<=2400)) {$b[$k]=44000;} if (($e>=2400) and ($e<=2700)) {$b[$k]=46000;} if (($e>=2700) and ($e<=3000)) {$b[$k]=48000;} if (($e>=3000) and ($e<=3300)) {$b[$k]=53000;} if (($e>=3300) and ($e<=3600)) {$b[$k]=56000;} if (($e>=3600) and ($e<=3900)) {$b[$k]=60000;} if (($e>=3900) and ($e<=4200)) {$b[$k]=65000;} if (($e>=4200) and ($e<=4500)) {$b[$k]=70000;} if (($e>=4500) and ($e<=4800)) {$b[$k]=75000;} if (($e>=4800) and ($e<=5100)) {$b[$k]=80000;} if (($e>=5100) and ($e<=5400)) {$b[$k]=85000;} if (($e>=5400) and ($e<=5700)) {$b[$k]=90000;} if (($e>=5700) and ($e<=6000)) {$b[$k]=95000;} } touch('result.txt'); //создал файл $res = fopen ('result.txt',"r+"); //отркыл на запись fputs ($res,"$b[$k]"); // записал в файл fclose($res); print $b[$k] ?> скрипт пересчета - берет данные из файла in.txt там около 1000 числовых значений в столбик. должен пересчитать и записать в файл проблема в том - что сейчас он пересчитывает последнюю строку файла а нужно чтобы каждую строку массива пересчитал и записал подкиньте идею спасибо
Какой-то статистический скрипт? Опиши словами, что ты пытаешься "пересчитать". Вроде у тебя между числами в скрипте прослеживается некая зависимость. Не проще ли было оформить не десяток ветвлений, а один цикл? И у тебя каждое число входит в два интервала. Т.е. должно быть либо так: PHP: if (($e >= 0) and ($e <= 500)) {$b[$k]=15000;} if (($e > 500) and ($e <= 700)) {$b[$k]=18000;} if (($e > 700) and ($e <= 1000)) {$b[$k]=23000;} Либо тебе нужно if менять на elseif. А записывается только последняя строчка потому, что ты запись в файл делаешь уже вне цикла. Зачем touch() используешь? Создание файла перед записью решается флагом "w" у fopen().
интервалов много - и число как раз должно сравниться с подходящим интервалом - и ему присвоят значение этого интервала числа в файле in и их около 1000
dokwill сформулируйте конечную цель, складывается ощущение, что вы пошли не тем путем изначально. В принципе, то что вы сейчас хотите - можно решать так: PHP: $diap = array(array(0, 500, 15000), array(500, 700, 18000), array(700, 1000, 23000), array(1000, 1300, 26000), array(1300, 1600, 29000), array(1600, 1900, 34000)); $default_value = 100500; function check($in) { global $diap, $default_value; $in = intval(trim($in)); foreach($diap as $val) { if (($val[0]<=$in) and ($val[1]>=$in)) return $val[2]; } return $default_value; } $m=file('in.txt'); $res = fopen ('result.txt',"wb"); foreach($m as $k => $e) { fwrite($res, check($e)."\r\n"); } fclose($res); Это топорное решение в лоб, если вычислять нужно не очень много и не очень часто. Оно позволяет упростить ввод диапазонов, и если диапазоны не подчиняются никакой зависимости. Если диапазонов очень много (больще 100) и вычислять нужно часто, то лучше использовать не перебор, а дихотомию отрезков. Или же, если диапазоны подчиняются некоторому закону, например в вашем примере от 2100 до 6000 - разбиваются на отрезки длиной 300, а результат изменяется постоянно на 5000, то можно сделать все еще быстрее