Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Novato intentandolo (insertando un array en mysql)

Estas en el tema de Novato intentandolo (insertando un array en mysql) en el foro de PHP en Foros del Web. Hola a todos en primer lugar, llevo una semana pelenadome con código de php, la verdad es que por motivos laborales estoy aprendiendo a marchas ...
  #1 (permalink)  
Antiguo 21/03/2013, 06:01
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Novato intentandolo (insertando un array en mysql)

Hola a todos en primer lugar, llevo una semana pelenadome con código de php, la verdad es que por motivos laborales estoy aprendiendo a marchas forzadas....

Bien, estoy haciendo una aplicación muy simpre para androir con la ayuda del app inventor, es una aplicacion en la que leo un codigo de barras y compruebo si existe en la base de datos y si no existe relleno los datos y lo guardo, todo ello desde el terminal movil.Para ello tengo credad una tabla llamada cc3_placas que contiene siete columnas:
referencia,modelo,version,operario,estado,fecha,co mentario.

Desde la aplicacion de android (en teoria) leo el código de barras y compruebo si existe o no, si existe recupero los valores pertenecientes a ese codigo , es decir los valores de la tabla asociados con la columna referencia , para comprobarlo envio desde la aplicacion un 'Tag' y un 'value', el tag es el nombre que lleva la variable que es una cadena con los demas datos. es decir leo el codigo de barras--> H00005 , el tag seria H0005 y "value" serian los datos introducidos por el usuario en los campos de referencia , modelo, version...etc compruebo si el 'tag' existe o no. Si no existe puedo guardar los datos en las celdas correspondientes de la tabla, que son los datos introducidos por el usuario.
En la tabla tengo definido todos los campos como varchar, excepto el de la fecha que esta como date y el comentario como texto.

Aún estoy empezando a hacer pruebas pero no encuntro la forma, estoy probando con lo siguiente:


Código:
<?php

$tag = isset($_POST['tag']) ? $_POST['tag'] : null; 

$tag = isset($_POST['value']) ? $_POST['value'] : null; 


$host = 'localhost';
$user = 'Dani';
$pass = 'my_password';
$dbname = 'efi_cc3';

$link=mysql_connect($host,$user,$pass) or die("No se pudo establecer la conexión<br>".mysql_error());
mysql_select_db($dbname) or die("no se puede acceder a la base de datos:<br>".mysql_error());  

  

$query ="SELECT referencia FROM cc3_placas WHERE referencia='$tag'";
$row = mysql_query($query,$link) or die (mysql_error());
$ray = mysql_num_rows($row);

if ($ray > 0 ){
 
$outdata = "SELECT * FROM cc3_placas WHERE referencia = '$tag'";
$outputdata=array();
while ($row = mysql_fetch_assoc($result)){
$outputdata[]=$row;             
}
echo json_encode(array("VALUE",$tag,array_merge($outputdata)));                                



}else{
mysql_query("INSERT INTO cc3_placas (referencia,modelo,version,operario,estado,fecha,comentario) VALUES ('$value')");
Espero que a nadie le duela los ojos a ver el codigo...pero esque estoy aprendiendo a base de ensayo error y estoy ya un poco perdido

Si alguien me podria ayudar se lo agardeceria, hay alguna forma de poder visualizar el codigo para poder depurarlo de alguna forma, me refiero a poder ver todos los pasos y ver donde falla... La verdad es que no se por donde tirar, ya no se si tengo el error en el codigo php o en el del app inventor.

Saludos y gracias a todos

Última edición por Dani_v; 21/03/2013 a las 06:14 Razón: Nueva explición.
  #2 (permalink)  
Antiguo 21/03/2013, 06:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Novato intentandolo (insertando un array en mysql)

Resumiendo:

Si no esta inserto el registro con todos los datos
Si esta no hago nada.

Cita:
...el tag es el nombre que lleva la variable que es una cadena con los demas datos...
La cadena de que hablas ahí entiendo que es $_POST['value'].

No dices que estructura tiene...



Correcto?

Si es correcto

Código PHP:
Ver original
  1. $tag = isset($_POST['tag']) ? $_POST['tag'] : null;
  2. ///Ojo habías puesto $tag dos veces.
  3. $value = isset($_POST['value']) ? $_POST['value'] : null;
  4.  
  5. /*como no dices la estructura de value no te puedo decir que tienes que hacer pero si el resultado que deberías obtener:
  6. * 'valorReferencia','valorModelo','valorVersion','valorOperario','valorEstado','valorFecha','valorComentario'  
  7. *la fecha con el formato YYYY-mm-dd HH:MM:SS (o sin la hora si no tiene)*/
  8.  
  9. ///$value transformada
  10. $sqlValue="'valorReferencia','valorModelo','valorVersion','valorOperario','valorEstado','valorFecha','valorComentario'";
  11.  
  12. ///Esta parte es correcta
  13.  
  14. $host = 'localhost';
  15. $user = 'Dani';
  16. $pass = 'my_password';
  17. $dbname = 'efi_cc3';
  18.  
  19. $link=mysql_connect($host,$user,$pass) or die("No se pudo establecer la conexión<br>".mysql_error());
  20. mysql_select_db($dbname) or die("no se puede acceder a la base de datos:<br>".mysql_error());  
  21.  
  22. $query ="SELECT referencia FROM cc3_placas WHERE referencia='$tag'";
  23. $row = mysql_query($query,$link) or die (mysql_error());
  24. $ray = mysql_num_rows($row);
  25.  
  26. ///// Apartir de aqui cambios
  27.  
  28. if ($ray == 0 ){///Si $ray es cero es que no esta
  29. mysql_query("INSERT INTO cc3_placas (referencia,modelo,version,operario,estado,fecha,comentario) VALUES (".$sqlValue.")");
  30. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 21/03/2013 a las 06:34
  #3 (permalink)  
Antiguo 21/03/2013, 08:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Hola, en primer lugar garcias por tu respuesta. La estructura de la cadena de 'value' en teoria es la siguiente:


$value = referencia,version,modelo,operario,estado,fecha,co mentario.

Por ejemplo:

$value = T0005,placa3,52,Ramon,fabricacion,2013-03-21,esto es una prueba.

en teoria si todo va bien es lo que deberia de enviar la aplicacionde android.

Saludos y nuevamente gracias
  #4 (permalink)  
Antiguo 21/03/2013, 09:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Bueno continu dandole vueltas y creo que voy entendiendo un poco mas.
Con el codigo que me has puesto empeizo recogienod las varianles por POST, faltaria definir como poder tratar la variable value, tal vez con algún ciclo como for o while? y que vaya introduciendo en cada ciclo el valor de la variable value... bueno creo que tampoco por que si no ire introduciendo el valor en filas distintas... espero no decir muchas burradas pero intento entenderlo y no se como sacar cada valor de la cadena de la variable value. Luego me queda la parte inversa, si la referencia no existe debo de leer los valores que contiene las celdas asociadas a la celda 'referencia' y y empaquetarlo todo en una cadena.. Bueno primero sera mejor que me centro en lo de la variable value.
Gracias a todos por vuestra paciencia.
  #5 (permalink)  
Antiguo 21/03/2013, 09:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Novato intentandolo (insertando un array en mysql)

Tienes la función explode
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 21/03/2013, 10:40
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Y de la siguiente forma:



Código:
<?php

 $tag = isset($_POST['tag']) ? $_POST['tag'] : null;
    
    $value = isset($_POST['value']) ? $_POST['value'] : null;
    
    $val=explode(",",%row_val['value']);
                   $val[0];
                    $val[1];
                    $val[2];
                    $val[3];
                    $val[4];
                    $val[5];
                   $val[6];
                     
     

     
    $host = 'localhost';
    $user = 'Dani';
    $pass = '26021980';
    $dbname = 'efi_cc3';
     
    $link=mysql_connect($host,$user,$pass) or die("No se pudo establecer la conexión<br>".mysql_error());
    mysql_select_db($dbname) or die("no se puede acceder a la base de datos:<br>".mysql_error());  
     
    $query ="SELECT referencia FROM cc3_placas WHERE referencia='$tag'";
    $row = mysql_query($query,$link) or die (mysql_error());
    $ray = mysql_num_rows($row);
     
         
    if ($ray == 0 ){  //Si $ray es cero es que no esta

    //mysql_query("INSERT INTO cc3_placas (referencia,modelo,version,operario,estado,fecha,comentario) 

VALUES (".$sqlValue.")");

mysql_query("INSERT INTO cc3_placas (referencia,modelo,version,operario,estado,fecha,comentario) VALUES 

('$Val[0],$Val[1],$Val[2],$Val[3],$Val[4],$Val[5],$Val[6]");
    }
?>
Tengo que probarlo , es que ya no se si me falla la aplicacion de android o es el codigo php....
  #7 (permalink)  
Antiguo 21/03/2013, 12:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Novato intentandolo (insertando un array en mysql)

Código PHP:
Ver original
  1. <?php
  2.  
  3.  $tag = isset($_POST['tag']) ? $_POST['tag'] : null;
  4.    
  5.     $value = isset($_POST['value']) ? $_POST['value'] : null;
  6.    
  7.     $val=explode(",",%row_val['value']);
  8.  
  9. $host = 'localhost';
  10.     $user = 'Dani';
  11.     $pass = '26021980';
  12.     $dbname = 'efi_cc3';
  13.      
  14.     $link=mysql_connect($host,$user,$pass) or die("No se pudo establecer la conexión<br>".mysql_error());
  15.     mysql_select_db($dbname) or die("no se puede acceder a la base de datos:<br>".mysql_error());  
  16.  
  17.  
  18. $query ="SELECT referencia FROM cc3_placas WHERE referencia='$tag'";
  19.     $row = mysql_query($query,$link) or die (mysql_error());
  20.     $ray = mysql_num_rows($row);
  21.      
  22.          
  23.     if ($ray == 0 ){  //Si $ray es cero es que no esta
  24.  
  25.  
  26. mysql_query("INSERT INTO cc3_placas ".
  27. "(referencia,modelo,version,operario,estado,fecha,comentario) ".
  28. "VALUES (".$Val[0].",".$Val[1].",".$Val[2].",".$Val[3].",".$Val[4].",".$Val[5].",".$Val[6].")");
  29.  
  30. }
  31. ?>

Estas usando mysql y deberias usar mysqli
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 22/03/2013, 05:37
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Hola, gracias de nuevo ,voy a revisar a ver como queda el tema.
  #9 (permalink)  
Antiguo 22/03/2013, 14:41
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Bueno he vuelto a la carga, he estado probando con el nuevo código y me marcaba un error de sintaxis en esta linea: $val=explode(",",%row_val['value']);
la que he corregido cambiando el % por $ , pero ahora me indica que la variable no esta definida... Habria que indicar antes de alguna forma?

Gracias
  #10 (permalink)  
Antiguo 23/03/2013, 01:21
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Hola nuevamente estoy por aqui, creo que ya he solucionado el problema que me daba de la variable no estaba declarada añadiendo un isset.
Pero ahora me arroja el los siguientes errores:

[23-Mar-2013 07:10:13 UTC] PHP Warning: mysql_connect(): MySQL server has gone away in C:\xampp\htdocs\test10.php on line 14

[23-Mar-2013 07:10:13 UTC] PHP Warning: mysql_connect(): Error while reading greeting packet. PID=3772 in C:\xampp\htdocs\test10.php on line 14

[23-Mar-2013 07:10:13 UTC] PHP Warning: mysql_connect(): MySQL server has gone away in C:\xampp\htdocs\test10.php on line 14

[23-Mar-2013 07:10:13 UTC] PHP Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\test10.php on line 14

He comprobado y los datos para conexion son correctos, son los que he utilizado siempre,no se porque no conecta....


Código:
 <?php
     
     $tag = isset($_POST['tag']) ? $_POST['tag'] : null;
       
        $value = isset($_POST['value']) ? $_POST['value'] : null;
       
        $val=explode(",",isset($row_val['value']));
     
    $host = 'localhost:8080';
        $user = 'root';
        $pass = 'my_password';
        $dbname = 'efi_cc3';
         
        $link=mysql_connect($host,$user,$pass) or die("No se pudo establecer la conexión<br>".mysql_error());
        mysql_select_db($dbname) or die("no se puede acceder a la base de datos:<br>".mysql_error());  
     
     
    $query ="SELECT referencia FROM cc3_placas WHERE referencia='$tag'";
        $row = mysql_query($query,$link) or die (mysql_error());
        $ray = mysql_num_rows($row);
         
             
        if ($ray == 0 ){  //Si $ray es cero es que no esta
     
     
    mysql_query("INSERT INTO cc3_placas ".
    "(referencia,modelo,version,operario,estado,fecha,comentario) ".
    "VALUES (".$Val[0].",".$Val[1].",".$Val[2].",".$Val[3].",".$Val[4].",".$Val[5].",".$Val[6].")");
     
    }
    ?>

Gracias por vuestra ayuda
  #11 (permalink)  
Antiguo 23/03/2013, 03:17
 
Fecha de Ingreso: marzo-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Novato intentandolo (insertando un array en mysql)

Solucionado, no se porque tenia problemas con la contraseña y en localhost tenia puesto localhost:8080.

Etiquetas: mysql, select, sql, tabla
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 22:08.