hallo,

de volgende code gebruik ik om de 3de rij uit een query naar het scherm te schrijven:

<?php echo(mysql_result($res,3,'omschrijving')); ?>


nu mag echter de omschrijving niet langer zijn dan 74 tekens vandaar dat ik het volgende heb gescript:

If (strlen($row['omschrijving']) > 74)
{ $oms = substr($row['omschrijving'],0,74);}
else
{
$oms = $row['omschrijving'];
}


ivm bovenstaande code moet de echo dus ook aangepast worden. dit heb ik op de volgende manier gedaan:

<?php echo(mysql_result($res,3,$oms)); ?>


het rare alleen is, is dat hij nu niet de omschrijving weergeeft maar de positie uit de tabel, dus bijvoorbeel rij 701.

iemand een idee wat er fout is aan deze echo en hoe ik dit op kan lossen ?
Jan Koehoorn schreef op 23.07.2006 11:24
[quote=SanThe schreef op 23.07.2006 10:57]@Willem_vp: Moet dat dan niet zo zijn, want $row bestaat volgens mij niet.
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>

Uiteraard. Ik denk dat Willem_vp mysql_result nooit gebruikt en automatisch $row schrijft :-)
[/quote]
Ik denk dat ik aan de telefoon zat en na mijn copy/paste-actie was vergeten de code aan te passen ;-)
Willem vp schreef op 23.07.2006 13:51
[quote=Jan Koehoorn schreef op 23.07.2006 11:24][quote=SanThe schreef op 23.07.2006 10:57]@Willem_vp: Moet dat dan niet zo zijn, want $row bestaat volgens mij niet.
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>

Uiteraard. Ik denk dat Willem_vp mysql_result nooit gebruikt en automatisch $row schrijft :-)
[/quote]
Ik denk dat ik aan de telefoon zat en na mijn copy/paste-actie was vergeten de code aan te passen ;-)[/quote]

Hahahaha!
@Robin: voor het geval het erom gaat alleen bepaalde records uit je tabel te halen, kun je een query als deze gebruiken:

SELECT veld1, veld2, omschrijving
FROM tabelnaam
WHERE id IN ( 1, 3, 5, 7, 9 ) // voer hier je eigen nummers in
Robin schreef op 23.07.2006 12:02
in jullie reacties staat elke keer : echo $oms

maar dit werkt alleen goed indien je een loop gebruikt, echter de resultaten die ik naar het scherm wil schrijven liggen dus al vast, dus moet het naar mijn mening iets worden als:

<?php echo(mysql_result($res,3,$oms)); ?>
En dat is dus de gedachtenkronkel die ik bedoelde.

Wat het gebruik van $oms met loops heeft te maken, begrijp ik niet. Dat heeft het namelijk niet. $oms is gewoon een variabele waar je een tijdelijke waarde in bewaart:

(1) $oms = mysql_result($res,176,'omschrijving');
(2) $oms = substr($oms,0,74);
(3) echo $oms

In regel 1 haal je de omschrijving uit het 176e resultaat op. Die omschrijving sla je op in $oms.

In regel 2 kort je de omschrijving in tot maximaal 74 tekens.

In regel 3 schrijf je de ingekorte omschrijving vervolgens naar het scherm.

Meer is het niet.

Wat jij doet, is iets heel anders:

(1) $oms = $row['omschrijving'];
(2) echo(mysql_result($res,3,$oms));

In regel 1 vraag je de omschrijving op (waar je die $row vandaan haalt laat je overigens niet weten) en die ken je toe aan $oms. $oms heeft nu dus de waarde "Gehaktballen" of zo.

In regel 2 vraag je via mysql_result op wat de waarde is van het veld "Gehaktballen" in het derde resultaat-record van je query. Maar je HEBT helemaal geen veld "Gehaktballen", want je wilt de waarde van het veld "omschrijving" hebben. En daar loopt MySQL dus de soep (met gehaktballen) in ;-)

dit is de volledige query:

<?

$sql = "SELECT link,omschrijving FROM pm WHERE categorie='fietsen' AND soort='citybikes' ORDER BY RAND() LIMIT 0,48";
$res = mysql_query($sql) or trigger_error(mysql_error());

If (strlen($res['omschrijving']) > 74)
{ $oms = substr($res['omschrijving'],0,74);}
else
{
$oms = $res['omschrijving'];
}

if ($res == 0)
{
echo "fout";
}

else {

<?php echo(mysql_result($res,1,'link')); ?>
<?php echo(mysql_result($res,1,$oms)); ?>

}

?>

Wat wil ik nu precies doen ?

Op zeg maar 20 verschillende plekken van mijn pagina wil ik de omschrijving random weergeven. Omdat er dus geen dubbele omschrijvingen op de pagina mogen verschijnen wil ik een specifieke rij (van de omschrijving) echo-en.

dus bijvoorbeeld op plek 1:

<?php echo(mysql_result($res,1,$oms)); ?>

en op plek 23:

<?php echo(mysql_result($res,23,$oms)); ?>

-----------------------------------------
-----------------------------------------

hetgeen ik bedoelde met oms in combinatie met een loop is het volgende.

in jullie voorbeelden zetten jullie 1 waarde in de variabel oms welke vervolgens naar het scherm geschreven word.

mijn bedoeling is dus om alle resultaten van het veld "omschrijving" die nav de uitgevoerde query zijn opgehaald in de variabele oms worden bewaard.

daarna is het de bedoeling dat ik uit oms waarde 1 (resultaat 1) naar het scherm schrijf, maar ook bijvoorbeeld waarde 23 (resultaat 23)

in mijn beleving dan dus :

<?php echo(mysql_result($res,1,$oms)); ?>
<?php echo(mysql_result($res,23,$oms)); ?>

of moet dit dan iets worden als:

<?php echo $oms,1,; ?>
<?php echo $oms,23,; ?>
hier gaat het al fout:
<?

$sql = "SELECT link,omschrijving FROM pm WHERE categorie='fietsen' AND soort='citybikes' ORDER BY RAND() LIMIT 0,48";
$res = mysql_query($sql) or trigger_error(mysql_error());

If (strlen($res['omschrijving']) > 74)
{ $oms = substr($res['omschrijving'],0,74);}
?>

bij je if vraag je om:
$res['omschrijving']
maar dat gaat niet want je hebt hem nog niet gefetched zoals jan koehoorn uitlegde
en daarom werkt hij zonder if wel:)
haal $res eerst maar door mysql_fetch_assoc() heen.
vervolgens heb je een whileloopje nodig die de rest voor je doet.

maar het is dan ook handig om je query aan te passen als eerder aangegeven hier omdat de regels die je wilt toch al bekend zijn, waarom alles ophalen als je toch al weet wat je nodig hebt:)


ik zal dat eens proberen, maar op zich mag dat geen verschil uitmaken naar mijn mening.

zoek niet teveel dekking achter je mening en sta open voor andere mogelijkheden

Reageren