остановка повторяющихся значений в результатах поиска

1

это мой результат поиска. как вы видите, повторяющиеся резултаты. это правда, но не слишком красиво иметь одно имя сервалов.

Изображение 174551

код:

<?php

   $db_host = 'localhost';
   $db_name= 'site';
   $db_table= 'tablesite';
   $db_user = 'root';
   $db_pass = '';



   $con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET  utf8");
$dbresult=mysql_query("SELECT tablesite.name,
                              tablesite.family,
                              tablesite.phone_number,
                              job_list.job_name,
                              relation.comments,
SUM(CASE WHEN action.vote !='' AND action.customer_comment ='' THEN 1 ELSE 0 END) positive,
SUM(CASE WHEN action.vote !='' AND action.customer_comment !='' THEN 1 ELSE 0 END) negative

                       FROM tablesite
                       INNER JOIN relation
                       on tablesite.id_user=relation.user_id
                       INNER JOIN job_list
                       on relation.job_id=job_list.job_id 

                       left JOIN action
                       ON tablesite.id_user=action.service_provider_id
                       WHERE job_name LIKE '%".$_POST['search']."%'
                               OR name LIKE '%".$_POST['search']."%'
                               OR family LIKE '%".$_POST['search']."%'
                       group by name,family,job_name,phone_number",$con);
?>
   <title>نتایج جستجو</title><fieldset class="fdex"  dir="rtl">
    <legend><span class="style4">نتایج جستجوی مشاغل</span></legend>

   <?php

   while ($row = mysql_fetch_array($dbresult, MYSQL_ASSOC)) {

   printf("نام: %s   %s &nbsp&nbsp&nbsp
           شغل: %s &nbsp&nbsp&nbsp
           شماره تلفن: %s &nbsp&nbsp&nbsp
           عملیات های موفق: %s &nbsp&nbsp&nbsp
           عملیات نا موفق: %s &nbsp&nbsp&nbsp
           توضیحات: %s<br>",
           $row["name"],
           $row["family"],
           $row["job_name"], 
           $row["phone_number"], 
           $row["positive"], 
           $row["negative"], 
           $row["comments"]);

}
?>
</fieldset>

это должно быть так:

Изображение 174551

я хочу, чтобы эхо имя, семья только один раз, когда имя, семья более одного раза

этот стиль удобен для пользователя и имеет хороший обзор. Спасибо вам всем...

  • 0
    установить ограничение в запросе w3schools.com/php/php_mysql_select_limit.asp
  • 0
    я не хочу ограничивать записи !!!!! я хочу повторить имя, семью только один раз, когда имя, семья напечатана более одного раза
Теги:
shipping

3 ответа

4
Лучший ответ
<?php
$firstname = '';
$oldfirst = '';
$lastname = '';
$oldlast = '';

while ($row = mysql_fetch_array($dbresult, MYSQL_ASSOC)) {
    if($oldfirst == $row['name'] && $oldlast == $row['family'])
    {
        $firstname = ' ';
        $lastname = ' ';
        $namelabel = ' ';
    }
    else
    {
        $firstname = $row['name'];
        $lastname = $row['family'];
        $namelabel = 'نام: ';
    }

    $oldfirst = $row['name'];
    $oldlast = $row['family'];

    printf("{$namelabel} %s   %s &nbsp&nbsp&nbsp
        شغل: %s &nbsp&nbsp&nbsp
        شماره تلفن: %s &nbsp&nbsp&nbsp
        عملیات های موفق: %s &nbsp&nbsp&nbsp
        عملیات نا موفق: %s &nbsp&nbsp&nbsp
        توضیحات: %s<br>",
        $firstname,
        $lastname,
        $row["job_name"], 
        $row["phone_number"], 
        $row["positive"], 
        $row["negative"], 
        $row["comments"]);
    }
?>
  • 0
    Хотя я рекомендую не использовать printf. Используйте таблицы вместо.
  • 0
    это в основном верно, но, пожалуйста, ограничьте имя и семью вместе, а также удалите поле "نام", где нет имени и семьи
Показать ещё 3 комментария
2

Попробуй это. Это решит вашу проблему.

 $temp_array = array();
 while ($row = mysql_fetch_array($dbresult, MYSQL_ASSOC)) {
     if(in_array($row["name"], $temp_array))
        $row["name"] = '';
     else
        array_push($temp_array, $row["name"]); 

   printf("نام: %s   %s &nbsp&nbsp&nbsp
           شغل: %s &nbsp&nbsp&nbsp
           شماره تلفن: %s &nbsp&nbsp&nbsp
           عملیات های موفق: %s &nbsp&nbsp&nbsp
           عملیات نا موفق: %s &nbsp&nbsp&nbsp
           توضیحات: %s<br>",
           $row["name"],
           $row["family"],
           $row["job_name"], 
           $row["phone_number"], 
           $row["positive"], 
           $row["negative"], 
           $row["comments"]);

}
  • 0
    Примечание: неопределенная переменная: temp_array в C: \ wamp \ www \ source \ searchresults_simple.php в строке 56
  • 0
    и Предупреждение: in_array () ожидает, что параметр 2 будет массивом, значение NULL указано в C: \ wamp \ www \ source \ searchresults_simple.php в строке 56 -> строке 56: if (in_array ($ row ["name"], $ temp_array))
Показать ещё 4 комментария
1

Я пробовал с $ name в одиночку, так как он повторяется. Добавьте этот код и запустите, вы получите ожидаемый результат

<?php
$oldname="";
while ($row = mysql_fetch_array($dbresult, MYSQL_ASSOC)) {
$newname=$row["name"];
if($newname!=$oldname)
printf("نام: %s   %s &nbsp&nbsp&nbsp
       شغل: %s &nbsp&nbsp&nbsp
       شماره تلفن: %s &nbsp&nbsp&nbsp
       عملیات های موفق: %s &nbsp&nbsp&nbsp
       عملیات نا موفق: %s &nbsp&nbsp&nbsp
       توضیحات: %s<br>",
       $newname,
       $row["family"],
       $row["job_name"], 
       $row["phone_number"], 
       $row["positive"], 
       $row["negative"], 
       $row["comments"]);
$oldname=$newname;
}
else{
printf("نام: %s   %s &nbsp&nbsp&nbsp
       شغل: %s &nbsp&nbsp&nbsp
       شماره تلفن: %s &nbsp&nbsp&nbsp
       عملیات های موفق: %s &nbsp&nbsp&nbsp
       عملیات نا موفق: %s &nbsp&nbsp&nbsp
       توضیحات: %s<br>",
       ,//empty name
       $row["family"],
       $row["job_name"], 
       $row["phone_number"], 
       $row["positive"], 
       $row["negative"], 
       $row["comments"]);
 $oldname=$newname;
}
?>
  • 0
    Примечание: неопределенная переменная: name в C: \ wamp \ www \ source \ searchresults_simple.php в строке 65 -> эта строка: $ name,
  • 0
    @sajad: я редактировал. проверить это переименовать имя в новое имя

Ещё вопросы

Сообщество Overcoder
Наверх
Меню