Avatar billede blaatand Nybegynder
30. december 2009 - 20:16 Der er 6 kommentarer

Problem med at få værdi fra variabel

Nyt spørgsmål som følge af dette spmm: http://www.eksperten.dk/spm/896836

Jeg har lavet en webshop, og lavet betaling via. PayPal. Det fungerer fint, jeg har en variabel hvori totalbeløbet ligger, denne variabel heder $fSummary. Når man kommer til betalingssiden, så henter jeg denne variabel ud i koden med en betalingsknap der videregiver kunden til paypal. Det fungerer fint, beløbet er som det skal være.
Nu prøver jeg så at lave det samme trick med Ewire, men af en eller anden årsag så kan Ewire systemet ikke tolke punktum og konvertere det til et komma på deres betalingsside.
Derfor bliver et beløb på f.eks 37 kr (37.00) pludselig til 3700,00 inde på Ewire. Ikke godt :(

Det er en webshop af ældre dato, og jeg tror at den primære kode er baseret på webshoppen der heder Quick Cart, dog med nogle plugins osv.
Det er ikke nemt at redigere i koden, der er rigtig meget der bliver hentet steder fra som jeg ikke lige ved, og med mit niveau i php programmering, så vil jeg ikke kunne sætte mig godt nok ind i det til at finde en bedre løsning end det som jeg har forsøgt i det tidligere oprettede spørgsmål - Altså lave en ny variabel der feks heder $ewireSummary, som konverterer punktummet til et komma og derefter kobles over på Ewire koden.

Koden jeg bruger nu er som følger:
$testSummary = '37,00';
$ewireSummary = number_format( (float)$testSummary, 2, ',', '');
Det virker!

Hvis man indsætter $fSummary variablen i koden således her:
$testSummary = '$fSummary';
$ewireSummary = number_format( (float)$testSummary, 2, ',', '');
Så giver den et output på der giver 0,00. Altså er kommaet på plads, men den får ikke beløbet over som jeg til eksempelet her vil sige er 37 kr.
Det skal siges, at det lader til at hvis man skriver en tekst i stedet for variablen, eller et tal - Så giver det ligledes 0,00. Altså kunne det tyde på at variablen bliver tolket som tekst, selvom det er tal!

Hjælp! :)
Avatar billede blaatand Nybegynder
30. december 2009 - 20:51 #1
Min index fil ser således her ud, jeg ved ikke om det giver en start på hvor man måske skal hen og lede:

<?php
session_register( 'iCustomer' );
require 'config/general.php';

if( !isset( $_GET['p'] ) || $_GET['p'] == '' )
  $_GET['p']  = $config['start_page'];

extract( $_GET );

require DIR_LANG.LANGUAGE.'.php';

require DIR_LIBRARIES.'TplParser.php';
require DIR_LIBRARIES.'FileJobs.php';
require DIR_LIBRARIES.'FotoJobs.php';
require DIR_LIBRARIES.'FlatFiles.php';
require DIR_LIBRARIES.'Trash.php';

if( !isset( $_SESSION['iCustomer'] ) )
  $_SESSION['iCustomer'] = time( ).rand( 100, 999 );

/*
* Add-ons functions
*/
if( filesize( DIR_PLUGINS.'plugins.php' ) > 30 )
  include DIR_PLUGINS.'plugins.php';

include DIR_CORE.'products-'.$config['db_type'].'.php';
include DIR_CORE.'products.php';

include DIR_CORE.'categories-'.$config['db_type'].'.php';
include DIR_CORE.'categories.php';

include DIR_CORE.'couriers-'.$config['db_type'].'.php';
include DIR_CORE.'couriers.php';

include DIR_CORE.'orders-'.$config['db_type'].'.php';
include DIR_CORE.'orders.php';

include DIR_CORE.'content-'.$config['db_type'].'.php';
include DIR_CORE.'content.php';

include DIR_CORE.'other.php';

$tpl    = new TplParser;
$oFoto  = new FotoJobs;
$oFF    = new FlatFiles;

