echo probleem ivm strlen
de volgende code gebruik ik om de 3de rij uit een query naar het scherm te schrijven:
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:
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 ?
Doe eens voor de if constructie een echo van $row['omschrijving']
zonder de if functie werkt het allemaal perfect !!
maar de regels moeten dus verkort worden en op de een of andere manier geeft hij met een variabele in de echo dus het rijnummer weer ipv de omschrijving.
Het derde veld dat je aan mysql_result() meegeeft, is de veldnaam van je record; 'omschrijving' in dit geval. Wat je ermee wilt bereiken door daar nu $oms neer te zetten, is mij een raadsel.
Je moet juist het resultaat van mysql_result() inkorten:
Code (php)
1
2
3
2
3
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($row['omschrijving'],0,74);
echo $oms
$oms = substr($row['omschrijving'],0,74);
echo $oms
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>
SanThe:
@Willem_vp: Moet dat dan niet zo zijn, want $row bestaat volgens mij niet.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>
$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 :-)
Ik zelf raad het gebruik ook af, omdat je heel snel fouten krijgt. mysql_assoc is het snelste alternatief dat met array-keys werkt.
in dit geval gaf ik aan dat ik het 3de resultaat van "omschrijving" uit mijn tabel naar het scherm wil schrijven.
Echter moeten ergens anders op de pagina ook andere resultaten naar het scherm geschreven worden, bijvoorbeeld resultaat 1,21,134, 396 etc
Er zit dus geen logica in waardoor een while loop in mijn ogen niet mogelijk is. het mogen namelijk geen random resultaten zijn maar het moeten precies die resultaten zijn die ik van te voren aangeef.
Zonder de "if" functie deed ik dat als volgt:
de 3 in dit voorbeeld pas ik dan aan adhv het resultaat die ik naar het scherm wil schrijven. Wil ik dus resultaat 176 naar het scherm schrijven dan doe ik dat als volgt :
Tot zover werkt alles dus prima, maar indien ik de "if" functie toevoeg werkt het dus niet meer !!!
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:
Dit werkt echter niet helemaal omdat hij nu dus het rijnummer weergeeft bij $oms ipv de omschrijving.
Maar ik hoop dat ik nu een beetje duidelijk ben geweest met hetgeen ik wil bereiken
Gewijzigd op 01/01/1970 01:00:00 door Robin
mysql_fetch_object() of mysql_fetch_array(). Ik vind die véél handiger.
Ikzelf gebruik ook nooit mysql_result(). Ik gebruik altijd maar heeft iemand nog een suggiest hoe ik het eea goed naar het scherm kan schrijven ?
Robin:
ik zal dat eens proberen, maar op zich mag dat geen verschil uitmaken naar mijn mening.
Zie mijn MySQL performance test
mysql_fetch_object is het traagst, mysql_fetch_assoc het snelst (voor een associatieve array)
Robin:
Nou, ik zal mijn gedachtenkronkel wat beter uitleggen:
in dit geval gaf ik aan dat ik het 3de resultaat van "omschrijving" uit mijn tabel naar het scherm wil schrijven.
Echter moeten ergens anders op de pagina ook andere resultaten naar het scherm geschreven worden, bijvoorbeeld resultaat 1,21,134, 396 etc
Er zit dus geen logica in waardoor een while loop in mijn ogen niet mogelijk is. het mogen namelijk geen random resultaten zijn maar het moeten precies die resultaten zijn die ik van te voren aangeef.
in dit geval gaf ik aan dat ik het 3de resultaat van "omschrijving" uit mijn tabel naar het scherm wil schrijven.
Echter moeten ergens anders op de pagina ook andere resultaten naar het scherm geschreven worden, bijvoorbeeld resultaat 1,21,134, 396 etc
Er zit dus geen logica in waardoor een while loop in mijn ogen niet mogelijk is. het mogen namelijk geen random resultaten zijn maar het moeten precies die resultaten zijn die ik van te voren aangeef.
Even voor de duidelijkheid: gaat het er om dat je de zoveelste rij uit een tabel wilt laten zien, of wil je de zoveelste kolom van een record laten zien?
Jan:
Uiteraard. Ik denk dat Willem_vp mysql_result nooit gebruikt en automatisch $row schrijft :-)
SanThe:
@Willem_vp: Moet dat dan niet zo zijn, want $row bestaat volgens mij niet.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>
$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 :-)
Ik denk dat ik aan de telefoon zat en na mijn copy/paste-actie was vergeten de code aan te passen ;-)
Willem:
Ik denk dat ik aan de telefoon zat en na mijn copy/paste-actie was vergeten de code aan te passen ;-)
Jan:
Uiteraard. Ik denk dat Willem_vp mysql_result nooit gebruikt en automatisch $row schrijft :-)
SanThe:
@Willem_vp: Moet dat dan niet zo zijn, want $row bestaat volgens mij niet.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$oms = mysql_result($res,3,'omschrijving');
$oms = substr($oms,0,74);
echo $oms
?>
$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 :-)
Ik denk dat ik aan de telefoon zat en na mijn copy/paste-actie was vergeten de code aan te passen ;-)
Hahahaha!
@Robin: voor het geval het erom gaat alleen bepaalde records uit je tabel te halen, kun je een query als deze gebruiken:
Code (php)
1
2
3
2
3
SELECT veld1, veld2, omschrijving
FROM tabelnaam
WHERE id IN ( 1, 3, 5, 7, 9 ) // voer hier je eigen nummers in
FROM tabelnaam
WHERE id IN ( 1, 3, 5, 7, 9 ) // voer hier je eigen nummers in
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Robin:
En dat is dus de gedachtenkronkel die ik bedoelde.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:
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:
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 ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
$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 {
[code]<?php echo(mysql_result($res,1,'link')); ?>
<?php echo(mysql_result($res,1,$oms)); ?>
}
?>
$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 {
[code]<?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:
en op plek 23:
-----------------------------------------
-----------------------------------------
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 :
of moet dit dan iets worden als:
Gewijzigd op 01/01/1970 01:00:00 door Robin
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
$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);}
?>
$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:)
Quote:
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
Gewijzigd op 01/01/1970 01:00:00 door M Ypma