Foros del Web » Programando para Internet » PHP »

Cambiar el Comando IN de SQL, al seleccionar.

Estas en el tema de Cambiar el Comando IN de SQL, al seleccionar. en el foro de PHP en Foros del Web. Buenos dias, Lo que estoy queriendo hacer, y no puedo, es que mediante un LINK cambie el Comando IN que en el codigo de abajo ...
  #1 (permalink)  
Antiguo 11/01/2013, 08:55
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Cambiar el Comando IN de SQL, al seleccionar.

Buenos dias,

Lo que estoy queriendo hacer, y no puedo, es que mediante un LINK cambie el Comando IN que en el codigo de abajo figura DF-2.

Por ejemplo insertar un menu con dos opciones DF-1 y DF-2, y al hacer el click en DF-1, vincule a una pagina donde ahí defina el comando IN('DF-1')

Código PHP:
function getData() {

    
$data = array();
    
$con connectDb();
    
$query "select Mes, Valor, Mes2, Valor2, Mes3, Valor3 from bd_xxxxx WHERE Codigo IN ('DF-2')";
    
$res mysql_query($query);
    if (
$res) {
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    } else {
        die(
'No conecta a la base de datos...');
    }
    
    return 
$data;

Gracias por la lectura. Saludos.
  #2 (permalink)  
Antiguo 11/01/2013, 09:12
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Deja y entiendo por ejemplo tienes una etiqueta <a href='DF_1.php>DF-1</a>: entonces quieres que cuando sea ese la consulta tenga IN('DF-1') pero si la etiqueta tiene <a href='DF_2.php>DF-2</a> la consulta tenga IN('DF-2'), eso es lo que quieres decir ?
  #3 (permalink)  
Antiguo 11/01/2013, 09:16
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Claro, eso quise decir. Gracias por entenderlo.
  #4 (permalink)  
Antiguo 11/01/2013, 09:30
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Puedes hacer esto:

Código PHP:
Ver original
  1. <?php
  2.  $df1 = "DF-1";
  3.  $df2 = "DF-2";
  4. ?>
  5.  
  6. <?php echo "<a href='DF.php?df=$df1'>Editar</a><br />"; ?>
  7. <?php echo "<a href='DF.php?df=$df2'>Editar</a><br />"; ?>
y en la pagina que resivira el valor estaria:

Código PHP:
Ver original
  1. function getData() {
  2.  
  3.     $data = array();
  4.     $con = connectDb();
  5.  
  6.     if(isset($_GET['df'])){
  7.         $DF = $_GET['df'];
  8.     }
  9.  
  10.     $query = "select Mes, Valor, Mes2, Valor2, Mes3, Valor3 from bd_xxxxx WHERE Codigo IN ('".$DF."')";
  11.      $res = mysql_query($query);
  12.     if ($res) {
  13.         while ($row = mysql_fetch_array($res)) {
  14.             $data[] = $row;
  15.         }
  16.     } else {
  17.         die('No conecta a la base de datos...');
  18.     }
  19.      
  20.     return $data;
  21. }

Espero que me me entiendas lo que estoy haciendo, lo que hago es mandarle las variables a la pagina ya sea DF-1 o DF-2 y la pagina los resive con el GET.
  #5 (permalink)  
Antiguo 11/01/2013, 09:37
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Gracias, entendi muy claro. Justamente era eso lo que necesitaba. Saludos.
  #6 (permalink)  
Antiguo 11/01/2013, 09:41
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Que bien que te sirva.
  #7 (permalink)  
Antiguo 11/01/2013, 09:56
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Ahi probé el código que me pasaste

Código PHP:
function getData() {

    
$data = array();
    
$con connectDb();
    
$query "SELECT * FROM bd_xxxxxx WHERE Codigo IN (''".$DF."'')";
    
$res mysql_query($query);
    if (
$res) {
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    } else {
        die(
'No conecta a la base de datos...');
    }
    
    return 
$data;

Y en la pagina donde van los links puse
Código PHP:

<?php
 $df1 
"DF-1";
 
$df2 "DF-2";
?>

<?php echo "<a href='grafico.php?df=$df1'>Editar</a><br />"?>
<?php 
echo "<a href='grafico.php?df=$df2'>Editar</a><br />"?>

Pero cuando hago click, me vincula a la pagina y me aparece la noticia y no me figuran los datos de la tabla.


Notice: Undefined variable: DF in C:\Archivos de programa\EasyPHP 2.0b1\www\telefonica\generateChart.php on line 27


La line 27 es donde está el código

Código PHP:
   $query "SELECT * FROM bd_telefonica WHERE Codigo IN ('".$DF."')"
Que es lo que modifique. Me podigas guiar cual es el error?
  #8 (permalink)  
Antiguo 11/01/2013, 10:23
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

donde esta el codigo que es el que resive la variable que no lo veo en tu codigo que debe estar en la pagina grafico.php:

Código PHP:
Ver original
  1. if(isset($_GET['df'])){
  2.  $DF = $_GET['df'];  
  3. }

sin esta parte no resivira la variable
  #9 (permalink)  
Antiguo 14/01/2013, 14:22
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Cambiar el Comando IN de SQL, al seleccionar

Buenos dias,

Lo que estoy queriendo hacer, y no puedo, es que mediante un LINK cambie el Comando IN que en el codigo de abajo figura DF-2.

Por ejemplo insertar un menu con dos opciones DF-1 y DF-2, y al hacer el click en DF-1, vincule a una pagina donde ahí defina el comando IN('DF-1')

Esta es una parte del código que uso para generar grafico, por Visifire.

Código PHP:
function getData() {

    
$data = array();
    
$con connectDb();
    
$query "select Mes, Valor, Mes2, Valor2, Mes3, Valor3 from bd_xxxxx WHERE Codigo IN ('DF-2')";
    
$res mysql_query($query);
    if (
$res) {
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    } else {
        die(
'No conecta a la base de datos...');
    }
    
    return 
$data;

Y está es donde se ve el grafico.

Código PHP:
<?php
    
include('generateChart.php');
?>
<html>
    <head>
        <title>Grafico</title>
        <script type="text/javascript" src="Silverlight Binaries/Visifire.js"></script>
    </head>
    <body>
    
 <div id="VisifireChart1"></div>
        <?php
            
echo generateScript('VisifireChart1')
        
?>
    </body>
</html>
El link, digamos iria en otra pagina, que la podriamos llamer menu.php.

Espero que me entiendan, saludos.

PD: Son muchas DFs
  #10 (permalink)  
Antiguo 14/01/2013, 14:43
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Cambiar el Comando IN de SQL, al seleccionar

Ok, una solución fácil es.
Supongamos que tu página dónde llamas a la función getData se llama data.php
En tu página menu.php pones el link de esta manera:
<a href="data.php?d=1">DF-1</a>
<a href="data.php?d=2">DF-2</a>

En tu página data.php pondrías algo así:
Código PHP:
<?php
function getData($d) { 

    
$data = array(); 
    
$con connectDb(); 
    
$query "select Mes, Valor, Mes2, Valor2, Mes3, Valor3 from bd_xxxxx WHERE Codigo IN ('DF-".$d."')"
    
$res mysql_query($query); 
    if (
$res) { 
        while (
$row mysql_fetch_array($res)) { 
            
$data[] = $row
        } 
    } else { 
        die(
'No conecta a la base de datos...'); 
    } 
     
    return 
$data
}  

  if(isset(
$_GET['d])){
     $df = intval($_GET['
d'];
     switch($df){
        case 1:
        case 2:
            getData($df);
        break;
       default:
            echo '
Valor incorrecto;
    }
 }else{
      
header("Location: menu.php");
}
Esta es una solución rápida que te permite coger más valores para el DF.
Hay unas comprobaciones escasas y el switch te lo puedes ahorrar si quieres y comprobar que la variable GET no esté vacía en su lugar.

¿Algo así querías?
  #11 (permalink)  
Antiguo 15/01/2013, 06:33
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Gracias por las respuestas.

Zalito12, modifique e inserte los códigos que me pasaste, y quedó así.

Código PHP:
<?php

function connectDb()
{
    
/* MySQL Configuracion de BD */
    
$host       'localhost';
    
$database   'arqonexus';
    
$user       'root';
    
$password   '';

    
$con null;
    
$con = @mysql_connect($host$user$password);
    if (!
$con) {
        die(
'Could not connect: ' mysql_error());
    }

    
mysql_select_db($database$con);
    return 
$con;
}



function 
getData($df) {

    
$data = array();
    
$con connectDb();
    
$query "SELECT * FROM bd_telefonica WHERE Codigo IN ('DF-".$df."')";
    
$res mysql_query($query);
    
    if (
$res) {
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    } else {
        die(
'No conecta a la base de datos...');
    }
    
    return 
$data;

 }
 
   if(isset(
$_GET['d'])){
     
$df intval($_GET['d']);
     switch(
$df){
        case 
1:
        case 
2:
        
getData($df);
        break;
       default:
            echo 
'Valor incorrecto';
    }
 }else{
      
header("Location: ver_grafico.php");
}
 


function 
generateXml($title) {
    
$title = isset($title) ? $title 'Titulo'
    
$records getData($df);
Pero cuando quiero ejecutar, al vincular a la página, me aparece como error y no me genera el gráfico.

El error que me aparece es

Cita:
Notice: Undefined variable: df in C:\Archivos de programa\EasyPHP 2.0b1\www\telefonica\generateChart.php on line 60
Que en la Line 60 está el siguiente código

Cita:
$records = getData($df)
Imagen
http://www.subirimagenes.com/otros-grafico-8238832.html

Última edición por facundojr07; 15/01/2013 a las 06:40 Razón: Subida imagen
  #12 (permalink)  
Antiguo 15/01/2013, 11:19
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Verás, hay tienes un problema con el ámbito de las variables.
La línea 60 está dentro de una función en la cúal no hay ninguna variabl $df.
Hay que tener mucho cuidado con eso.
Como no sé muy bien que valor quieres que tome ahí te daré las dos soluciones posbiles.
1. Declararla como Global y cogerá el valor que tenga en el archivo global
2. Pasarla como parámetro.

Como no estoy muy familiarizado con tu código no te puedo recomendar una opción aunque yo sulo evitar declarar hacer llamadas globales a no ser que sean cosillas tontas como alguna variable de traducción que necesite.

Te pongo tu código con los dos ejemplos, te lo ordenaré un poco poniendo las funciones antes del resto, ya que al leerlo no sabía muy bien lo que estaba dentro y fuera.

1. Variable global
Código PHP:
<?php
function connectDb(){
    
/* MySQL Configuracion de BD */
    
$host       'localhost';
    
$database   'arqonexus';
    
$user       'root';
    
$password   '';

    
$con null;
    
$con = @mysql_connect($host$user$password);
    if (!
$con) {
        die(
'Could not connect: ' mysql_error());
    }

    
mysql_select_db($database$con);
    return 
$con;
}

function 
getData($df){
    
$data = array();
    
$con connectDb();
    
$query "SELECT * FROM bd_telefonica WHERE Codigo IN ('DF-".$df."')";
    
$res mysql_query($query);
    
    if(
$res){
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    }else{
        die(
'No conecta a la base de datos...');
    }  
    return 
$data;
}

function 
generateXml($title) {
    Global 
$df;
    
$title = isset($title) ? $title 'Titulo'
    
$records getData($df);
     
//...
    //...   
}
if(isset(
$_GET['d'])){
   
$df intval($_GET['d']);
   switch(
$df){
      case 
1:
      case 
2:
      
getData($df);
      break;
     default:
          echo 
'Valor incorrecto';
    }
}else{
    
header("Location: ver_grafico.php");
}
2. Como parámetro, dónde llames a la función deberás darle un valor.
Código PHP:
<?php
function connectDb(){
    
/* MySQL Configuracion de BD */
    
$host       'localhost';
    
$database   'arqonexus';
    
$user       'root';
    
$password   '';

    
$con null;
    
$con = @mysql_connect($host$user$password);
    if (!
$con) {
        die(
'Could not connect: ' mysql_error());
    }

    
mysql_select_db($database$con);
    return 
$con;
}

function 
getData($d){
    
$data = array();
    
$con connectDb();
    
$query "SELECT * FROM bd_telefonica WHERE Codigo IN ('DF-".$d."')";
    
$res mysql_query($query);
    
    if(
$res){
        while (
$row mysql_fetch_array($res)) {
            
$data[] = $row;
        }
    }else{
        die(
'No conecta a la base de datos...');
    }  
    return 
$data;
}

function 
generateXml($title,$d) {
    
$title = isset($title) ? $title 'Titulo'
    
$records getData($d);
     
//...
    //...   
}
if(isset(
$_GET['d'])){
   
$df intval($_GET['d']);
   switch(
$df){
      case 
1:
      case 
2:
      
getData($df);
      break;
     default:
          echo 
'Valor incorrecto';
    }
}else{
    
header("Location: ver_grafico.php");
}
Elige la que más te convenga pero ojo con eso del ámbito de las variables :)
  #13 (permalink)  
Antiguo 15/01/2013, 11:56
 
Fecha de Ingreso: enero-2013
Mensajes: 64
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Cambiar el Comando IN de SQL, al seleccionar.

Ahí entendí, vi bien el código, y funciona. La verdad muchas gracias. Yo no tengo conocimiento amplio sobre php. Estoy en el area de las telecomunicaciones. Me despido agradeciendolo nuevamente. Saludos, desde Argentina.

Etiquetas: comando, html, mysql, sql
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 05:19.