2010-08-08 3 views
3
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
     $row = mysql_fetch_array($result, MYSQL_ASSOC) //it's not increase ? 
} 

Je veux augmenter deux fois dans chaque boucle?Comment augmenter le pointeur mysql_fetch_array?

pour

<table> 
<td>**1 times**</td><td>**1 times**</td> 
</table> 
+2

Plase expliquer quelle est exactement votre question – Mchl

+2

Que voulez-vous faire exactement? – Sarfraz

+2

Il devrait en effet augmenter! De la documentation php: 'mysql_fetch_array - Retourne un tableau qui correspond à la ligne récupérée et déplace le pointeur de données interne en avance. 'Notez que puisque vous récupérez une ligne dans la condition while, et dans la boucle while elle-même, vous déplacez deux lignes pour chaque itération ... –

Répondre

1

Je pense que la documentation est très claire. http://hu.php.net/manual/en/function.mysql-fetch-array.php ou http://hu.php.net/manual/en/function.mysql-fetch-assoc.php.

mysql_connect("localhost", "mysql_user", "mysql_password") or 
    die("Could not connect: " . mysql_error()); 
mysql_select_db("mydb"); 

$result = mysql_query("SELECT id, name FROM mytable"); 

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    printf("ID: %s Name: %s", $row[0], $row[1]); 
    } 

mysql_free_result($result); 
-1

Peut-être que vous voulez mysql_data_seek?

+0

non, ne peut-il pas augmenter le pointeur? –

+0

@monkey_boys, La seule chose 'mysql_data_seek' est de toucher le pointeur interne. Je ne suis pas sûr de ce que vous recherchez ... – strager

0

il augmentera le pointeur de 1 étape ...

donc:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     // logic here 
    } 

effectuera la boucle et la logique

+0

Je veux incrire deux fois –

+0

Utilisez mysql_data_seek() pour accéder à l'objet et utilisez mysql_fetch_assoc() pour obtenir le résultat. voir http://www.php.net/manual/fr/fonction.mysql-data-seek.php ou vous pouvez exécuter mysql_fetch_array() deux fois (ne pas recommander) –

1

Vous n'avez pas besoin de cela. Si vous souhaitez imprimer vos données formatées en 2 colonnes, sélectionnez-les toutes dans la matrice, puis utilisez cette matrice pour la sortie formatée.

une des solutions possibles

<?php 
//collect data into array 
$data = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 
//and here goes template part 
?> 
<html> 
<? $data = array_chunk($data, 2) ?> 
<table> 
<? foreach ($data as $chunk): ?> 
    <tr> 
<? foreach ($chunk as $row): ?> 
    <td><?=$row['name']?></td> 
<? endforeach ?> 
    </tr> 
<? endforeach ?> 
</table> 
0

Pourquoi ne pas faire quelque chose comme ceci:

$max_row = 100;//mysql_num_rows($result); 
for($idx = 0; $idx < $max_row; $idx+=2){ 
if (!mysql_data_seek($result, $i)) { 
    echo "Cannot seek to row $i: " . mysql_error() . "\n"; 
     continue; 
    } 

    if (!($row = mysql_fetch_assoc($result))) { 
     continue; 
    } 

    //do what you want to do here... 
} 

si vous avez 10 enregistrements, il se fera l'écho la ligne 0, 2, 4, 6, 8.

0
<?php 
$counter=0; 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
     if ($counter % 2) 
     { 
      echo '<table><tr>'; // start table 
     } 

     echo '<td>' . $row['foo'] . '</td>'; // echo result 

     if (!$counter % 2) 
     { 
      echo "</tr></table>"; // end table 
     } 
     $counter++; 
} 
?> 
Questions connexes