2016-05-23 2 views
0

Schleife Abfrage, ich versuche, diese Abfrage Schleife während Wert in Spalte Producto_Prioridad = 1 in Tabelle Natan_Procesos. Also, ich brauche den ganzen unten stehenden Code, um ihn zu loopen.versucht, Abfrage, die in eine Tabelle

<div align="center"> 
<div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"><p>&nbsp;</p> 
<p> Opciones de <? echo $rows['giro2']; ?></p> 
<?php 

try { 
     $sth = $db->prepare("SELECT Proveedor_Logo, Giro2_ID, Producto_Nombre, Producto_Descripcion, Producto_Precio, Producto_Imagen, Producto_Prioridad FROM Natan_Procesos WHERE Producto_Prioridad = 1"); 
     $sth->execute(array($ead,$eac)); 
     $row = $sth->fetch(PDO::FETCH_ASSOC); 
     $Proveedor_Logo = $row['Proveedor_Logo']; 
     $Giro2_ID = $row['Giro2_ID']; 
     $Producto_Nombre = $row['Producto_Nombre']; 
     $Producto_Descripcion = $row['Producto_Descripcion']; 
     $Producto_Precio = $row['Producto_Precio']; 
     $Producto_Imagen = $row['Producto_Imagen']; 
     $Producto_Prioridad = $row['Producto_Prioridad']; 
     } catch (PDOException $e) { 
     echo 'Database operation failed: ' . $e->getMessage(); 
    } 
?>  </div></div> 
<div align="center"> 
<div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
<table width="800" border="0"> 
    <tr> 
    <td><input name="platofuerte" type="radio" value="" /></td> 
    <td width="250"><? echo "<img src='". htmlspecialchars($row['Proveedor_Logo'])."' alt='image' />" ?></td> 
    <td><? echo $row['Proveedor_Nombre_Comercial']; ?>&nbsp;</td> 
    <td><? echo "<img src='". htmlspecialchars($row['Producto_Imagen'])."' alt='image' />" ?>&nbsp;</td> 
    <td width="100"><? echo $row['Producto_Nombre']; ?>&nbsp;</td> 
    <td width="200"><? echo $row['Producto_Descripcion']; ?>&nbsp;</td> 
    <td width="10">$<? echo $row['Producto_Precio']; ?>&nbsp;</td> 
    </tr> 
</table> 
</div></div> 

es Bisher gibt nur 1 Zeile, wenn es 3 Reihen mit Wert = 1 in Spalte Producto_Prioridad aus der gleichen Tabelle. Wie implementiere ich die while-Schleife, um so viele Zeilen anzuzeigen, die die Bedingung erfüllen?

Danke für die Hilfe.

+0

Natan, es gibt nicht genug Informationen hier, um eine gültige Frage zu stellen. Was ist die erwartete Transformation? Was ist die erwartete Ausgabe? Was macht es jetzt, wo du es nicht willst? – Dykotomee

+0

Es ist, weil Sie nur 1 Ergebnis ausgeben, nicht alle von ihnen. 'fetch' nimmt 1 Reihe hintereinander. Wenn Sie alle Zeilen ausgeben möchten, müssen Sie das Ergebnis der Abfrage in einer Schleife abfragen und jede Zeile abrufen. – Michel

+0

Oder verwenden Sie 'fetchAll()'. Werfen Sie einen Blick [auf diese Frage] (http://stackoverflow.com/questions/18435317/pdo-return-all-rows) – Michel

Antwort

1

fetch greift nur ein einzelnes Ergebnis von Ihrer Abfrage. Versuchen Sie es in eine Schleife zu wickeln, um alle Daten abzufangen, und dann während der Ausgabe über die Daten zu iterieren:

<div align="center"> 
    <div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
     <p>&nbsp;</p> 
     <p> Opciones de <? echo $rows['giro2']; ?></p> 
     <?php 

     $rows = array(); 
     try { 
      $sth = $db->prepare("SELECT Proveedor_Logo, Giro2_ID, Producto_Nombre, Producto_Descripcion, Producto_Precio, Producto_Imagen, Producto_Prioridad FROM Natan_Procesos WHERE Producto_Prioridad = 1"); 
      $sth->execute(array(
       $ead, 
       $eac 
      )); 
      while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
       $Proveedor_Logo = $row['Proveedor_Logo']; 
       $Giro2_ID = $row['Giro2_ID']; 
       $Producto_Nombre = $row['Producto_Nombre']; 
       $Producto_Descripcion = $row['Producto_Descripcion']; 
       $Producto_Precio = $row['Producto_Precio']; 
       $Producto_Imagen = $row['Producto_Imagen']; 
       $Producto_Prioridad = $row['Producto_Prioridad']; 
       $rows[] = $row; 
      } 
     } catch (PDOException $e) { 
      echo 'Database operation failed: ' . $e->getMessage(); 
     } 
     ?> 
    </div> 
</div> 
<div align="center"> 
    <div align="center" 
     style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
     <table width="800" border="0"> 
      <?php 
      foreach ($rows as $row) { 
       ?> 
       <tr> 
        <td> 
         <input name="platofuerte" type="radio" value="" /> 
        </td> 
        <td width="250"> 
         <img src='<?php echo htmlspecialchars($row['Proveedor_Logo']); ?>' alt='image' /> 
        </td> 
        <td> 
         <? echo $row['Proveedor_Nombre_Comercial']; ?>&nbsp; 
        </td> 
        <td> 
         <img src='<?php echo htmlspecialchars($row['Producto_Imagen']); ?>' alt='image' />&nbsp; 
        </td> 
        <td width="100"> 
         <? echo $row['Producto_Nombre']; ?>&nbsp; 
        </td> 
        <td width="200"> 
         <? echo $row['Producto_Descripcion']; ?>&nbsp; 
        </td> 
        <td width="10"> 
         $<? echo $row['Producto_Precio']; ?>&nbsp; 
        </td> 
       </tr> 
       <?php 
      } 
      ?> 
     </table> 
    </div> 
</div> 
+0

Das hat perfekt funktioniert. Vielen Dank. Ich hatte die Idee zu holen, aber konnte nicht die Schleife zu gehen. Ihre Hilfe ist sehr angenehm. Nun wird dies auch für keine Zeile mit einem Wert = 1 sorgen und keinen Fehler bekommen? –

+0

Ja, sollte es. Die Verwendung von 'foreach' verhindert alle Iterationen, sollte das Array leer sein. Wenn Sie es testen möchten, fügen Sie am Ende Ihrer SQL-Abfrage 'AND 1 = 0' hinzu und sehen Sie, was passiert! – Dykotomee

Verwandte Themen