2009-06-16 6 views
1

Le code ci-dessous imprime toutes les tables d'une base de données appelée "plume" contenant "$ entry" dans une colonne appelée "site". Chaque table dans "plume" a une colonne appelée "site".Extraction d'une valeur de colonne à partir d'un tableau de noms de tables

Ce code fonctionne très bien. Cependant, j'aimerais ajouter quelque chose. Chaque table dans "plume" contient également une colonne appelée "votes_up". Pour chaque table qui a "$ entry", je voudrais imprimer la valeur de la colonne "votes_up" qui correspond à $ entry. Comment vais-je faire cela?

Merci à l'avance,

John

$result = mysql_query("SHOW TABLES FROM feather") 
or die(mysql_error()); 

while(list($table)= mysql_fetch_row($result)) 
{ 
    $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'"; 
    $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error()); 
    list($isThere) = mysql_fetch_row($resA); 
    if ($isThere) 
    { 
    $table_list[] = $table; 
    } 
} 



foreach($table_list as $key => $value){ 
    echo "$value <br />"; 
} 

Répondre

1

Que diriez-vous:

SELECT COUNT(*), sum(votes_up) FROM `$table` WHERE `site` LIKE '$entry' 

qui ajouteraient toutes les upvotes, et compter toutes les lignes.

1

Ceci suppose que vous voulez une sortie "votes vers le haut" pour chaque occurrence de 'entrée' dans la table.

while(list($table)= mysql_fetch_row($result)) 
{ 
$sqlA = "SELECT `site`,votes_up FROM `$table` WHERE `site` LIKE '$entry'"; 
$resA = mysql_query($sqlA) or die("$sqlA:".mysql_error()); 
if(mysql_num_rows($resA) > 0) 
{ 
$table_list[] = $table; 
while($rowA = mysql_fetch_assoc($resA)) 
    { 
    $votes_up[$rowA["site"]] = $rowA["votes_up"]; 
    } 
} 
} 

foreach($table_list as $key => $value){ 
    echo "$value <br />"; 
} 

foreach($votes_up as $site => $vote_up) 
{ 
    echo "$site: $vote_up<br />"; 
} 
+0

Salut ... J'apprécie la réponse. J'ai essayé votre code, et pour la ligne "if (mysql_num_rows ($ resA) > 0)", j'obtiens cette erreur: Erreur d'analyse: erreur de syntaxe, inattendue ';' –

+0

Oups. On dirait que mon '>' a été converti en '>'. Essayez de le remplacer par un «>». Il y a aussi deux dans chacune des boucles foreach. –

+0

J'ai modifié mon code pour corriger ces erreurs. –

Questions connexes