2012-10-12 5 views
0

J'ai le morceau de code suivant pour faire une chose, la plus importante étant de configurer la boucle principale à partir de laquelle nous allons récupérer le contenu de la base de données (en fonction des conditions). Ces conditions sont: si nous regardons une catégorie - si nous regardons un ID - si nous regardons ou pas (la première page) - si le mot de passe d'admin/username la combinaison est utilisée (pour la suppression/l'édition). Les réponses sont saisies (si nous regardons un ID) toutes les entrées qui ont un parent de l'ID appelé. $ quickinfo est utilisé pour paramétrer des choses comme des balises META (titre, mots-clés, etc.)Optimisation de requête PHP/MYSQL

Ma seule question (actuelle) étant: est-ce efficace? Si non, pourquoi pas.

$selection = "ID,CONTENT,IP,SUBJECT,CATEGORY,APPROVED,DATE,PARENT, 
       PASSWORD,USERNAME,THANKS,DISAPPROVE,IPS,BUMPS"; 

$id = strip_tags($id); 
$category = strip_tags($category); 
$threads = mysql_query("SELECT COUNT(*) FROM $board") or die(); 
list($threadsTotal) = mysql_fetch_row($threads); 
$threadsTotal_pages = ceil($threadsTotal/$POSTSPERPAGE); 
$threadsPage = intval(@$_GET["page"]); 

if (0 == $threadsPage) 
{ 
    $threadsPage = 1; 
} 

$threadsStart = $POSTSPERPAGE * ($threadsPage - 1); 
$threadsMax = $POSTSPERPAGE; 

if ($category > "" && $id == "" 
    && $passw != <ONE MISTAKE HERE> $adminPass 
    && $username != <ANOTHER MISTAKE HERE> $adminID) 
{ 
    $threads = mysql_query("SELECT $selection FROM $board WHERE PARENT=0 
          AND CATEGORY='$category' 
          ORDER BY ID DESC LIMIT $threadsStart, $threadsMax"); 
} 

if ($category == "" && $id == "" && 
    $passw !== <NOT EQAULS DOES NOT REQUIRE TWO EQUAL SIGNS AGAIN> 
    $adminPass && $username != <AND AGAIN> $adminID) 
{ 
    $threads = mysql_query("SELECT $selection FROM $board WHERE PARENT=0 
           ORDER BY ID DESC LIMIT $threadsStart, $threadsMax"); 
} 

// PLEASE CHECK THE NOT EQUALS FUTHER ON.... 

if ($id > "" && $passw != $adminPass && $username != $adminID) 
{ 
    $threads = mysql_query("SELECT $selection FROM $board WHERE PARENT=0 
          AND ID=$id LIMIT 1"); 

    $quickinfo = mysql_query("SELECT COUNT(*) FROM $board") or die(); 
    $quickinfo = mysql_query("SELECT ID,CONTENT,SUBJECT,CATEGORY,USERNAME FROM 
           $board WHERE PARENT=0 AND ID=$id LIMIT 1"); 

    $replies = mysql_query("SELECT COUNT(*) FROM $board") or die(); 
    $replies = mysql_query("SELECT $selection FROM $board WHERE PARENT=$id 
          ORDER BY ID ASC"); 

    while (list($ID, $CONTENT, $SUBJECT, $CATEGORY, $USERNAME) = 
      mysql_fetch_row($quickinfo)) 
    { 
     $threadID = $ID; 
     $threadContent = $CONTENT; 
     $threadSubject = $SUBJECT; 
     $threadCategory = $CATEGORY; 
     if ($USERNAME > "") 
     { 
      $threadAuthor = $USERNAME; 
     } 
     elseif ($USERNAME == "") 
     { 
      $threadAuthor = "Anonymous"; 
     } 
    } 

} // That is the end of your if 

if ($passw == $adminPass && $username == $adminID) 
{ 
    $threads = mysql_query("SELECT $selection FROM $board ORDER 
          BY APPROVED DESC LIMIT $threadsStart, 
                $threadsMax"); 
} 
+0

Pourriez-vous rendre le code plus lisible en utilisant la barre d'espace et quelques touches d'entrée stratégiques. c'est-à-dire que je peux le lire serait l'utilisation de la barre de défilement horizontale. –

+0

J'espère que c'est un peu mieux que l'original. – Matt

Répondre

1

Code matt- reformaté et aussi repéré que vous utilisez pour '==!' '-'

Aussi, vous devriez envisager d'utiliser mysqli ou POD. La bibliothèque mysql pour PHP est obsolète.

+0

PS: Le format n'est pas parfait. –

+0

Certes je peux être un peu distrait quand il s'agit du problème! ==. (En regardant certains de mes autres codes, dans certains endroits j'utilise! = Alors que dans d'autres! == apparaît.) – Matt

+0

S'il vous plaît être un peu plus reconnaissant et donner un +1 pour le formatage et le repérage d'un problème potentiel. –

0

Je pense que je vois un problème. Je crois que vous voulez vraiment ce

if ($category > "" && $id == "" 
    && $passw != <ONE MISTAKE HERE> $adminPass 
    && $username != <ANOTHER MISTAKE HERE> $adminID) 

{

être ce

if ($category > "" && $id == "" 
    && ($passw != <ONE MISTAKE HERE> $adminPass 
    || $username != <ANOTHER MISTAKE HERE> $adminID)) 

{

ou peut-être, vous voudrez peut-être une autre || à la place d'un autre & &, je ne suis pas complètement sûr de la logique de la catégorie et de l'ID. Sinon, vous ne faites qu'interroger une seule fois la base de données sur la page, ce qui semble être une installation plutôt efficace.

+0

Puisque j'ai une combinaison de l'ID d'administration et de la passe admin, je veux m'assurer que les deux sont présents et corrects.Autrement, n'importe qui pourrait simplement utiliser l'ID d'administrateur comme identification de connexion et dirait "oh hey admin, qu'as-tu voulu faire?" Dans ce cas, nous vérifions que les deux paramètres sont remplis. Maintenant, puisque j'ai une boucle spécifiquement pour la combinaison admin/mot de passe, je voulais exclure celui ci-dessus (sinon il apparaîtrait deux fois.) – Matt

+0

droite, donc cela devrait être si l'un ne correspond pas, pas si les deux ne le fais pas, oui ou non? –