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:
$list2 = mysql_query($query2);
$query2 = "SELECT * FROM badges";
$badges_sql = "SELECT * FROM leden";
$badges = $list->badges;
while ($list2 = mysql_fetch_array($query2))
{
	extract($list2);
$badges = str_replace('"$naam"', '<img src=""$img"" alt=""$beschrijving"">', $badges);
}
echo "$badges";

Weten jullie wat hier fout aan is?
MySQL gegevens enz. heb ik erin gezet..
Dat heb ik gedaan en daarna weer weggehaalt nadat ik klaar was ;)
<?
$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.
Laurens schreef op 27.10.2006 19:48
Dat heb ik gedaan en daarna weer weggehaalt nadat ik klaar was ;)
Werkt het scipt dan? Volgens de laatste melding was dat niet het geval en dus is daar geen enkele reden toe!
Ik heb hem nu zo:
<?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 &rsaquo; 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.
Heb het ff anders gedaan:
<?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 &rsaquo; 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?
Hmm 24 uur zijn voorbij en nog niemand antwoord. Iemand enig idee?

<?php

$badges = $list->badges;
while ($list2 = mysql_fetch_array($query2))
{
    extract($list2);
$badges = str_replace('"$naam"', '<img src=""$img"" alt=""$beschrijving"">', $badges);
}
if($badge == mod){
    echo " <img src=\"modimage.gif\" alt=\"mod\">";
}
if($badge == admin){
    echo " <img src=\"adminimage.gif\" alt=\"admin\">";
}
if($badge == hoi){
    echo " <img src=\"hoiimage.gif\" alt=\"hoi\">";
}


?>


werkt dat??
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.

Reageren