$content =  null;
$tpl->setDir( TPL.TEMPLATE );

/*
* Add-ons actions
*/
if( filesize( DIR_PLUGINS.'actions_client.php' ) > 30 )
  include DIR_PLUGINS.'actions_client.php';

if( isset( $_GET['sWord'] ) )
  $_GET['sWord'] = changeSpecialChars( $_GET['sWord'] );

if( $p == 'productsList' ){

  $content .= $tpl->tbHtml( 'products_list.tpl', 'PRODUCTS_HEAD' );

  $sCategoryDescription = null;
  if( isset( $iCategory ) && is_numeric( $iCategory ) ){
    $aCategory = throwCategory( $iCategory );
   
    if( !empty( $aCategory['description'] ) || isset( $aCategory['fotoBig'] ) ){
      if( isset( $aCategory['fotoBig'] ) ){
        $aCategory['file'] = $tpl->tbHtml( 'categories_show.tpl', 'FILE' );
      }
      $sCategoryDescription = $tpl->tbHtml( 'categories_show.tpl', 'INFO' );
    }

    if( is_numeric( $aCategory['iParent'] ) ){
      $aCategory['name'] = throwCategoryName( $aCategory['iParent'] ).' - '.$aCategory['name'];
    }

    $sTitleBefore = $aCategory['name'].' - ';

    $content .= listProducts( 'products_list.tpl', 'category' );
  }
  else{
    if( isset( $sWord ) && throwStrlen( $sWord ) > 0 ){
      $content .= listProducts( 'products_list.tpl', 'search' );
    }
    else{
      $content .= listProducts( 'products_list.tpl' );
    }
  }
}
elseif( ( $p == 'productMore' || $p == 'windowPrintProduct' ) && isset( $iProduct ) && is_numeric( $iProduct ) ){
  if( $p == 'windowPrintProduct' )
    $sFile = 'products_print.tpl';
  else
    $sFile = 'products_show.tpl';
 
  $aProduct = throwProduct( $iProduct );
  if( isset( $aProduct ) ){
    $aFoto =  listProductsFoto( $iProduct, $sFile );
    $_GET['iCategory'] = $aProduct['category'];

    if( empty( $aProduct['fullDescription'] ) ){
      $aProduct['fullDescription'] = $aProduct['shortDescription'];
    }

    $sTitleBefore = $aProduct['name'].' - ';

    $content .= $tpl->tbHtml( $sFile, 'SHOW' );
  }
  else
    $content .= $tpl->tbHtml( 'operations.tpl', 'NOT_EXISTS' );
}
elseif( $p == 'basket' ){

  if( isset( $akcja ) ){
    if( $akcja == 'add' ){
      if( isset( $iProduct ) && is_numeric( $iProduct ) && isset( $iQuantity ) && is_numeric( $iQuantity ) && $iQuantity > 0 ){
        addBasketProduct( $iProduct, $iQuantity );
      }
    }
    elseif( $akcja == 'del' ){
      $iOrder = throwOrdersIdTemp( $_SESSION['iCustomer'], null );
      if( isset( $iElement ) && is_numeric( $iElement ) )
        delBasketElement( $iOrder, $iElement );
    }
    elseif( $akcja == 'zapisz' ){
      extract( $_POST );
      if( isset( $aQuantity ) && is_array( $aQuantity ) ){
        $iCount = count( $aQuantity );
        for( $i = 0; $i < $iCount; $i++ )
          if( $aQuantity[$i] != $aQuantityBefore[$i] && is_numeric( $aQuantity[$i] ) && $aQuantity[$i] > 0 )
            addBasketProduct( $aProduct[$i], $aQuantity[$i] - $aQuantityBefore[$i] );
      }

      if( isset( $dalej ) ){
        header( 'Location: '.$_SERVER['PHP_SELF'].'?p=delivery' );
        exit;
      }
    }
  }
  $iOrder = throwOrdersIdTemp( $_SESSION['iCustomer'], null );

  if( isset( $iOrder ) && is_numeric( $iOrder ) )
    $content .= listBasket( $iOrder );
  else
    $content .= $tpl->tbHtml( 'orders_basket.tpl', 'NOT_FOUND' );
}
elseif( $p == 'delivery' ){
  $iOrder = throwOrdersIdTemp( $_SESSION['iCustomer'], null );
  if( isset( $iOrder ) && is_numeric( $iOrder ) ){

    if( isset( $_POST['option'] ) && $_POST['option'] == 'send' ){
      if( checkOrderFields( $_POST ) ){
        saveOrder( $iOrder, $_POST );
        $content .= $tpl->tHtml( 'orders_saved.tpl' );

      }
      else
        $content .= $tpl->tbHtml( 'operations.tpl', 'FORM_ERROR' );
    }
    else{
      if( countBasketProducts( $iOrder ) > 0 ){
        $sSelectCourier = listCouriers( 'couriers_select.tpl' );
        $content .= $tpl->tbHtml( 'orders_delivery.tpl', 'FORM' );
        $content .= listBasket( $iOrder, 'orders_delivery.tpl' );
        $content .= $tpl->tbHtml( 'orders_delivery.tpl', 'COURIER' );
      }
      else
        $content .= $tpl->tbHtml( 'operations.tpl', 'NOT_EXISTS' );
    }
  }
  else{
    $content .= $tpl->tbHtml( 'orders_basket.tpl', 'NOT_FOUND' );
  }
}
elseif( $p == 'windowPrintOrder' && isset( $iOrder ) && is_numeric( $iOrder ) ){
  $aOrder = throwOrder( $iOrder );
  if( isset( $aOrder ) && is_array( $aOrder ) && $aOrder['iKlient'] == $_SESSION['iCustomer'] ){
    $content .= $tpl->tbHtml( 'orders_print.tpl', 'SHOW' );
    $content .= listBasket( $iOrder, 'orders_print.tpl' );
    $aCourier = throwCourier( $aOrder['iCourier'] );
    $fSummary = sprintf( '%01.2f', $aCourier['price'] + $aBasket['fSummary'] );
    $content .= $tpl->tbHtml( 'orders_print.tpl', 'COURIER' );
  }
  else{
    $content .= $tpl->tbHtml( 'operations.tpl', 'ERROR' );
  }
}
else{
  if( !isset( $bDisplayedPage ) ){
    if( strlen( $p ) > 2 )
      $p = substr( $p, 2 );

    if( !is_numeric( $p ) )
      $p = 0;

    $sContentLeft =  throwContentSite( $p );

    if( !isset( $sContentLeft ) ){
      $p = 0;
      $sContentLeft =  throwContentSite( $p );
    }

    if( $p == 0 ){
      if( isset( $send ) )
        $sContentRight =  sendEmail( $_POST, 'contact_send.tpl' );
      else
        $sContentRight =  $tpl->tHtml( 'contact_form.tpl' );
      $content .= $tpl->tHtml( 'contact.tpl' );
    }
    else{
      $sContentRight =  throwFotosForSite( 'foto_list.tpl', $p );
      if( isset( $sContentRight ) && !empty( $sContentRight ) )
        $content .= $tpl->tHtml( 'columns_two.tpl' );
      else
        $content .= $tpl->tHtml( 'columns_one.tpl' );
    }
  }
}

