2009-01-10 5 views
0
$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'"; 
$story_result = db_query($story_query); 
while($story_row = db_fetch_array($story_result)) { 
    $taleTable_Name = $story_row['table_name']; 
    $postid[] = $story_row['id']; 

    $q2 = "Select * from $taleTable_Name where approved='Y' order by id"; 
    $bset2 = db_query($q2); 
    while($rset2 = db_fetch_array($bset2)) { 
     $i[] = $rset2['id']; 
     $t[] = $rset2['thread']; 
     $s[] = $rset2['subject']; 
     $a[] = $rset2['author']; 
     $d[] = $rset2['datestamp']; 

    } 
} 

if(isset($d)) { 
    $fc = count($d); 
    if($fc > 20) { 
     $xs = $fc - 20; 
    } 
    else { 
     $xs = 0; 
    } 

    for($c=$xs;$c<$fc;$c++) { 
     if($s[$c] != "") { 
      $newpost .= $d[$c]; 
      $newpost .= " <a href='../forums/read.php?f="; 
      $newpost .= end($postid); 
      $newpost .= "&i="; 
      $newpost .= $i[$c]; 
      $newpost .= "&t="; 
      $newpost .= $t[$c]; 
      $newpost .= "'>" ; 
      $newpost .= $s[$c]; 
      $newpost .= "</a> by "; 
      $newpost .= $a[$c]; 
      $newpost .= $taleTable_Name; 
      $newpost .= "<br>\n"; 
     } 
    } 
} 
else { 
    $newpost = "There are no posts for this scroll yet."; 
} 

Le code ci-dessus me présente correctement toutes les entrées trouvées avec $ taleTable_Name, mais présente seulement la dernière variable de $ postid lorsque j'imprime $ newpost. Je veux que l'id ($ postid correspond au nom_table ($ taleTable_Name) pour que l'URL créée se rende réellement sur le forum correctPHP: Tenir deux éléments correspondants dans un tableau de données de MySQL

+0

S'il vous plaît modifier votre question, il est illisible dans son état actuel. –

+0

Vos noms de variables font de votre code une douleur ridicule à lire. –

+0

Là, au moins le style de contreventement est cohérent maintenant ... –

Répondre

3

Tout d'abord, je n'ai aucune idée de ce que signifient vos noms de variables. Pour garder le bon sens de votre programmeur Maintanence

En regardant votre code, je sais ce qu'il fait, mais je n'ai aucune idée de ce qu'il est censé faire, ou pourquoi. essayez de renommer vos noms de variables, mais je ne sais pas si elle est même droit, ou à proximité de droite:


$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'"; 
$story_result = db_query($story_query); 
while($story_row = db_fetch_array($story_result)) { 
    $taleTable_Name = $story_row['table_name']; 
    $postid[] = $story_row['id']; 

    $query2 = "Select * from $taleTable_Name where approved='Y' order by id"; 
    $bset2 = db_query($query2); 
    while($rowset2 = db_fetch_array($bset2)) { 
     $id[] = $rowset2['id']; 
     $thread[] = $rowset2['thread']; 
     $subject[] = $rowset2['subject']; 
     $author[] = $rowset2['author']; 
     $datetime[] = $rowset2['datestamp']; 

    } 
} 

if(isset($datetime)) { 
    $forumcount = count($datetime); 
    if($forumcount > 20) { 
     $xs = $forumcount - 20; 
    } 
    else { 
     $xs = 0; 
    } 

    for($postnum=$xs;$postnum<$forumcount;$postnum++) { 
     if($subject[$postnum] != "") { 
      $newpost .= $datetime[$postnum]; 
      $newpost .= " <a href='../forums/read.php?f="; 
      $newpost .= end($postid); 
      $newpost .= "&id="; 
      $newpost .= $id[$postnum]; 
      $newpost .= "&thread="; 
      $newpost .= $thread[$postnum]; 
      $newpost .= "'>" ; 
      $newpost .= $subject[$postnum]; 
      $newpost .= "</a> by "; 
      $newpost .= $author[$postnum]; 
      $newpost .= $taleTable_Name; 
      $newpost .= "<br>\n"; 
     } 
    } 
} 
else { 
    $newpost = "There are no posts for this scroll yet."; 
} 

Que signifient les variables suivantes? : $xs, $c, &i, &t et $fc? Ceux-ci devraient être des noms significatifs. J'ai renommé vos autres variables, mais pour celles-ci j'ai juste deviné. Je pourrais être loin. Les noms de variables significatifs aident beaucoup à lire le code qui n'a pas de commentaires. Comme c'est le cas, si vous avez eu des noms de variables significatifs, I may not need comments - mais que fait le magic number de '20'? Qu'est-ce qui est si significatif à propos de ce nombre?

0

Une chose que j'ai remarquée à propos de votre code est que $ newpost n'est pas imprimé. Avant la fin de la boucle for, quelque chose doit être fait avec $ newpost. Dans ce cas, vous jetez simplement le résultat à chaque fois (ou plus exactement, en l'écrasant). Vous devez faire quelque chose avec $ newpost (l'imprimer, le stocker dans une autre valeur, le renvoyer au navigateur, etc.).

+0

Comment le résultat est-il jeté? Il est en train d'être ajouté. –

+0

Après la fin de la boucle for, nous ne voyons pas l'utilisation de $ newpost. Ce n'est simplement pas utilisé dans le code qu'on nous a donné. Des résultats sont ajoutés à cela, mais rien ne se passe après cela. –

0

Pourquoi pas?

unset($post); // ensure start afresh 

$story_query = "SELECT table_name, id FROM planning WHERE parent = '$novelnum'"; 
$story_result = db_query($story_query); 
while($story_row = db_fetch_array($story_result)) { 
    $taleTable_Name = $story_row['table_name']; 
    $postid   = $story_row['id']; 

    $q2 = "Select * from $taleTable_Name where approved='Y' order by id"; 
    $bset2 = db_query($q2); 
    while($rset2 = db_fetch_array($bset2)) { 
     $post[$postid] = $rset2; 
    } 
} 

if(isset($post)) { 
    /*** 
    * Page control here  
    ****/ 

    foreach($post as $id => $msg) { 
     if($row['subject'] != "") { 
      $newpost .= $msg['datestamp']; 
      $newpost .= " <a href='../forums/read.php?f="; 
      $newpost .= $id; 
      $newpost .= "&i=".$msg['id']; 
      $newpost .= "&t=".$msg['thread']; 
      $newpost .= "'>" ; 
      $newpost .= $msg['subject']; 
      $newpost .= "</a> by "; 
      $newpost .= $msg['author']; 
      $newpost .= $taleTable_Name; 
      $newpost .= "<br>\n"; 
     } 
    } 
} 
else { 
    $newpost = "There are no posts for this scroll yet."; 
} 
Questions connexes