't is op basis van een deel van een code die ik een paar dagen geleden in dit forum zag, hij doet alleen een ding verkeerd: de variable field 2 (ik noem hem ook mar even "feat" want ook bij mij wordt ie niet voor iedere case ingevuld) levert weliswaar de tekst featuring op wanneer dat zo hoort te zijn, maar daarnaast slechts de eerste letter van het woord / de woorden die er zouden moeten staan. Help!

<?
mysql_pconnect("localhost","","dbbb");
mysql_select_db("fs");
$result = mysql_query("select * from `vids` ORDER BY 'year'");
?>

<?
while($row=mysql_fetch_array($result)) {
$field1 = $row["video"];
$field2 = $row["feat"];
$field3 = $row["year"];
$field4 = $row["album"];

echo "<b>$field1 </b>";

if
(strlen($field2) ==0)
{
echo " ";
}

else
{
echo "<b><i>featuring ".$field2["feat"]."</i></b>";
}

echo "<br><b>Year:</b> $field3 <br><b>Album:</b> $field4<br><br>";
}
?>
wat doet het niet:

krijg je een foutmelding??
en zet dit even boven aan je script

<?php
error_reporting(E_ALL);
?>


en
<?php
or die (mysql_error());
?>
na elke query die je uitvoert
En zo:
<?
while($row=mysql_fetch_array($result)) {
$field1 = $row["video"];
$field2 = $row["feat"];
$field3 = $row["year"];
$field4 = $row["album"];

echo "<b>$field1 </b>";

if
(strlen($field2) ==0)
{
echo " ";
}

else
{
echo "<b><i>featuring ".$field2."</i></b>";
}

echo "<br><b>Year:</b> $field3 <br><b>Album:</b> $field4<br><br>";
}
?>
Goed zo Jan, ik had 'm niet gezien.:(
SanThe schreef op 20.07.2006 21:26
Goed zo Jan, ik had 'm niet gezien.:(



ik ook niet
Thnx Jan hij werkt! Geweldig, met dit format kan ik zowat alle gegevens voor mijn site automatiseren. Super! Thnx again :-)

PS Donhertog ook bedankt voor je reactie, het probleem is al opgelost
En dit:
<?php
mysql_pconnect("localhost","","dbbb");
mysql_select_db("fs");
$result = mysql_query("select * from `vids` ORDER BY 'year'");
?>
Hoort er zo uit te zien:
<?php
mysql_pconnect("localhost","","dbbb");
mysql_select_db("fs");
$sql = "
SELECT video, feat, year, album
FROM vids
ORDER BY year ASC
";
if (!$res = mysql_query ($sql)) {
echo '<pre>';
trigger_error (mysql_errno () . ': ' . mysql_error ())
echo "\n";
echo $sql;
echo '</pre>';
}
else {
while (hier je fetch) {

}
}
?>
De verschillen:
• de * is vervangen door expliciete veldnamen omdat dat sneller is
• de backtics zijn weg (die ` dingetjes die alleen MySQL begrijpt)
• by ORDER BY horen geen quotes, en altijd ASC of DESC opgeven voor het overzicht
• query netjes uitschrijven. Is gemakkelijker tijdens het debuggen
• foutafhandeling!!! Last but not least. Als een query mislukt wil je weten waarom, dus genereer een error en echo de query naar het scherm, tijdens het ontwikkelen. Als de site klaar is, kun je ze gaan loggen.
De query is niet goed, de kolomnaam 'year' hoort niet tussen quotes of andere rommel (bv. backtics `) te staan. Verder controleer je nergens of de query wel is gelukt en dat terwijl je de garantie hebt dat deze vroeg of laat zal mislukken.

De naam 'year' is ook niet zo handig gekozen, year is namelijk ook een functie en ook nog eens een datatype. Dit kan verwarring opleveren. Bedenk een betere naam.

Dit stuk is zinloos:
$field1 = $row["video"];
$field2 = $row["feat"];
$field3 = $row["year"];
$field4 = $row["album"];

Wat is er mis met $row["video"] ? Nu weet je waar dit vandaan komt en wat er in staat. $field1 zegt helemaal niets en kost alleen maar extra geheugen.

Verder overal de variabelen buiten quotes halen, de ene keer doe je dat wel, de andere keer niet.
@ SanThe: ja, hij was venijnig he?
@ Jan Koehoorn

geen spatie tussen functie en haakjes :P

Reageren