if( ereg( 'window', $p ) ){
  echo $tpl->tHtml( 'head_print.tpl' ).$content.$tpl->tHtml('footer_print.tpl');
}
else{
  $sMenuCategories  = listCategories( 'categories_menu.tpl' );
  $sContentSites    = listContentSites( 'content_list.tpl' );
  echo $tpl->tHtml( 'head.tpl' ).$content.$tpl->tHtml('footer.tpl'); 
}
?>
Avatar billede tjens Nybegynder
30. december 2009 - 21:01 #2
Du må ikke have apostroffer uden om variabelnavnet:
$testSummary = '$fSummary';
Så får du en String der indeholder dollartegn og teksten fSummary

Det skal være sådan her:
$testSummary = $fSummary;
Avatar billede blaatand Nybegynder
30. december 2009 - 21:19 #3
Ok. Når jeg gør det, så forsvinder beløbet på 0,00 igen - Så det ku tyde på at den ikke får dataen som den skal...

Problemet er måske at finde det rigtige sted hvor fSummary opstår, for jeg tror ikke det er i index filen jeg skal i gang med at lede, og det er den jeg tester med i øjeblikket for den ved jeg da at den bliver hentet...

Problemet er bare at der er en milliard filer, og at finde det helt rigtige sted er virkelig svært.
Avatar billede blaatand Nybegynder
30. december 2009 - 21:36 #4
Filen orders.php ser således her ud. Det kunne godt se ud somom at der bliver lavet noget på fSummaryvariablen her som måske kunne være en hjælp.

