PHP Foreach Problem?

2 Cevap php

Ben MySQL veritabanı görüntülemek için $ url değeri almaya çalışıyorum ama kimse bana $ url değeri görüntülemek için nasıl lütfen yardımcı olabilir ben sadece $ cat değeri doğru görüntülemek için alabilirsiniz.

Şimdi ben yanlış bir şey yapıyorum.

Burada kısmi kodudur.

// Loop through each subarray:
foreach ($parent as $id => $cat) {

	// Display the item:
	echo '<li><a href="http:' . $url . '" title="">' . $cat . '</a>';

İşte tam koddur.

<?php
require_once ('./mysqli_connect.php'); // Connect to the db.

// Receives one argument: an array.
function make_list ($parent) {

	// Need the main $link array:
	global $link;

	// Start an ordered list:
	echo '<ol>';

	// Loop through each subarray:
	foreach ($parent as $id => $cat) {

		// Display the item:
		echo '<li><a href="http://' . $url . '" title="">' . $cat . '</a>';

		// Check for sublink:
		if (isset($link[$id])) { 

			// Call this function:
			make_list($link[$id]);

		}

		// Complete the list item:
		echo '</li>';

	} // End of FOREACH loop.

	// Close the ordered list:
	echo '</ol>';

} // End of make_list() function.


// Connect to the database:
	$mysqli = new mysqli("localhost", "root", "", "sitename");
	$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if (!$dbc) {
	// There was an error...do something about it here...
	print mysqli_error();
} 


// Initialize the storage array:
$link = array();

while (list($id, $parent_id, $category) = mysqli_fetch_array($dbc, MYSQLI_NUM)) {

	// Add to the array:
	$link[$parent_id][$id] =  $category;

}

make_list($link[0]);


mysqli_close($mysqli); // close the connection

?>

2 Cevap

$ Url bir dizi MySQL sonucu ayrı yineleme konum gibi hatta ... görünüyor resimde değil. Sen gibi daha fazla şey gerekir:

foreach ($res as $row) {
    echo '<li><a href="http:' . $row['url'] . '" title="">' . $row['cat'] . '</a>';
}

Umarım bu yardımcı olur.

Edit:

Her şeyden önce, $ url) (listenizdeki diğer değişkenler ile birlikte tayin edilmesi gerekir - Eğer sorgusunun SELECT * yapıyoruz beri sipariş atama doğru yani sütunları belirtmek gerekebilir.

Sonra, kullandığınız dizi yapısı ile başka bir değişken eklemek için hiçbir yolu yoktur ...

$link[$parent_id][$id] =  $category;

Gibi bir şey olurdu:

$link[$parent_id][$id] =  array('category' => $category, 'url' => $url);

Sonra, dizinin üzerinde yineleme gibi bir şey için değiştirilmesi gerekir:

foreach ($parent as $id => $ary) {

    // Display the item:
    echo '<li><a href="http:' . $ary['url'] . '" title="">' . $ary['category'] . '</a>';

}

Verdiğiniz kodunuz $ ebeveynden $ url ilan edilmez. Herhangi bir şansın $ ebeveyn saklanan ne verebilir?


İlk Yani İlk şeyler!

(Ben senin url tablodaki sütun adı olduğunu varsayarak yaşıyorum) bu benzer senin mysqli_fetch_array çağrı bir şey URL almak gerekir

while ($row = mysqli_fetch_array($dbc, MYSQLI_NUM)) {
    $id = $row['id'];
    $parent_id = $row['parent_id'];
    $cat = $row['category'];
    $url = $row['url'];

    // Add to the array:
    $link[$parent_id][$id] = array('cat' => $cat, 'url' => $url);
}

Sonra uygun kategoriyi ve url ayıklamak için foreach döngüsünü değiştirmek

foreach ($parent as $id => $category_array) {

 // Display the item:
 echo '<li><a href="http://' . $category_array['url'] . '" title="">' . $category_array['cat'] . '</a>';