[PHP] Tekens vervangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
in mijn database staat een rij met getallen. Deze moeten in een tabel getoond worden. Dat is geen probleem.
Alleen staan er komma getallen in mijn database. Deze zet ik om met number_format. Dit werkt ook goed.
Ik wil dat wanneer een getal eindigt op .50 deze automatisch wordt omgezet naar .30. Dit moet alleen gebeuren bij de echo. in de database moet het getal niet veranderen.
Bijvoorbeeld: Getal in de database is 8.50 dit moet getoond worden als 8.30.

Ik heb dit script, alleen gebeurt er niks. Ik blijf de getallen als .50 zien.

PHP:
1
2
3
4
5
6
7
8
9
10
11
if (substr($row[begin],-2, 2) == "5" ) 
{ 
$row[begin] = str_replace('5', '3', '$row[begin]');
} 

if (substr($row[eind],-2, 2) == "5" ) 
{ 
$row[eind] = str_replace('5', '3', '$row[eind]');
}
echo "$row[begin]";
echo "$row[eind]";


Wie weet wat ik verkeerd doe?

Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 06:50

Scott

Ik ben, dus ik tweak

Try it this way:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
if (substr($row['begin'],-2, 2) == "5" ) 
{ 
$row['begin'] = str_replace('5', '3', $row['begin']);
} 

if (substr($row['eind'],-2, 2) == "5" ) 
{ 
$row['eind'] = str_replace('5', '3', $row['eind']);
}
echo $row['begin'];
echo $row['eind'];
?>


Variabele tussen enkele quotes worden gezien als tekst en niet als variabelen. Verder heb ik je code nog wat opgeschoond. Het zal ook vast op een betere manier kunnen, maar dit werkt iig (niet getest, maar ben er wel van overtuigd) :)

Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ik heb het aangepast en geprobeert. Alleen verandert er niks. De output blijft 8,50

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Die code is sowieso brak, wanneer aan de voorwaarde voldaan wordt zal iets als 5.50 gewoon omgezet worden naar 3.30 omdat str_replace() de hele string gaat aanpassen.

March of the Eagles


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
PHP:
1
if (substr($row['begin'],-2, 2) == "5" )

Hoe kan een string met lengte 2 ooit gelijk zijn aan '5'? Verander die "5" eens in "50".

Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 06:50

Scott

Ik ben, dus ik tweak

Probeer het dan zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$explode_begin = explode('.', $row['begin']);
$decimaal_begin = $explode_begin[1];

$decimaal_begin = ($decimaal_begin == 50) ? 30 : 50;

$begin = implode($explode_begin[0].$decimaal_begin);

$explode_eind = explode('.', $row['eind']);
$decimaal_eind = $explode_eind[1];

$decimaal_eind = ($decimaal == 50) ? 30 : 50;

$eind = implode($explode_eind[0].$decimaal_eind);


Wellicht nog niet optimaal, maar ik ben vrij moe en heb de hele dag al gescript.. Kan dus zijn dat het nog veel makkelijker kan :+

[ Voor 7% gewijzigd door Scott op 18-07-2006 23:05 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Mag ik vragen waar die getallen voor staan? Aangezien je het 'begin' en 'eind' noemt krijg ik het idee dat je hele enge dingen aan het doen bent met tijdstippen. :X

[ Voor 10% gewijzigd door Voutloos op 18-07-2006 23:06 ]

{signature}


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 09-06 17:16

Bergen

Spellingscontroleur

Ja, dat is logisch toch? Je kijkt vanaf het eind van de string 2 karakters naar voren, vanaf dat punt pak je 2 karakters. Die ga je vervolgens vergelijken met een string van 1 karakter. Dat kan natuurlijk nooit matchen.

Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
de tekens staan ook als .50 in de database.

Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 09-06 17:16

Bergen

Spellingscontroleur

Dan moet je het dus vergelijken met "50" ipv "5", toch?

PHP:
1
2
3
4
5
6
foreach(array('begin','eind') as $kolom) {
    $i =& $row[$kolom]; // iets korter
    if (substr($i, -2, 2)) == '50') {
        $i = substr($i, 1, strlen($i) - 2) + '30';
    }
}

[ Voor 85% gewijzigd door Bergen op 18-07-2006 23:16 ]


Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Nu werkt het. ik pakte inderdaad twee getallen i.p.v. 1 getal.
Bedankt voor jullie hulp.

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 28-07-2022

djc

Overigens lijkt de conversie van halve uren op deze manier me wel een beetje ranzig. Kan je niet beter iets generieks doen met x / 100 * 60? Dat maakt van 50 ook 30, maar is wat generieker.

Rustacean


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Manuzhai schreef op dinsdag 18 juli 2006 @ 23:14:
Overigens lijkt de conversie van halve uren op deze manier me wel een beetje ranzig. Kan je niet beter iets generieks doen met x / 100 * 60? Dat maakt van 50 ook 30, maar is wat generieker.
Ik zou sowieso liever het aantal minuten sinds een bepaald punt (12 uur 's nachts?) nemen in plaats van het aantal uren als reële waarde.

[ Voor 6% gewijzigd door NMe op 18-07-2006 23:22 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1