<?php
if( !function_exists( 'throwOrdersIdTemp' ) ){
  /**
  * Zwrocenie id zamowienia tymczasowego
  * jesli zamowienie nie istnieje to nastepuje jego dodanie
  * @return int
  * @param int    $iClient
  * @param string $sOption
  */
  function throwOrdersIdTemp( $iClient, $sOption = 'add' ){
    return dbThrowOrdersIdTemp( $iClient, $sOption );
  } // end function throwOrdersIdTemp
}

if( !function_exists( 'throwOrder' ) ){
  /**
  * Zwracanie danych zamowienia
  * @return array
  * @param int  $iOrder
  */
  function throwOrder( $iOrder ){
    $aData =  dbThrowOrder( $iOrder );

    if( isset( $aData ) ){
      list( $aOrder['id'], $aOrder['iKlient'], $aOrder['iStatus'], $aOrder['iCourier'], $aOrder['sFirstName'], $aOrder['sLastName'], $aOrder['sCompanyName'], $aOrder['sStreet'], $aOrder['sZipCode'], $aOrder['sCity'], $aOrder['sTelephone'], $aOrder['sEmail'], $aOrder['iTime'], $aOrder['sIp'], $aOrder['sComment'] ) = $aData;

      $aOrder          =  changeMassTxt( $aOrder, '' );
      $aOrder['sDate'] =  date( 'Y-m-d H:i:s', $aOrder['iTime'] );

      return $aOrder;
    }
    else
      return null;
  } // end function throwOrder
}

if( !function_exists( 'countBasketProducts' ) ){
  /**
  * Zliczanie ilosci produktow w koszyku
  * @return void
  * @param int  $iOrder
  */
  function countBasketProducts( $iOrder ){
    return dbCountBasketProducts( $iOrder );
  } // end function countBasketProducts
}

if( !function_exists( 'addBasketProduct' ) ){
  /**
  * Dodawanie produktu do basketa
  * @return void
  * @param int  $iProduct
  * @param int  $iQuantity
  */
  function addBasketProduct( $iProduct, $iQuantity ){
    $aProduct = throwProduct( $iProduct );
    if( isset( $aProduct ) ){
      $iOrder = throwOrdersIdTemp( $_SESSION['iCustomer'] );
      dbAddBasketProduct( $aProduct, $iQuantity, $iOrder );
    }
  } // end function addBasketProduct
}

if( !function_exists( 'delBasketElement' ) ){
  /**
  * Usuwanie elementu zamowienia
  * @return void
  * @param int  $iOrder
  * @param int  $iElement
  */
  function delBasketElement( $iOrder, $iElement = null ){
    dbDelBasketElement( $iOrder, $iElement );
  } // end function delBasketElement
}

if( !function_exists( 'delOrder' ) ){
  /**
  * Usuwanie zamowienia
  * @return void
  * @param int  $iOrder
  */
  function delOrder( $iOrder ){
    dbDelOrder( $iOrder );
    delBasketElement( $iOrder );
  } // end function delOrder
}

