10/10/2018, 13:22

Không thể lấy được kết quả select form ?

Mình có 1 đoạn code sau viết theo kiểu PDO
Code:
                <select name="position" tabindex='2'>
                  <?php                     
                      $sql = "SELECT count(cat_id) AS count FROM categories";
                      $s = $pdo->query($sql);
                      $rows = $s->rowCount();
                      if( $rows == 1 ){
                        list($num) = $s->fetchAll(PDO::FETCH_NUM);
                        for ($i=1; $i < $num+1; $i++) { 
                          echo "<option value='{$i}'";
                            if (isset($_POST['position']) && $_POST['position'] == $i) echo "selected='selected'";
                          echo ">".$i."</option>";
                        }
                      }
                    
                   ?>

                </select>
Mình muốn select form có thể hiện thị giá trị trong vòng lập và +1 .
Mong mọi người giúp đỡ
anhduy89bmt viết 15:35 ngày 10/10/2018
Không ai giúp mình sao TT_TT
đây là form mình muốn thực hiện bạn nào có cách nào giúp mình với


Thật ra mình chỉ muốn convert đoạn msqli mà mình làm thành pdo
Code:
<select name="position" tabindex='2'>
                    <?php
                        $q = "SELECT count(cat_id) AS count FROM categories";
                        $r = mysqli_query($dbc,$q) or die("Query {$q} \n<br/> MySQL Error: " .mysqli_error($dbc));
                        if(mysqli_num_rows($r) == 1) {
                            list($num) = mysqli_fetch_array($r, MYSQLI_NUM);
                            for($i=1; $i<=$num+1; $i++) { // Tao vong for de ra option, cong them 1 gia tri cho position
                                echo "<option value='{$i}'";
                                    if(isset($_POST['position']) && $_POST['position'] == $i) echo "selected='selected'";
                                echo ">".$i."</otption>";
                            }
                        }
                    ?>
                </select>
gia24.com viết 15:37 ngày 10/10/2018
Trich "Thật ra mình chỉ muốn convert đoạn msqli mà mình làm thành pdo"

PDO là class giúp việc truy xuất database dễ dàng thôi. convert là sao.

Cái chỗ if($rows == 1) thì chỉ bằng 1 nó mới lặp nên chỉ thấy 1 giá trị là đúng rồi.
anhduy89bmt viết 15:23 ngày 10/10/2018
Mình vẫn chưa hiểu lắm bạn có thể nói rõ được hay không ? Nhưng khi sửa theo cách của bạn mình đã lấy được value nhưng chưa làm sao lặp được vào lặp.
gia24.com viết 15:28 ngày 10/10/2018
Được gửi bởi anhduy89bmt
Mình vẫn chưa hiểu lắm bạn có thể nói rõ được hay không ? Nhưng khi sửa theo cách của bạn mình đã lấy được value nhưng chưa làm sao lặp được vào lặp.
if($rows > 0){
///some thing
}
anhduy89bmt viết 15:32 ngày 10/10/2018
Mình đã lấy đc value trong mảng rùi nhưng chỉ một value thuh mình không thể lấy đc hết value bạn nào có thể xem array của mình lấy đúng chưa

$sql = "SELECT cat_id AS count FROM categories";
$s = $pdo->query($sql);
$rows = $s->rowCount();
if( $rows > 0 ){
list($num) = $s->fetchAll();
foreach ( $num as $i ) {
echo "<option value='{$i}'>".$i."</option>";
}

}
gia24.com viết 15:25 ngày 10/10/2018
thử làm như thế này xem
$sql = "SELECT cat_id AS count FROM categories";
$s = $pdo->query($sql);
$rows = $s->rowCount();
if( $rows > 0 ){
while ( list($count) = $s->fetchAll()) {
echo "<option value='{$count}'>".$count."</option>";
}

}
///
anhduy89bmt viết 15:25 ngày 10/10/2018
Không được bạn ơi. Còn không thể lấy được value của mảng luôn TT_TT
livechat viết 15:26 ngày 10/10/2018
Chào bạn,

bạn dùng câu truy vấn Select COUNT() do vậy dù thế nào đi nữa thì cũng chỉ trả về 1 row, vì Count là hàm đếm.

Bạn hãy sửa lại một chút:

Select cat_id from categories

Câu lệnh trên sẽ trả về các cat_id có trong bảng categories của bạn, khi ấy bạn dùng vòng lặp để hiển thị ra.

Chúc bạn vui.
anhduy89bmt viết 15:33 ngày 10/10/2018
Cám ơn bạn livechat nhiều . Mình đã fix xong lỗi rồi. Quả thật là chỉ cần xóa count là okie rồi
Code:
$sql = "SELECT cat_id FROM categories";
                      $s = $pdo->query($sql);
                      $rows = $s->rowCount();
                      if( $rows > 0 ){
                      $result = $s->fetchAll();
                      foreach ( $result as $i ) { 
                        echo "<option value='{$i[0]}'>".$i[0]."</option>";
                        }                       
                      }
Bài liên quan
0