В принципе нечего не имею против костылей, я обычно так и учусь, сначала делаю как нибудь лишь бы работало, а потом уже глядя на рабочий пример, ищу способ сделать его правильно)) НО этот костыль не заработал(
И ещё, попробуйте так сделать: PHP: ?php $this->load->database(); $col = $this->db->query("SELECT count(1) FROM `table` WHERE `key_c`='imy_tovara'"); $col = $col->row_array();?> <li class="active"><a data-toggle="tab" href="#panel1_3">Отзывы о товаре (<?php echo $col;?>)</a></li>
вот результат: Код (Text): Array ( [count(1)] => 10 ) Причем 10 это действительно правильное значение, записей действительно 10
Пожалуйста)) Я тоже новичок. У более опытного получилось бы быстрее))) А я - так, помогаю чем могу, и учусь за одно сам)
Ну более опытных не нашлось видимо, благодарен что появились Вы) У меня на самом деле еще один вопрос появился, можно ли средствами php определить ссылку в строке браузера, вернее её часть? Например ссылка http://domain.ru/product/imy_tovara_2, нужно выделить из нее окончание, то есть часть после последнего "/", то есть "imy_tovara_2". В JS я это делаю вот таким образом: Код (Javascript): var url = document.location.pathname, page_url = url.split('/')[2]; // при ссылке http://domain.ru/product/imy_tovara_2, page_url будет равно imy_tovara_2 Можно ли что-то подобное сделать с помощью php?
$_SERVER['PHP_SELF'] возвращает всё что после домена, то есть /product/imy_tovara_2 . А то что нужно можно обрезать функцией str_replace("/product/", "", $_SERVER['PHP_SELF']);
Добрый день! Надеюсь не надоел еще, потому как у меня снова возникли непонятки)) Вопрос на счет определения ссылки я задавал для того что бы в скрипте, с которым Вы мне вчера помогли, заменить постоянное значение 'imy_tovara', на переменную которая и будет содержать 'imy_tovara', 'imy_tovara_2', 'imy_tovara_3' и т.д., в зависимости от страницы (ссылки на нее). У меня получился вот такой скрипт: PHP: <?php $page_url = str_replace("product/", "", uri_string()); // uri_string() в кодигнайтере заменяет $_SERVER['PHP_SELF'] $col_1 = $this->db->query("SELECT count(1) FROM `comments` WHERE `key_c`='$page_url'"); $col_1 = $col_1->row_array(); $col_2 = $this->db->query("SELECT count(1) FROM `question` WHERE `key_q`='$page_url'"); $col_2 = $col_2->row_array(); ?> <li class="active"><a data-toggle="tab" href="#panel1_3">Отзывы о товаре <span id="comments_num">(<?php echo $col_1["count(1)"];?>)</span></a></li> <li><a data-toggle="tab" href="#panel2_3">Вопросы о товаре <span id="question_num">(<?php echo $col_2["count(1)"];?>)</span></a></li> И все работает как нужно, НО есть одна малюсенькая мелочь которая меня очень расстраивает и я не могу с ней разобраться с вчерашнего вечера. Я хочу что бы при добавлении отзыва циферка которая показывает количество отзывов, то есть значение $col_1["count(1)"], сразу же обновлялось, то есть добавили 1 отзыв и цифра сразу же увеличилась на 1. Для этого я обернул это значение в спан с уникальным id и обновляю его с помощью ajax и jq функции: Код (Javascript): $("#question_num").load("index.php #question_num"); . НО оно не обновляется, а обнуляется, то есть становиться равным нулю. Если страницу обновить, то все в порядке, показываться правильно значение (уже увеличенное на количество новых отзывов). Интересно вот что если не использовать переменную $page_url в качестве параметра `key_c`, а оставить как было, с постоянным значение 'imy_tovara' то есть: PHP: <?php $page_url = str_replace("product/", "", uri_string()); // uri_string() в кодигнайтере заменяет $_SERVER['PHP_SELF'] $col_1 = $this->db->query("SELECT count(1) FROM `comments` WHERE `key_c`='imy_tovara'"); $col_1 = $col_1->row_array(); $col_2 = $this->db->query("SELECT count(1) FROM `question` WHERE `key_q`='imy_tovara'"); $col_2 = $col_2->row_array(); ?> <li class="active"><a data-toggle="tab" href="#panel1_3">Отзывы о товаре <span id="comments_num">(<?php echo $col_1["count(1)"];?>)</span></a></li> <li><a data-toggle="tab" href="#panel2_3">Вопросы о товаре <span id="question_num">(<?php echo $col_2["count(1)"];?>)</span></a></li> То обновление данного значение происходит без сбоем, то есть - добавил отзыв, циферка сразу же увеличилась на +1.
Я конечо, не знаю, на сколько это будет правильно с точки зрения производительности, но я бы сделал ajax скрипт, можно функцию, которая возвращает количество записей, и средствами jq уже заменял. ТК я никогда не работал с load(); Код (Javascript): <script type="text/javascript"> var url = document.location.pathname, page_url = url.split('/')[2]; $.ajax({ url: 'ajax.php?name=page_url', success: function(data) { $("#question_num").text(data); } }); </script> <li class="active"><a data-toggle="tab" href="#panel1_3">Отзывы о товаре <span id="comments_num">(<?php echo $col_1["count(1)"];?>)</span></a></li> <li><a data-toggle="tab" href="#panel2_3">Вопросы о товаре <span id="question_num">(<?php echo $col_2["count(1)"];?>)</span></a></li> В обработчик (ajax.php) PHP: $db = mysqli_connect ('host', 'user', 'pass', 'db'); function num_comments($name) { $col_r = mysqli_query ($db, "SELECT count(1) FROM `comments` WHERE `key_c`='$name'"); $col = mysqli_fetch_assoc ($col_r); return ($col["count(1)"]); } mysqli_close($db); if (isset ($_GET["name"])) { num_comments($_GET["name"]); }