Nasıl bu dizi oluşturabilirim?

3 Cevap php

Ben bu diziyi oluşturmak için nasıl biraz şaşırıp.

Benim veriler:

category_id | category_name
     1              bikes
     2              cars
     3              books
     4              computers

Array:

$category=array();
$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);
$category=array('category_id'=>$category_id, 'category_name'=>$category_name);
while ($row = $result->fetch_array()){
    $category_id=$row['category_id'];
    $category_name=$row['name'];
}

Ben böyle bir radyo listesinde verileri yankı böylece bir dizi oluşturmak istiyorum ...

<input type='radio' value='<?PHP echo $category['category_id']; ?>' 
name='category[]'><?PHP echo $category['category_name']; ?>

o bikes
o cars
o books
o computers 

The problem is that the array only consists of one pair (1, bikes) and not all the data. How can I make an array with all the data?

Teşekkürler!

3 Cevap

İki tanımlanmamış değerler sadece değerleri null varsayılan - Yanlış üç şeyi, ilk aslında eşit şey $ kategori ayar değildir yapıyoruz. Böylece gibi bir dizi ile sonuna kadar:

array('category_id' => null, 'name' => null)

Eğer bunları yaptığınızda İkincisi, $ category_id ve $ category_name değerleri ile hiçbir şey yapıyorsun. Sonra,, öğenin ile dizi öğesinin geçiyor değil sadece çıkış ayarlandığı ilk yolu - dizi bir boyutun kısa başka bir soruna bağlıdır. Bu 1-boyutlu değil, 2 boyutlu olmalıdır.

Bu kod Hepsinin özü özetliyor. Ben diziler PHP ve onları nasıl tanımlamak için çalışmak nasıl okuma öneririm, onlar çerçeveler ve benzeri boyunca çok yaygın olarak kullanılan veri türü demektir.

$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);

$categories=array();

while ($row = $result->fetch_array()){
    $categories[] = array('category_id' => $row['category_id'], 'category_name' => $row['name']);
}

Sonra çıktı gerektiğinde:

foreach ( $categories as $category ) {
    ?>
    <input type='radio' value='<?php echo $category['category_id']; ?>' name='category[]'><?php echo $category['category_name']; ?>
    <?php
}

Bu tabii kutu daha temizlenmelidir.

Eğer satır kayıtları bisiklet örneğin sadece birinci vererek orada döngü yan yankılanıyor olmasıdır, yapmanız gerektiği gibi:

$category=array();
$query = "SELECT * FROM categories ORDER BY name ASC";
$result = $db->query($query);
$category=array('category_id'=>$category_id, 'category_name'=>$category_name);
while ($row = $result->fetch_array()){
    $category_id=$row['category_id'];
    $category_name=$row['name'];
?>
<input type='radio' value='<?PHP echo $category['category_id']; ?>' 
name='category[]'><?PHP echo $category['category_name']; ?>
<?php
}

Sen değişkenleri $ category_id ve oldukça dizi $ kategoriye dolardan category_name, temlik, böylece sadece ilk satır sorgudan döndürülen görüyoruz.

Ben normalde PDO kullanın ve bunu böyle bir şey yazarsınız:

<?php
  $db = ...
  $sql = 'SELECT * FROM categories ORDER BY category_name ASC';
  $categories = $db->query($sql);
?>

<html>
<body>
<? foreach ($categories as $category): ?>
<input type="radio" name="category[]" value="<?= $category->category_id ?>">
  <?= $category->category_name ?>
</input>
<? endforeach ?>
</body>
</html>