PDA

Bekijk Volledige Versie : Probleem Website



stevie30
22/05/09, 13:32
Beste Webhostingtalker's,
Ik weet zelf niet waar ik het moet plaatsen, dus ik plaats het hier.
Het probleem gaat over een log systeem.
Ik heb een eigen log systeem gemaakt zodat alle users op een bepaald userlevel de logs kunnen bekijken.
Ik heb enkel het volgende probleem, als de log leeg is, geen probleem.
Maar als er iets in de log staat loopt alles vast en is die website even offline.

Enige suggesties?
De file ziet er als volg uit.


<?
$gebruikersid = $_GET['id'];

echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">";
echo "<tr>";
echo "<td colspan=\"2\" class=\"tab5\" valign=\"top\"><span class=\"pink\">Historie</span></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\">";
echo "<table width=\"100%\" cellpadding=\"1\" cellspacing=\"0\">";
$query = mysql_query("SELECT * FROM historie WHERE user_id = '".$gebruikersid."' ORDER BY datee ASC");
$nofiles = @mysql_num_rows($query);
if ($nofiles == 0){
echo "<tr>";
echo "<td class=\"border_down\">This user have no logs!</td>";
echo "</tr>";
}else{
while ($list = mysql_fetch_object($query)) {
$query = mysql_query("SELECT datee,changee,explanation FROM historie WHERE user_id = '".$gebruikersid."' ORDER BY datee ASC");
$date = $list->datee;
$change = $list->changee;
$explanation = $list->explanation;
echo "<tr>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=channels2&id=".$gebruikersid."\">&nbsp; <b>Datum</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>Historie log</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>Level (<a href=\"?.php\">?</a>)</b></a></td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=channels2&id=".$gebruikersid."\">&nbsp; <b>".$date."</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>".$change."</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>".$explanation."</b></a></td>";
echo "</tr>";
}
}
echo "</table>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br>";
echo "<br>";

echo "<br>";
echo "<br>";
?>

De tables staan ook in de database.
Maar ik snap niet waar en hoe dit kan vastlopen?
Het is dan ook de bedeoling dat de logs automatisch in de database komt, dit heb ik ook al gecodeerd, en dat werkt ook.
Custom logs kunnen erook in geplaatst worden, maar als we gewoon in de database er iets in zetten loopt heel dat spel vast.

Alvast bedankt voor het lezen / oplossen.

Met vriendelijke groet,

Steve Nelen

Cakkie
22/05/09, 13:52
Binnen die while loop stel je de $query telkens opnieuw in, waardoor je dus elke keer opnieuw de eerste record krijgt. Die $query = mysql_query binnen die while loop moet daar dus niet staan.

stevie30
22/05/09, 14:18
Cakkie,
Dankjewel voor het helpen!
Het systeempje werkt nu wel met de volgende file.


<?
$gebruikersid = $_GET['id'];

echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">";
echo "<tr>";
echo "<td colspan=\"2\" class=\"tab5\" valign=\"top\"><span class=\"pink\">Historie</span></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\">";
echo "<table width=\"100%\" cellpadding=\"1\" cellspacing=\"0\">";
$aaa = mysql_query("SELECT * FROM historie WHERE user_id = '".$gebruikersid."' ORDER BY datee ASC") or die(mysql_error());
$nofiles = @mysql_num_rows($aaa);
if ($nofiles == 0){
echo "<tr>";
echo "<td class=\"border_down\">This user have no logs!</td>";
echo "</tr>";
}else{
$bbb = mysql_query("SELECT datee,changee,explanation FROM historie WHERE user_id = '".$gebruikersid."' ORDER BY datee ASC") or die(mysql_error());
while ($list = mysql_fetch_object($bbb)) {
$date = $list->datee;
$change = $list->changee;
$explanation = $list->explanation;
echo "<tr>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=channels2&id=".$gebruikersid."\">&nbsp; <b>Datum</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>Historie log</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>Level (<a href=\"?.php\">?</a>)</b></a></td>";
echo "</tr>";
echo "<tr>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=channels2&id=".$gebruikersid."\">&nbsp; <b>".$date."</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>".$change."</b></a></td>";
echo "<td width=\"300\" class=\"border_down\"><a href=\"?p=profiles&id=".$gebruikersid."\">&nbsp; <b>".$explanation."</b></a></td>";
echo "</tr>";
}
}
echo "</table>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br>";
echo "<br>";

echo "<br>";
echo "<br>";
?>

Met vriendelijke groet,

Steve Nelen

dreamhost_nl
22/05/09, 14:55
Ik ben benieuwd of je er zelf nog wijs uit raakt na een tijdje; maw. het gebruik van tabs of extra spaties zou het een en ander een stuk leesbaarder maken...

Sander-
22/05/09, 14:56
Zou je systeem sowieso eens even gaan beveiligen, als je dmv $_GET['id'] werkt dan is het erg makkelijk om de logs van alle gebruikers in te zien... Verander het id en tada...

Smart-Guyz
23/05/09, 00:18
Sowieso niet meteen overal standaard vanuit gaan, alles kan anders dan dat je zelf denkt.

$iUser = ((!isset($_GET['id']) ? exit : $_GET['id']);