2014-07-08 5 views
0

Fondamentalement, j'essaye de faire une fonction pour prendre des entrées dans une base de données par genre, et le mettre dans un tableau qui est utilisé pour afficher une table. Cependant, quelque part dans le code ci-dessous, je pense que je cours dans une boucle infinie - quand j'appelle la fonction, la page charge les bonnes entrées, mais continue à charger, et la barre de défilement s'allonge de plus en plus. Je suis très nouveau dans le développement PHP/mysql/web en général, donc toute aide serait très appréciée!Requête boucle infinie - sql dans php

<? 
function getbyGender($g, &$form_data){ 
$sql = "select * from user_info where gender='".$g."'"; 
echo $sql; 
$query = mysqli_query($this->dblink, $sql) or die (mysql_error()); 


while($info = mysqli_fetch_array($query, MYSQL_ASSOC)) 
{ 

    foreach($info as $key=>$value) 
    { 
     $form_data[$i][$key] = $value; 
    } 

    $i++; 
} 
} ?> 
code

qui affiche la table (en utilisant l'API yuitable):

//Array to store all column labels to be used 
$fields = array(
    'uname'=>'Username', 
    'flname'=>'Full Name', 
    'bday'=>'Birthday', 
    'gender'=>'Gender', 
    'comments'=>'Comments', 
    'email'=>'Email', 
); 

$columns4 = $fields; 
$t_columns4 = array(); 

//Format the table 
foreach($columns4 as $key=>$value) 
{ 
    $t_columns4[$key]['key'] = $value; 
    $t_columns4[$key]['label'] = $value; 
    $t_columns4[$key]['sortable'] = "false"; 
    $t_columns4[$key]['className'] = ''; 
    if ($value == 'Comments') 
    { 
     $t_columns4[$key]['width'] = '200'; 
    } 
    else{ 


     $t_columns4[$key]['width'] = '100'; 

    } 
} 



$form_data = array(); 
$urls4 = array(); 
$sort4 = array(); 
$form_table = new yuitable("formtable"); 
$form_table->setColumns($t_columns4); 



$local_mysql->getByGender('f', $form_data); 
+0

Alors, où définissez-vous '$ i'? –

+1

vous ne imprimez pas dans votre fonction, de sorte que cette méthode ne provoque pas directement la longue barre de défilement. vous devriez nous donner le code dans lequel vous imprimez le tableau – chresse

+2

Ceci n'imprime rien, donc si vous avez une boucle infinie, la barre de défilement ne sera pas plus longue. S'il y a un problème, c'est ailleurs. – andrewsi

Répondre

0

mysqli_fetch_array($query, MYSQL_ASSOC) devrait être mysqli_fetch_array($query, MYSQLI_ASSOC). Cela devrait être la source du problème. La boucle while est bien pour ça, mais vous n'avez probablement pas besoin d'un while et d'une boucle foreach.

+0

Pourriez-vous expliquer pourquoi? Le manuel pour mysqli_fetch_array dit 'En utilisant la constante MYSQLI_ASSOC cette fonction se comportera de la même manière que mysqli_fetch_assoc()', donc les deux devraient être fonctionnellement identiques. – andrewsi

+0

Ouais mais c'était MYSQL pas MYSQLI. J'ai oublié les casquettes cependant. – user3117036

+0

Oh, très bien repéré! – andrewsi

0

Je n'ai pas réellement défini $ i = 0. Je me sens tellement stupide maintenant ... Merci à Mark Baker de le signaler, et à tous les autres pour l'aide!