phpbar.de logo

Mailinglisten-Archive

[php] MySQL- Abfragen optimieren

[php] MySQL- Abfragen optimieren

Josef Weber mailinglists_(at)_maxfusion.de
Sat, 27 Jan 2001 12:02:43 +0100


Hi Leute.

Und zwar arbeite ich an einem script, in denen Datenbank- Texte in Textareas
(Texte) und Textfeldern (Titel der Texte) ausgegeben werden. Die Daten
befinden sich in der Tabelle "contents". Hier der Code:

-----------------------
     // Textareas und Überschriften generieren.
     $sql = "SELECT id FROM contents WHERE page LIKE '$page_id' ORDER BY
ID";
     $result = send_sql($db, $sql);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
       foreach ($row as $elem) {
         $content_id = $elem;
         $sql = "SELECT content FROM contents WHERE id LIKE '$content_id'";
         $content_text = wert(send_sql($db, $sql));
         $sql = "SELECT title FROM contents WHERE id LIKE '$content_id'";
         $content_title = wert(send_sql($db, $sql));
         ?>
          <tr>
           <td>
            <? // Nun werden die Inhalte in den Formularfeldern ausgegeben.
Die Namen dieser sind ein Array, einmal $title[], einmal $content[] ?>
            <input type="text" name="<?php echo "title["."$content_id"."]";
?>" value="<?php echo $content_title; ?>">
            <textarea name="<?php echo "content["."$content_id"."]";
?>"><?php echo "$content_text"; ?></textarea>
           </td>
          </tr>
         <?
      } // end foreach
     } // end while

// Diese Funktion gibt die einzelnen Inhalte aus
function wert($result) {
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  foreach ($row as $elem) {
   return $elem;
   }
 }
}


//Nach der Änderung der Daten werden diese gespeichert.
//Speicherung der Daten
    // Auslesen des Arrays $content[] u. Abfrage der alten Inhalte
    foreach ($content as $content_id=>$elem) {
      $sql = "SELECT content FROM contents WHERE id LIKE '$content_id'";
      $content_old = wert(send_sql($db, $sql));
      $sql = "SELECT title FROM contents WHERE id LIKE '$content_id'";
      $title_old = wert(send_sql($db, $sql));
      //Haben sich Änderungen ergeben?
      if (($elem != $content_old)or($title[$content_id]!=$title_old)) {
        $sql = "UPDATE contents SET content='$elem', last='$date',
title='$title[$content_id]' WHERE id like '$content_id'";
        send_sql($db, $sql);
      }
    }
---------------------

Jedoch dauert die Ausgabe und die Speicherung der Daten sehr lange,
vermutlich wg der vielen Server- Requests, auch wenn es meistens nur so um
die 10 Inhalte immer ausgegeben werden.

Kann man die Abragen optimieren, damit die Speicherung und das Anzeigen der
Daten schneller geht?

Vielen Dank im Voraus......

mfg
Josef Weber



php::bar PHP Wiki   -   Listenarchive