Selection aus DB erzeugen, nur 10 Options

01/17/2018 12:36 BattleTale#1
Moin moin, ich erzeuge mir eine selection aus einer Datenbank.
PHP Code:
$htmlconstruct '<div class="form-group">
                                    <label for="'
.$input_name.'">'.$desc.':</label>
                                    <select name="'
.$input_name.'" class="form-control" id="'.$input_name.'">
                                    <option value="0"></option>'
;
        
$sql 'SELECT * FROM category ORDER by id DESC';
        
$statement $this->pdo->prepare($sql);
        
$statement->execute();
        
$count $statement->rowCount();
        if(
$count 0){
          while(
$row $statement->fetch()){
            switch(
$row['mode']){
              case 
1:
                
$mode "OnRoad";
                break;
              case 
2:
                
$mode "OffRoad";
                break;
              case 
3:
                
$mode "Rebuild";
                break;
              default:
                
$mode "Fehler";
            }
            echo 
$row['name'];
            
$htmlconstruct .= '<option value="'.$row['id'].'>'.$mode.' - '.$row['name'].'</option>';
          }
          
$htmlconstruct .= '</select></div>';
        }
        else{
          
$htmlconstruct .= '</select></div>';
        }
        
        return 
$htmlconstruct;
      } 
Testweise lasse ich mir mal alle Werte mit echo ausgeben, da bekomme ich 20.
Im Formular, in der Auswahl werden mir aber nur 10 bzw. mit dem Leerfeld 11 angezeigt.

Woran kann das liegen?

[Only registered and activated users can see links. Click Here To Register...]

Danke im vorraus
01/19/2018 11:53 Fydes#2
Hi,
PHP Code:
$htmlconstruct .= '<option value="'.$row['id'].'>'.$mode.' - '.$row['name'].'</option>'
Dort fehlt ein Anführungszeichen nach der value.. Evtl. bricht er da irgendwie irgendwo ab...

Liebe Grüße
01/19/2018 20:22 xShizoidx#3
Die Lösung von Fydes habe ich probiert und sie funktioniert.

- Man verwendet die Bootstrap Formulare normalerweise so, dass man <select> und <input type="text" in zwei verschiedene form-group´s packt, damit die Abstände am Ende gleich sind. Dann musst du es später nicht mehr per Hand mit CSS nachbessern oder mit den Helferklassen in Bootstrap

- deine Ausgaben werden nicht escaped, XSS Sicherheitslücke

- Prepared Statements musst du in deinem Fall nicht verwenden, da du keine Benutzereingaben hast:
Code:
$rows = $pdo->query('SELECT * FROM category')
	    ->fetchAll(PDO::FETCH_ASSOC);
würde also reichen