Hallo,
Ik heb een stukje code gemaakt dat alle gegevens van zogenaamde "badges" die je naast je naam kan hebben uit de database haalt en dan meerdere replaces aanmaakt.
Ik heb het volgende stukje code:
<?
$select = "SELECT *,date_format(datum,'%d-%m-%Y') AS datum FROM leden WHERE id='" . $_GET['mid'] . "' AND activatie='1'"; // query 1
$select2 = "SELECT * FROM badges"; // query 2
$badges_sql = "SELECT * FROM leden"; // query 3
$badges = $list2->badges; // bestaat niet !!
$status = $list->status; // bestaat niet !!
$xtrastatus = $list->werk; // bestaat niet !!
$query = mysql_query($select); // <== uitvoeren query zonder foutafhandeling
$bestaat = mysql_num_rows($query);
$list = mysql_fetch_object($query);
$list2 = mysql_query($query2); // <== uitvoeren query zonder foutafhandeling
$query2 = "SELECT * FROM badges"; // query 4
?>
Je hebt 4 queries en je voert er slechts 2 uit. Daar gaat dus iets mis.
Je maakt variabelen aan die een kopie zijn van een niet-bestaande variabele. Dat wordt geen succes.
En zorg eens voor wat logica:
- Opstellen van de sql in een variabele
- Uitvoeren query, aanroepen van de variabele
- Controleren of de query is gelukt
En dan pas naar de volgende:
- Opstellen van de sql in een variabele
- Uitvoeren query, aanroepen van de variabele
- Controleren of de query is gelukt
En haal de variabelen eens buiten quotes! En waar is de error_reporting(E_ALL) gebleven? Het is al vaak geroepen, maar deze mag nooit ontbreken.
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require 'mysql.php';
$select = "SELECT *,date_format(datum,'%d-%m-%Y') AS datum FROM leden WHERE id='" . $_GET['mid'] . "' AND activatie='1'";
$select2 = "SELECT * FROM badges";
$badges_sql = "SELECT * FROM leden";
$badges = "$list2->badges";
$query = mysql_query($select);
$bestaat = mysql_num_rows($query);
$list = mysql_fetch_object($query);
$list2 = "mysql_query($query2)";
$query2 = "SELECT * FROM badges";
$color_array = array(
"Beheerder"=>"red",
"Smod"=>"darkgreen",
"Mod"=>"green",
"vip"=>"black",
"HabboX"=>"#00CCFF",
"Verbannen"=>"gray");
echo "<link href='style.css' type='text/css' rel='stylesheet'>";
if ($bestaat == 0)
{
echo "<b>Profiel › Fout</b><br>";
echo "Deze gebruikersnaam bestaat niet en heeft dus ook geen profiel!";
}
else
{
echo "<b>Profiel van $list->gebruikersnaam</b><br><br>
<table width=\"100%\" cellpadding=\"0\">
<tr><td width=\"30%\"><b>Gebruikersnaam:</b></td><td>$list->gebruikersnaam</td></tr>
<tr><td width=\"30%\"><b>Id:</b></td><td>$list->id</td><tr>
<tr><td width=\"30%\"><b>Naam:</b></td><td>$list->naam</td></tr>
<tr><td width=\"30%\"><b>E-mail adres:</b></td><td><b>$list->email</td></tr>
<tr><td width=\"30%\"><b>Homepage:</b></td><td>";
if ($list->homepage == "")
{
$homepage = "Geen";
}
else
{
$homepage = "<a href=\"$list->homepage\" target=\"new\">$list->homepage</a>";
}
echo "$homepage</td></tr>
<tr><td width=\"30%\"><b>Lid sinds:</b></td><td>$list->datum</td></tr>
<tr><td width=\"30%\"><b>Status:</b></td><td><font color=\"" . $color_array[$list->status] . "\">$list->status</font></td></tr>
<tr><td width=\"30%\"><b>Waarschuwingen:</b></td><td>$list->waarschuwingen</td></tr>
<tr><td width=\"30%\"><b>Ondertitel:</b></td><td>$list->ondertitel</td></tr>
<tr><td width=\"30%\"><b>PB:</b></td><td><a href=\"priveberichten.php?new=1&naar=$list->gebruikersnaam\">Stuur PB</a></td></tr>
<tr><td width=\"30%\" valign=\"top\"><b>Avatar:</b></td><td>";
if ($list->avatar != "Geen")
{
echo "<img src=\"avatar/$list->avatar\">";
}
else {
echo "Geen";
}
echo "<tr><td width=\"30%\" valign=\"top\"><b>Badges:</b></td><td>";
echo "</td></tr>";
echo "</table>";
}
while ($list2 = mysql_fetch_array($query2)){
extract($list2);
$badges = str_replace($naam, '<img src=$img alt=$beschrijving>', $badges);
}
echo $badges;
?>
</td>
</div>
Ik raak ff helemaal door de war en ik zie ff de weg niet meer.
Alles werkt nu gewoon naar behoren alleen bij het stukje om de badges te laten zien krijg ik:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/048680/public/sites/www.ihabbo.nl/users2/profiel.php on line 69
Ik denk dat er een fout zit bij de functie dat meerdere replaces aanmaakt.
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require 'mysql.php';
$select = "SELECT *,date_format(datum,'%d-%m-%Y') AS datum FROM leden WHERE id='" . $_GET['mid'] . "' AND activatie='1'";
$select2 = "SELECT * FROM badges";
$badges_sql = "SELECT * FROM leden";
$query = mysql_query($select);
$bestaat = mysql_num_rows($query);
$list = mysql_fetch_object($query);
$query2 = mysql_query("SELECT * FROM badges") or die(mysql_error());
$color_array = array(
"Beheerder"=>"red",
"Smod"=>"darkgreen",
"Mod"=>"green",
"vip"=>"black",
"HabboX"=>"#00CCFF",
"Verbannen"=>"gray");
echo "<link href='style.css' type='text/css' rel='stylesheet'>";
if ($bestaat == 0)
{
echo "<b>Profiel › Fout</b><br>";
echo "Deze gebruikersnaam bestaat niet en heeft dus ook geen profiel!";
}
else
{
echo "<b>Profiel van $list->gebruikersnaam</b><br><br>
<table width=\"100%\" cellpadding=\"0\">
<tr><td width=\"30%\"><b>Gebruikersnaam:</b></td><td>$list->gebruikersnaam</td></tr>
<tr><td width=\"30%\"><b>Id:</b></td><td>$list->id</td><tr>
<tr><td width=\"30%\"><b>Naam:</b></td><td>$list->naam</td></tr>
<tr><td width=\"30%\"><b>E-mail adres:</b></td><td><b>$list->email</td></tr>
<tr><td width=\"30%\"><b>Homepage:</b></td><td>";
if ($list->homepage == "")
{
$homepage = "Geen";
}
else
{
$homepage = "<a href=\"$list->homepage\" target=\"new\">$list->homepage</a>";
}
echo "$homepage</td></tr>
<tr><td width=\"30%\"><b>Lid sinds:</b></td><td>$list->datum</td></tr>
<tr><td width=\"30%\"><b>Status:</b></td><td><font color=\"" . $color_array[$list->status] . "\">$list->status</font></td></tr>
<tr><td width=\"30%\"><b>Waarschuwingen:</b></td><td>$list->waarschuwingen</td></tr>
<tr><td width=\"30%\"><b>Ondertitel:</b></td><td>$list->ondertitel</td></tr>
<tr><td width=\"30%\"><b>PB:</b></td><td><a href=\"priveberichten.php?new=1&naar=$list->gebruikersnaam\">Stuur PB</a></td></tr>
<tr><td width=\"30%\" valign=\"top\"><b>Avatar:</b></td><td>";
if ($list->avatar != "Geen")
{
echo "<img src=\"avatar/$list->avatar\">";
}
else {
echo "Geen";
}
echo "<tr><td width=\"30%\" valign=\"top\"><b>Badges:</b></td><td>";
echo "</td></tr>";
echo "</table>";
}
// HIER BEGINT DE CODE
$badges = $list->badges;
while ($list2 = mysql_fetch_array($query2))
{
extract($list2);
$badges = str_replace("'$naam'", "<img src='$img' alt='$beschrijving'>", $badges);
}
echo $badges;
// HIER EINDIGT DE CODE
?>
</td>
</div>
Het voorbeeld staat op: http://www.ihabbo.nl/users2/profiel.php?mid=1
Alles werkt gewoon en onderaan staan ook de teksten die moeten worden gereplacet naar images.
Maar nu wil ik dat er automatisch replaces worden gemaakt door middel van de gegevens uit de tabel "badges".
Weten jullie hoe ik dit zou kunnen doen?
een tijdje geleden had je colega lil-mik of chellover het antwoord gevonden toch? neem is een kijken in zijn topics of in de mijne misschien heb je daar wat aan.