2016-11-20 3 views
0

Ich weiß, dass mehrere Fragen ähnlich zu diesem sind, und ich habe sie angeschaut, aber immer noch habe ich nicht geschafft, meine Funktion zu ändern, um zu arbeiten.PHP While-Schleife gibt nur einen Wert zurück

Also ich habe diese Funktion getCar_2(); in der functions.php Seite. Die Sache ist, dass es mehr Autos anzeigen sollte, weil ich mehr Autos in der Datenbank habe, aber es zeigt nur das letzte an. Das Gleiche gilt für getCar_1(), die beiden Funktionen sind identisch. Hier

ist die Funktion:

<?php 
function getCar_2(){ 
global $connect; 

$text = ""; 

$get_car_2 = "SELECT * FROM cars WHERE category_id=5"; 
$get_car_result_2 = mysqli_query($connect, $get_car_2) or die(mysqli_query()); 

while($row_car_2 = mysqli_fetch_array($get_car_result_2)){ 
    $car_model_2 = $row_car_2['car_name']; 
    $car_image_2 = $row_car_2['car_image']; 

    if(isset($car_model_2) && isset($car_image_2)){ 
     $text = " 
      <div id='' style='white-space:nowrap;'> 
      <p id='model' style='display:inline-block; margin-right:10px; margin-left:10px; padding-top:10px; position:relative; bottom:35px;'>$car_model_2</p></a> 
      <img src='administrator/images/$car_image_2' width='120' height='80' style='display: inline-block; box-shadow: 0 0 11px #000;'/><br> 
      </div>"; 
     } 
    } 
    return $text; 
} 
?> 

und auf einer anderen Seite wie folgt angezeigt:

<?php 
$car_1 = getCar_1(); 
$car_2 = getCar_2(); 
if(!empty($car_1) || !empty($car_2)){ 
?> 

<div class="block"> 
    <div class="up"> 
     <div class="title"><h4>Cars</h4></div> 
    </div> 
    <div class="down"> 
     <div class="column_1"><b><?php echo $car_1; ?></b></div> 
     <div class="column_2"><b><?php echo $car_2; ?></b></div> 
    </div> 
</div> 

<?php 
} 
?> 
+0

an Ihrem Code suchen, sollten leere Zeichenfolge oder das erste Auto mit isset ($ car_model_2) && isset ($ car_image_2) zurückzukehren ... die Rückkehr innerhalb der Schleife entfernen .. – scaisEdge

Antwort

1

Sie sind nicht Ihre text Variable verketten, so auf jeder Schleife passieren sie enthalten nur die letzter Wert Sie sollten Konkatenationsoperator .= statt Zuweisungsoperator =

$text .= " 
+0

Vielen Dank funktioniert es! – AndreiCT

1

Sie überschreiben die vorherigen Zeilenwerte verwenden, bevor sie verwendet werden. Sieht aus wie Sie neue Zeile Ergebnisse der vor einer angehängt werden soll, denn das ist .. nur eine Zeile und eine Periode hinzufügen müssen ...

$text =''; //define $text so you can append to it 

if(isset($car_model_2) && isset($car_image_2)){ 

    $text .= " 
    <div id='' style='white-space:nowrap;'> 
    ...... 

Beachten Sie die .= das neue Ergebnis in die vorhergehende Zeile anhängen. Das Anhängen von Variablen auf diese Art wird Verkettung genannt.

Perioden werden auch zum Verketten von Strings und Variablen zum Drucken verwendet. Wie. . .

echo '<div class="column_1"><b>'. $car_1.'</b></div>'; 
+0

Danke, ich fühle mich jetzt irgendwie albern, nachdem ich stundenlang versucht habe, dies zu lösen, nicht wissend, dass ein einziger Punkt das Problem lösen könnte. – AndreiCT

Verwandte Themen