PHP &

2 Cevap php

Tamam ilk ben sadece benim komut hiçbir veritabanında olduğunda sadece bu uyarıyı gösterir çalışıyor diyelim. İstediğim şey veritabanında bile uyarılar gitmek yapmaktır.

Nasıl bu sorunu giderebilirsiniz? Ve benim kodun hangi parçası ben değiştirmeniz gerekiyor?

İşte uyarıları olduğunu.

Warning: ksort() expects parameter 1 to be array, null given on line 24

Warning: array_values() [function.array-values]: The argument should be an array on line 38

Warning: Wrong parameter count for min() on line 38

Warning: array_values() [function.array-values]: The argument should be an array on line 39

Warning: Wrong parameter count for max() on line 39

Warning: Invalid argument supplied for foreach() on line 49

Aşağıda tam kodudur.

<?php

require_once ('./mysqli_connect.php');


$link = mysqli_connect("localhost", "root", "", "sitename");

function tag_info($link) {

$page = "3";


$query = "SELECT tags.tag, 
					   COUNT(questions_tags.tag_id) 'num' 
					   FROM questions_tags 
					   JOIN tags ON tags.id = questions_tags.tag_id 
					   WHERE questions_tags.users_questions_id = '$page' 
					   GROUP BY tags.tag 
					   ORDER BY num DESC";
	if ($result = mysqli_query($link, $query)) {
		while($row = mysqli_fetch_array($result)) {
			$arr[$row['tag']] = $row['num'];
		}
		ksort($arr);
		return $arr;
	}
	return array();
}


function tag_cloud($link) {

$min_size = .8;
$max_size = 1.5;

$tags = tag_info($link);

$minimum_count = min(array_values($tags));
$maximum_count = max(array_values($tags));
$spread = $maximum_count - $minimum_count;

if($spread == 0) {
	$spread = 1;
}

$cloud_html = '';
$cloud_tags = array();

foreach ($tags as $tag => $count) {
$size = $min_size + ($count - $minimum_count) * ($max_size - $min_size) / $spread;
$cloud_tags[] = '<a style="font-size: '. $size . 'em'
. '" class="tag_cloud" href="http://www.example.com/tags/' . $tag .'/'
. '" title="\'' . $tag . '\' returned a count of ' . $count . '">'
. htmlspecialchars(stripslashes($tag)) . '</a>';
}
$cloud_html = join("\n", $cloud_tags) . "\n";
return $cloud_html;

}

?>

@ Franz Şimdi bu uyarıları almak.

Warning: min() [function.min]: Array must contain at least one element on line 39

Warning: max() [function.max]: Array must contain at least one element on line 40

2 Cevap

Bu çalışması gerekir: hiçbir satır (kodunuzda) döndürülen zaman davayı unuttum:

if ($result = mysqli_query($link, $query))
{
    $arr = array();
    while($row = mysqli_fetch_array($result))
    {
        $arr[$row['tag']] = $row['num'];
    }
    ksort($arr);
    return $arr;
}
return array()

Değiştir:

        ksort($arr);
        return $arr;

Ile:

        if(empty($arr)){
          return array();
        }
        ksort($arr);
        return $arr;

Sonra emin olmak için de bu değiştirin:

$tags = tag_info($link);

ile:

$tags = tag_info($link);
if(empty($tags)){
  return '';
}