Foros del Web » Programando para Internet » PHP »

problema con resta en php

Estas en el tema de problema con resta en php en el foro de PHP en Foros del Web. Hola muchachos les agradezco mucho todo, de verdad han sido de mucha ayuda para mi, pero ahora tengo otro problemita con el que me gustaria ...
  #1 (permalink)  
Antiguo 27/03/2010, 12:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
problema con resta en php

Hola muchachos les agradezco mucho todo, de verdad han sido de mucha ayuda para mi, pero ahora tengo otro problemita con el que me gustaria que me ayudaran jeje les explico! Tengo creada una pagina donde por base de datos le agrego unas coins a mis usuarios y ellos con esas coins pueden comprar lo que quieran en una tiendita, lo que pasa ahora es que si alguien tiene por ejemplo 3 coins y quiere comprar algo que cueste 5 coins, el sistema le acepta la compra y le coloca -2 coins en el sistema, entonces como pueden notar es un problema ya que deberia decir algo asi como que no tienes coins suficientes, no se donde esta el error que permite que eso pase de verdad les agradezco su ayuda! aqui les pego el codigo completo de la pagina! muchas gracias de antemano

Código PHP:
<?php
session_start 
();

    if(
$_SESSION['id'] == "") {
        die(
'Logge dich bitte ein!');
    }
    else {
    
    include(
'../inc/config.php');
        
mysql_select_db('account');
        
        
$getuser "SELECT * from account where login = '" $_SESSION['id'] . "'";
            
$checkuser mysql_query($getuser);
                
$num mysql_num_rows($checkuser);
            
        if(
$num 0) {
        
            
$array mysql_fetch_array($checkuser);
    
            
$itemid $_GET['id'];
            
$user $_SESSION['id'];
            
$coins $_SESSION['coins'];
                        
                    
                    
            
$check "SELECT * from itemshop where id = '" $itemid "'";
                
$query mysql_query($check);
                    
$num mysql_num_rows($query);
            if(
$num 0) {
                
$array2 mysql_fetch_array($query);
            
$rescash $array['coins'] - $array2['price'];
                        
        if(
$num && $rescash 0) {
                
mysql_select_db('player');
            
$i 0;    
        
$giveitem "INSERT INTO item SET owner_id = '" $array['id'] . "', window = 'MALL', pos = '" $_SESSION['pos'] . "', count = '1', vnum = '" $itemid "', socket0 = '0', socket1 = '0', socket2 = '0'";
            
$result mysql_query($giveitem);
            
                if(
$result) {
                
                
                if(
$_SESSION['pos'] == '42') {
                 
                 
$_SESSION['pos'] = '0'; }
                 else { 
$_SESSION['pos'] = $_SESSION['pos'] + 1; }
                 
                    
mysql_select_db('account');
                    
                        
$cashresult $array['coins'] - $array2['coins'];
                    
                    
$coins "UPDATE account set coins = '" $cashresult "' where login = '" $_SESSION['id'] . "'";
                        
$coinsresult mysql_query($coins);
                        
                    if(
$coinsresult) {
                    
$_SESSION['coins'] = $cashresult;
                    
                    echo 
"<center>Acabas de realizar una compra! " $array2['name'] . " Comprado! <br>
                    Se te redireccionara en 3 segundos.
                    <meta http-equiv=\"refresh\" content=\"3;url=../shop.php\">"
;
                    } else {
                    echo 
"No se ha podido comprar.";
                    }
                
                }
                else { echo 
"No se pudo comprar."; }
                
            } else { echo 
"no tiene monedas suficientes.."; }
            
        } else { echo 
"No se pudo comprar."; }
        
    } else { echo 
"Por favor, identifíquese."; }

    }

?>
  #2 (permalink)  
Antiguo 27/03/2010, 12:40
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: problema con resta en php

no puedes con un simple:

Código PHP:
Ver original
  1. if($cashresult<=0)
  2. {
  3. ...
  4. }

???
  #3 (permalink)  
Antiguo 27/03/2010, 12:54
 
Fecha de Ingreso: marzo-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
y en que parte del codigo pongo eso? para informarte si funciono o no! muchas gracias!

me podrias ayudar por favor sigue sin funcionarme!

sigue tirandome error es decir realiza la venta y me pone restante en negativo y listo

Última edición por GatorV; 29/03/2010 a las 09:06
  #4 (permalink)  
Antiguo 27/03/2010, 16:57
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 17 años
Puntos: 2
Respuesta: problema con resta en php

Código PHP:
<?php 
session_start 
(); 

    if(
$_SESSION['id'] == "") { 
        die(
'Logge dich bitte ein!'); 
    } 
    else { 
     
    include(
'../inc/config.php'); 
        
mysql_select_db('account'); 
         
        
$getuser "SELECT * from account where login = '" $_SESSION['id'] . "'"
            
$checkuser mysql_query($getuser); 
                
$num mysql_num_rows($checkuser); 
             
        if(
$num 0) { 
         
            
$array mysql_fetch_array($checkuser); 
     
            
$itemid $_GET['id']; 
            
$user $_SESSION['id']; 
            
$coins $_SESSION['coins']; 
                         
                     
                     
            
$check "SELECT * from itemshop where id = '" $itemid "'"
                
$query mysql_query($check); 
                    
$num mysql_num_rows($query); 
            if(
$num 0) { 
                
$array2 mysql_fetch_array($query); 
// Fijate si esto lo tenes bien, porque mas abajo donde le pones al cashresult la resta entre las monedas de los dos arreglos, usas $array2['coins'] y aca usas price.. por ahi price no es lo mismo que coins y la resta te da siempre positiva.. porque si eso da lo que deberia dar creo que todo lo demas esta adentro del if ese que pones luego
            
$rescash $array['coins'] - $array2['price']; 
                         
        if(
$num && $rescash 0) { 
                
mysql_select_db('player'); 
            
$i 0;     
        
$giveitem "INSERT INTO item SET owner_id = '" $array['id'] . "', window = 'MALL', pos = '" $_SESSION['pos'] . "', count = '1', vnum = '" $itemid "', socket0 = '0', socket1 = '0', socket2 = '0'"
            
$result mysql_query($giveitem); 
             
                if(
$result) { 
                 
                 
                if(
$_SESSION['pos'] == '42') { 
                  
                 
$_SESSION['pos'] = '0'; } 
                 else { 
$_SESSION['pos'] = $_SESSION['pos'] + 1; } 
                  
                    
mysql_select_db('account'); 
                     
                        
$cashresult $array['coins'] - $array2['coins']; 
                     
                    
$coins "UPDATE account set coins = '" $cashresult "' where login = '" $_SESSION['id'] . "'"
                        
$coinsresult mysql_query($coins); 
                         
                    if(
$coinsresult) { 
                    
$_SESSION['coins'] = $cashresult
                     
                    echo 
"<center>Acabas de realizar una compra! " $array2['name'] . " Comprado! <br> 
                    Se te redireccionara en 3 segundos. 
                    <meta http-equiv=\"refresh\" content=\"3;url=../shop.php\">"

                    } else { 
                    echo 
"No se ha podido comprar."
                    } 
                 
                } 
                else { echo 
"No se pudo comprar."; } 
                 
            } else { echo 
"no tiene monedas suficientes.."; } 
             
        } else { echo 
"No se pudo comprar."; } 
         
    } else { echo 
"Por favor, identifíquese."; } 

    } 

?>
Fijate que te deje un comentario a la mitad del codigo xD

Edito: Por favor cuida la identacion cuando pegas codigo aca porque sino se hace un lio tremendo seguir lo que tenes hecho xD

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:36.