Comunidad de diseño web y desarrollo en internet online

Editando un valor de una Base de Dados

Citar            
MensajeEscrito el 31 Ene 2009 02:00 pm
Hice una Base de Dados en MySql que guarda el valor del dolar y que posee apenas dos campos, el id y el valor propiamente dicho.

Estoy capturando ese valor de la página del Banco Central pero quiero ir guardándolo en mi base de datos pero no acrecentándolo a ella sino que editando el ya existente.

Se que INSERT va adicionar valores a la base de datos pero cuál es el comando para editar un valor del mismo?

Cómo entonces deberia modificar esta línea?

Código PHP :

function setDolar($dolar)
   {
      return mysql_query("INSERT INTO cotizacion ( valor ) VALUES ( '".dolar."' )" );
   }


Desde ya muchas gracias. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ene 2009 03:41 pm
tienes que utilizar Update.

Código :

"UPDATE cotizacion SET valor='".$dolar."' WHERE id=1"


lo del ID fue suponiendo que tengas esa columna como primary Key, y que deseas actualizar el primer registro... de lo contrario, debes poner la condición que necesites para identificar la fila que necesitas actualizar.

Si tienes más dudas puedes visitar el manual de referencias de MySQL y leer la documentación referente a UPDATE

Por ShotoKan

45 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 31 Ene 2009 07:48 pm
No estoy consiguiendo alterar el valor existente pero me parece que el problema no está en esa línea.

Al valor del dolar lo estoy consiguiendo así:

Código PHP :

$dolar = str_replace(",", ".", $dolar);
return $dolar; 


Entonces el sale de esta forma "3.45"

Yo definí la tabla con dos columnas una para el id y otra para el valor, a esta última la definí primero como DECIMAL y ahora intenté con VARCHAR pero en ninguno de los dos casos conseguí editar el valor aun cuando ella sea una primary key.

Alguna idea de que es lo que está haciendo mal?

Desde ya muchas gracias.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ene 2009 08:44 pm
mmm, pues ahí necesitaria que mostraras más codigo, para ver donde esta el problema.

Por ShotoKan

45 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 31 Ene 2009 08:55 pm
Este es el php que retorna el valor del dolar

Código PHP :

<?php

class cotaAtualizaDolar
{

   public function __construct()
   {
      mysql_connect("localhost","arachnos_claudio","password");
      mysql_select_db("arachnos_dolar");
   }

   function getDolar()
   {
      if(!$fp=fopen("http://www4.bcb.gov.br/pec/taxas/batch/taxas.asp?id=txdolar&id=txdolar" ,"r" )) 
      {
          echo "Erro ao abrir a página de cotação";
          exit;
      }
  
      $conteudo = '';
      while(!feof($fp)) 
      { 
            $conteudo .= fgets($fp,1024);
      }
      fclose($fp);

      preg_match("/([0-9],[0-9]{2,}).*([0-9],[0-9]{2,})/", $conteudo, $saida);
      $taxaCompra = $saida[1];
      $taxaVenda = $saida[2];
      
      $taxaVenda = str_replace(".", "", $taxaVenda);
      $taxaVenda = str_replace(",", ".", $taxaVenda);
      
      return $taxaVenda; 
      
      setDolar($taxaVenda);
   }
   
   function setDolar($taxaVenda)
   {
      return mysql_query("UPDATE cotizacao SET valor='".$taxaVenda."' WHERE id=1");
   }
}
?>


Lo que falta ver ahora es como debo definir valor en el MySQL si debe quedar como DECIMAL o VARCHAR.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Feb 2009 02:34 pm
El valor apropiado para la columna es DECIMAL. En ese codigo veo que llamas un metodo desde otro sin utílizar $this->setDolar();

Además el setDolar lo haces despues de dar return $texaVenda; de manera que no es ejecutado.

Por ShotoKan

45 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 01 Feb 2009 03:21 pm
Hice las modificaciones que me dijiste, pero alguna cosa se me escapó porque aun no consigo que funcione

Código PHP :

<?php

class cotaAtualizaDolar
{

   public function __construct()
   {
      mysql_connect("localhost","arachnos_claudio","password");
      mysql_select_db("arachnos_dolar");
   }

   function getDolar()
   {
      if(!$fp=fopen("http://www4.bcb.gov.br/pec/taxas/batch/taxas.asp?id=txdolar&id=txdolar" ,"r" )) 
      {
          echo "Erro ao abrir a página de cotação";
          exit;
      }
  
      $conteudo = '';
      while(!feof($fp)) 
      { 
            $conteudo .= fgets($fp,1024);
      }
      fclose($fp);

      preg_match("/([0-9],[0-9]{2,}).*([0-9],[0-9]{2,})/", $conteudo, $saida);
      $taxaCompra = $saida[1];
      $taxaVenda = $saida[2];
      
      $taxaVenda = str_replace(".", "", $taxaVenda);
      $taxaVenda = str_replace(",", ".", $taxaVenda);
      
      $this->setDolar($taxaVenda);
      
      return $taxaVenda; 
   }
   
   function setDolar($taxaVenda)
   {
      return mysql_query("UPDATE cotizacao SET valor='".$taxaVenda."' WHERE id=1");
   }
}
?>


Coloqué en la BD DECIMAL.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Feb 2009 10:41 am
Encontré el problema el nombre de mi id es chave entonces esa última línea debe quedar así:

return mysql_query("UPDATE cotizacao SET valor='".$taxaVenda."' WHERE chave=1");

Muchas gracias por todo. Claudio

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.