if( !function_exists( 'listBasket' ) ){
  /**
  * Wyswietlanie zawartosci basketa
  * @return string
  * @param int    $iOrder
  * @param string $sFile
  */
  function listBasket( $iOrder, $sFile = 'orders_basket.tpl' ){
    global $tpl, $aBasket;
   
    $aData      = dbListBasket( $iOrder );

    if( isset( $aData ) ){
      $iCount  = count( $aData );
      $i2      = 0;
      $fSummary = 0;
      $content  = null;

      $aProducts = throwProducts( );

      for( $i = 0; $i < $iCount; $i++ ){
        list( $aBasket['iElement'], $aBasket['iOrder'], $aBasket['iProduct'], $aBasket['iQuantity'], $aBasket['fPrice'] ) = $aData[$i];
       
        if( $i % 2 )
          $aBasket['style'] = 'order_table_data_even';
        else
          $aBasket['style'] = 'order_table_data_odd';

        if( isset( $aProducts[$aBasket['iProduct']] ) )
          $aBasket['sName'] = $aProducts[$aBasket['iProduct']];
        else
          $aBasket['sName'] = null;

        $aBasket['fSummary']  = tPrice( $aBasket['iQuantity'] * $aBasket['fPrice'] );

        $fSummary +=  $aBasket['fSummary'];

        $content .= $tpl->tbHtml( $sFile, 'LIST_LIST' );
      } // end for

      $aBasket['fSummary'] = tPrice( $fSummary );

      return $tpl->tbHtml( $sFile, 'LIST_HEAD' ).$content.$tpl->tbHtml( $sFile, 'LIST_FOOTER' );
    }
    else
      return $tpl->tbHtml( $sFile, 'NOT_FOUND' );
  } // end function listBasket
}

if( !function_exists( 'saveOrder' ) ){
  /**
  * Zapisywanie zamowienia
  * @return void
  * @param int    $iOrder
  * @param array  $aForm
  */
  function saveOrder( $iOrder, $aForm ){

    $aForm =    changeMassTxt( $aForm, '', Array( 'sComment', 'lenH' ) );

    if( throwStrLen( $aForm['sComment'] ) < 2 )
      $aForm['sComment'] = null;
    elseif( throwStrLen( $aForm['sComment'] ) > 500 )
      $aForm['sComment'] = substr( $aForm['sComment'], 0, 500 ).'...';

    if( isset( $aForm['iCourier'] ) ){
      $aCourier = explode( '|', $aForm['iCourier'] );
      $aForm['iCourier'] = $aCourier[0];
    }
    else
      $aForm['iCourier'] = null;

    $aForm['iOrder'] = $iOrder;

    dbSaveOrder( $aForm );

    if( $GLOBALS['config']['mail_informing'] == true )
      @mail( EMAIL, $GLOBALS['lang']['mail_title'], $GLOBALS['lang']['mail_txt'], 'FROM: '.EMAIL );
  } // end function saveOrder
}

if( !function_exists( 'checkOrderFields' ) ){
  /**
  * Sprawdzanie czy zostaly wypelnione pola zamowienia
  * @return bool
  * @param array  $aForm
  */
  function checkOrderFields( $aForm ){
    if(
      checkLength( $aForm['sFirstName'], 1 )
      && checkLength( $aForm['sLastName'], 1 )
      && checkLength( $aForm['sStreet'], 1 )
      && checkLength( $aForm['sZipCode'], 1 )
      && checkLength( $aForm['sCity'], 1 )
      && checkTel( $aForm['sTelephone'] )
      && checkEmail( $aForm['sEmail'] )
      && checkLength( $aForm['iCourier'], 1 )
    )
      return true;
    else
      return false;
  } // end function checkOrderFields
}

?>
Avatar billede tjens Nybegynder
30. december 2009 - 22:46 #5
Har du styr på PHP variable scope?
http://php.net/manual/en/language.variables.scope.php

Det kan jo være nødvendigt at definere global, for at huske variabel værdier i andre dele af scriptet.
Avatar billede blaatand Nybegynder
31. december 2009 - 02:18 #6
Nej desværre ikke så meget styr på det, har rodet lidt med det nu her, men mit problem er nok lidt at jeg ikke rigtig ved hvor fSummary variablen opstår henne i koden på de forskellige sider...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester