Toon posts:

[php/mysql] weergeven van de nieuwste 2 berichten

Pagina: 1
Acties:
  • 43 views sinds 30-01-2008

Verwijderd

Topicstarter
kijk eens hier,

dit is de code die ik daarvoor gebruik,
PHP:
1
<?$msg_data = mysql_query("SELECT uin FROM ".$messages_table." WHERE (aan='$nummer' OR van='$nummer') AND soort='public' ORDER BY tijd DESC LIMIT $vantot")    or show_error();$form_action = "place_msg";$button_value = "verstuur";$old_msg_data = mysql_query("SELECT * FROM ".$messages_table." WHERE van='$LOGGED_IN' AND aan='$nummer' ORDER BY uin DESC LIMIT 1");$old_msg_row = mysql_fetch_array($old_msg_data);$newest_msg_data = mysql_query("SELECT tijd FROM ".$messages_table." WHERE van='$nummer' AND aan='$LOGGED_IN' ORDER BY uin DESC LIMIT 1");$newest_msg_row = mysql_fetch_array($newest_msg_data);if ($old_msg_row[tijd]>$newest_msg_row[tijd]){$edit_old_msg = $old_msg_row[bericht];$form_action = "edit_msg";$welke_uin = $old_msg_row[uin];$button_value = "wijzig";$understatement = "<br>Wil je je bericht nog wijzigen? dan kan dat hieronder:";}?><table width="100%" border="0" cellpadding="3" cellspacing="0">   <tr>       <td colspan="3" class="top_row">   <?if ($LOGGED_IN &amp;&amp; $nummer!=$LOGGED_IN){?><form name="reg" method="post" action="http://<?=$HTTP_HOST?>/<?=$directory?>">  <table width="100%" border="0" cellspacing="0" cellpadding="3">    <tr align="center">       <td><b>Plaats bij <a href="?cmd=view&amp;nummer=<?=$nummer?>"><?=$row[naam]?></a> een bericht</b><?=$understatement?></td>    </tr>    <tr>       <td align="center">         <textarea name="p_message" cols="<?browser(55,40);?>" rows="4"><?=$edit_old_msg?></textarea>      </td>    </tr>    <tr>       <td align="center">         <input type="submit" name="submit" value=" <?=$button_value?> ">        <input type="hidden" name="action" value="<?=$form_action?>">        <input type="hidden" name="nummer" value="<?=$nummer?>">        <input type="hidden" name="welke_uin" value="<?=$welke_uin?>">      </td>    </tr>  </table></form><?}else{?><div align="center"><b><?if ($nummer==$LOGGED_IN || $extra=="view"){$messages = mysql_query("SELECT 'uin' FROM ".$messages_table." WHERE aan='".$nummer."' AND new='y'");$aantal_nieuwe = mysql_num_rows($messages);?><br><span class="text">Dit zijn jouw eigen berichten<br>je hebt <?=$aantal_nieuwe?> nieuw(e) bericht(en) die zijn aangegeven met oranje.</b></span><br><span class="middle">de nieuwste berichten staan bovenaan. (en de oudste dus onderaan)<br></span><?}else{?>om een berichtje te plaatsen moet je <a href="?cmd=login&amp;return=messages&amp;nummer=<?=$nummer?>">ingelogged</a> zijn.<br><?}?></b><br></div><?}?>       </td>   </tr><?while($messages = mysql_fetch_array($msg_data)){$sender_data = mysql_query("SELECT uin,naam FROM ".$users_table." WHERE uin='$messages[van]' LIMIT 1");$sender = mysql_fetch_array($sender_data);$berichten_titel="bekijk berichten";//enige a-logische troepif($messages[van]==$nummer){$messages[wie]=$messages[aan];}else{$messages[wie]=$messages[van];}//eindeif ($$messages[wie]!="shown" || $sender[naam]==""){$aantal_messages++;if ($messages[aan]==$LOGGED_IN || ($extra=="view" &amp;&amp; $messages[aan]==$nummer)){$berichten_titel="reageer hierop";if ($messages['new']=="y"){$class=" class=\"colored_bg\"";mysql_query("UPDATE ".$messages_table." SET new='n' WHERE aan='$LOGGED_IN' LIMIT 1");}}if ($messages[van]==$LOGGED_IN || ($extra=="view" &amp;&amp; $messages[van]==$nummer)){$berichten_titel="wijzig dit bericht";}?>        <tr<?=$class?>>           <td valign="top" class="top_row"><?getuser($messages[wie]);?>          <br><span class="detail"><?if($messages[wie]!=$LOGGED_IN){?><a href="?cmd=messages&amp;nummer=<?=$messages[wie]?>"><?=$berichten_titel?></a></span>          <?}?>          </td>          <td valign="top" class="top_row"> <b>op <?=date("d-m H:i:s",$messages[tijd])?>             schreef <?getuser($messages[van])?></a></b><br>            <?            $messages[bericht]=nl2br($messages[bericht]);            //$messages[bericht] = wordwrap($messages[bericht],65,"<br>");            $input_text = $messages[bericht];            include "smilies.inc.php";            echo $input_text;?>            <br>            <?            $$messages[wie]="shown";            $reply_data = mysql_query("SELECT bericht,tijd FROM ".$messages_table." WHERE van='$messages[aan]' AND aan='$messages[van]' AND soort='public' ORDER BY tijd DESC LIMIT 1");            $reply = mysql_fetch_array($reply_data);            if ($reply){            ?>            <blockquote>               <hr>              <b>op <?=date("d-m H:i:s",$reply[tijd])?> schreef <?getuser($messages[aan])?></b><br>              <?            $reply[bericht] = wordwrap($reply[bericht],55,"<br>",1);            $input_text = $reply[bericht];            //include "smilies.inc.php";            echo $input_text;?><br><br><a href="?cmd=history&amp;nummer=<?=$nummer?>&amp;and=<?=$messages[wie]?>">[meer...]</a>              <hr>            </blockquote>            <?}?>          </td>        </tr>   <?}$class="";}if (!$aantal_messages){?><tr><td align="center" colspan="3" class="top_row"><br><b><a href="?cmd=view&amp;nummer=<?=$nummer?>"><?=$row[naam]?></a> heeft nog geen berichten verzonden/ontvangen</b></td></tr><?}else{?><tr><td align="center" colspan="3">&amp;nbsp;</td></tr><?}?></table>?>

het probleem is nu dat de pagina vreselijk traag wordt/is. naarmate er meer berichten worden geplaats.
waarschijnlijk omdat ie alle berichten die zijn verzonden en/of ontvangen door $nummer.

wat kan ik doen om de pagina sneller te maken? of moet ik een heel andere structuur bedenken??

  • ImPrEzA
  • Registratie: Oktober 2001
  • Laatst online: 27-05 07:51

ImPrEzA

</breezah> Impreza

ik vind het een beetje onduidelijk wat je bedoeling is, kun je ook de bewuste SQL-query geven waar het probleem ligt? Of gaat het echt om het geheel?

Blackbird singing in the dead of night, take these broken wings and learn to fly... all your life... you were only waiting for this moment to be free. ][ Wanna fight for human rights? www.amnesty.nl


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Waarschijnlijk ben je ongelovelijk veel queries aan het uitvoeren (Volgens mij zie ik ergens een query die uitgevoerd wordt binnen een while)

Waarschijnlijk zul je, om de boel wat sneller te maken, ff over een flinke redesign naa moeten denken. Zeker zo'n querie binnen een while (die werkt met resultaten van een andere query) zou makkelijk in 1 query kunnen.....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Grum
  • Registratie: Juni 2001
  • Niet online
1/ gebruik error_reporting(E_ALL); en geniet van de vele errors die volgen.
2/ leer indenten
3/ leer sql-joins

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Zie grum.

Vooral # 3, om je code een stuk korter te kunnen maken.

Vooral # 2, zodat mensen je code ooit nog kunnen proberen te begrijpen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Dit topic is gesloten.