Foros del Web » Programando para Internet » PHP »

sentencia mysql con php

Estas en el tema de sentencia mysql con php en el foro de PHP en Foros del Web. Buenas Tardes, tengo una pequeña inquietud, puede ser una bobada pero no se me acurre como, tengo un formulario que primero lleno una parte, luego ...
  #1 (permalink)  
Antiguo 15/06/2012, 14:23
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
sentencia mysql con php

Buenas Tardes, tengo una pequeña inquietud, puede ser una bobada pero no se me acurre como, tengo un formulario que primero lleno una parte, luego el numero de analisis me muestre lo que tengo, y me deje insertar la otra parte , todo funciona, el problema que tengo es que no se como poder actualizar la segunda parte.


esta segunda parte son cuatro campos declarados como arrary, lo que necesito es actualizar esos cuatro campos, hago un update normal pero no se como poner el valor de esos array en la sentencia

Muestra la segunda parte que es la que necesito actualizar

Código PHP:
Ver original
  1. <?php
  2.  
  3. $sqls="select DISTINCT * FROM `mediosexternos` where `No.Analisis` = '$analis'";
  4.  
  5. $results = mysql_query($sqls,$Conexion) or die (mysql_error());
  6.  
  7. ?>
  8.  
  9. <center><table width="60%" border="1" id="tabla">
  10.  
  11.   <tr>
  12.  
  13.     <td bgcolor="#999999"><b><center><strong>MEDIOS USADOS</strong></center></b></td>
  14.  
  15.     <td bgcolor="#999999"><center><strong>No.LOTE</strong></center></td>
  16.    
  17.     <td bgcolor="#999999"><center><strong>ESPECIFICACI&Oacute;N</strong></center></td>
  18.  
  19.     <td bgcolor="#999999"><b><center>RESULTADO</center></b></td>
  20.  
  21.   </tr>
  22.  
  23. <?php
  24.  
  25. while ($filass=mysql_fetch_array($results)){
  26.  
  27. ?>
  28.  
  29. <tr>
  30.  
  31.     <td><input name="medioss[]" type="text"  value="<?php echo $filass['Medios_Usados']; ?>" size="40"></td>
  32.  
  33.     <td><input name="mdios[]" type="text"  value="<?php echo $filass['No.Lotess'];?>" size="25">    </td>
  34.  
  35.     <td><input name="especificacion" type="text" id="especificacion" value="AUSENCIA" size="25">    </td>
  36.  
  37.     <td><input name="medios2[]"  type="text" value="<?php echo $filass['resuktado'];?>" size="24"></td>
  38.  
  39. </tr>
  40.  
  41. <?php
  42.  
  43. }
  44.  
  45. ?>

gracias por toda la ayuda
  #2 (permalink)  
Antiguo 15/06/2012, 14:42
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: sentencia mysql con php

Hola JeMaGa.

Para tomar los valores de cada campo con PHP al enviar el formulario sería algo así:
Código PHP:
<?php
$_POST
['medioss'][0]; // El valor del campo 'medioss' del primer registro.
$_POST['medioss'][1]; // El segundo.
$_POST['medioss'][2]; //  Y así...

$_POST['mdios'][0];
$_POST['mdios'][1];
$_POST['mdios'][2];

$_POST['medios2'][0];
$_POST['medios2'][1];
$_POST['medios2'][2];
?>
Tené en cuenta que esos son arrays multidimensionales ($_POST es un array con un índice para cada campo del formulario, y el segundo índice te devolvería el campo del registro específico).

Ahora metiéndonos en tu caso particular... No sé qué campos tenés en tu base de datos, ni tampoco probé hacerlo y no sé si funcionaría, pero creo que también podrías hacer algo así:
Código PHP:
 
<?php
while ($filass=mysql_fetch_array($results)){
?>
<tr>
    <td><input name="medioss[<?php echo $filass['id']; ?>]" type="text"  value="<?php echo $filass['Medios_Usados']; ?>" size="40"></td>
    <td><input name="mdios[<?php echo $filass['id']; ?>]" type="text"  value="<?php echo $filass['No.Lotess'];?>" size="25">    </td>
    <td><input name="especificacion" type="text" id="especificacion" value="AUSENCIA" size="25">    </td>
    <td><input name="medios2[<?php echo $filass['id']; ?>]"  type="text" value="<?php echo $filass['resuktado'];?>" size="24"></td>
</tr>
<?php
}
?>
Entonces el índice que identifica el campo de cada registro es el mismo ID de ese registro en la base de datos y podés usarlo después en un foreach para hacer el UPDATE. Insisto en que no sé si eso sería correcto y funcionaría, pero por ahí te es útil.

Un saludo.

Última edición por RabidFish; 15/06/2012 a las 14:47
  #3 (permalink)  
Antiguo 16/06/2012, 05:54
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: sentencia mysql con php

hOla no entendi muy bien sera que me puedes explicar es que lo intente hacer pero creo que no es asi

Código PHP:
Ver original
  1. $medio = $_POST['medioss'][$i];  
  2. foreach ($medio as $clave => $valor)
  3.  
  4. $lotes = $_POST['mdios'][$i];
  5. $especificacion = $_POST['medios2'][$i];
  6.  
  7. $update="update `mediosexternos` set `Medios_Usados`='$valor' and `No.Lotess`='$lotes' and `Especificacion`='AUSENCIA' and `resuktado`='$especificacion' where `No.Analisis`='{$analisis}'";
  8. $executeupdate=mysql_query($update,$Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error());
  #4 (permalink)  
Antiguo 16/06/2012, 11:45
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: sentencia mysql con php

Cita:
Iniciado por JeMaGa Ver Mensaje
hOla no entendi muy bien sera que me puedes explicar es que lo intente hacer pero creo que no es asi

Código PHP:
Ver original
  1. $medio = $_POST['medioss'][$i];  
  2. foreach ($medio as $clave => $valor)
  3.  
  4. $lotes = $_POST['mdios'][$i];
  5. $especificacion = $_POST['medios2'][$i];
  6.  
  7. $update="update `mediosexternos` set `Medios_Usados`='$valor' and `No.Lotess`='$lotes' and `Especificacion`='AUSENCIA' and `resuktado`='$especificacion' where `No.Analisis`='{$analisis}'";
  8. $executeupdate=mysql_query($update,$Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error());
Fijate en tu código el foreach no ecierra todo lo que debería, tal vez ese sea tu problema.
  #5 (permalink)  
Antiguo 16/06/2012, 16:13
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: sentencia mysql con php

Hola JeMaGa, ¿cómo estas?

Sólo habría que hacer un par de modificaciones a tu script para que termine de funcionar, si no te funciona sólo me avisas.

Código PHP:
<?php
foreach($_POST['medioss'] as $id => $valor) { // Recorro todos los campos con name="medioss" para obtener el ID del registro (que se almacena en la variable $id)
    // Almaceno en variables los valores de los tres campos con el ID del campo actual en que está el foreach
    
$medios $_POST['medioss'][$id];
    
$lotes $_POST['mdios'][$id];
    
$resultado $_POST['medios2'][$id];

    
$update "UPDATE mediosexternos SET Medios_Usados = '$medios', No.Lotess = '$lotes', Especificacion = 'AUSENCIA', resultado = '$especificacion' WHERE No.Analisis = '$id'"// Armo la consulta con los valores de los campos
    
    
$executeupdate mysql_query($update$Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error()); // Ejecuto la consulta a la base de datos
}
?>
No te olvides de las llaves que encierran las instrucciones del foreach como bien señaló walterdevel (en el ejemplo de arriba las puse). Por las dudas, en vez de ejecutar ese UPDATE podés hacer un echo de la variable $update para asegurarte de que genera las consultas correctas.
Un saludo y ojalá te sirva.

Última edición por RabidFish; 16/06/2012 a las 16:29
  #6 (permalink)  
Antiguo 19/06/2012, 07:52
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: sentencia mysql con php

tOMA LOS VALORES PERO, PROQ UE NO ESTOY MOSTRANDO CON UN <PRE> PERO NO ACTUALIZA SE QUEDA HAY, Y SI DIGAMOS QUE CAMBIO EL WHERE No.Analisis = '$id' POR WHERE `No.Analisis`='{$analisis}', me actualiza pero me actualiza todos los campos con el ultimo dato todos Gracias
  #7 (permalink)  
Antiguo 19/06/2012, 11:05
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: sentencia mysql con php

Hola JeMaGa.

Deberías usar la variable $id como te puse en el ejemplo porque esa variable va tomando el valor de cada uno de los registros para ir actualizándolos individualmente. El problema debe ser que yo en el primer ejemplo te dije que uses $filass['id'] cuando en realidad en tu tabla el ID de los registros es 'No.Analisis'.

Prueba esto en la parte que muestras los registros:
Código PHP:
<?php
while ($filass=mysql_fetch_array($results)){
?>
<tr>
    <td><input name="medioss[<?php echo $filass['No.Analisis']; ?>]" type="text"  value="<?php echo $filass['Medios_Usados']; ?>" size="40"></td>
    <td><input name="mdios[<?php echo $filass['No.Analisis']; ?>]" type="text"  value="<?php echo $filass['No.Lotess'];?>" size="25">    </td>
    <td><input name="especificacion" type="text" id="especificacion" value="AUSENCIA" size="25">    </td>
    <td><input name="medios2[<?php echo $filass['No.Analisis']; ?>]"  type="text" value="<?php echo $filass['resultado'];?>" size="24"></td>
</tr>
<?php
}
?>
Fíjaque que cambié $filass['id'] (como estaba en el primer ejemplo) por $filass['No.Analisis'].

Y en la parte para actualizar con el foreach me confundí y puse en la consulta "resultado" en vez de "resuktado" como tienes en tu tabla según deduzco, quedaría entonces así:
Código PHP:
<?php
foreach($_POST['medioss'] as $id => $valor) { // Recorro todos los campos con name="medioss" para obtener el ID del registro (que se almacena en la variable $id)
    // Almaceno en variables los valores de los tres campos con el ID del campo actual en que está el foreach
    
$medios $_POST['medioss'][$id];
    
$lotes $_POST['mdios'][$id];
    
$resultado $_POST['medios2'][$id];

    
$update "UPDATE mediosexternos SET Medios_Usados = '$medios', No.Lotess = '$lotes', Especificacion = 'AUSENCIA', resuktado = '$especificacion' WHERE No.Analisis = '$id'"// Armo la consulta con los valores de los campos
    
    
$executeupdate mysql_query($update$Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error()); // Ejecuto la consulta a la base de datos
}
?>
Cualquier cosa me avisas.

Un saludo.
  #8 (permalink)  
Antiguo 19/06/2012, 11:14
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: sentencia mysql con php

no se si afecte en algo que todos los registros tienen el mimo No.Analisis, porque para un numero de analisis hay 4 medios ejemplo

No.Analisis MB12-0547
Medios
Angar casoy
Angar Peptona
Caldo Casoy
Caldo tioglicolato

los cuatro medios pertenecen al mismo numero de analisis, creo que no afecta si se pone esto $filass['No.Analisis'] o esto otro $filass['id'] por que todos tienen el mismo, encuanto a la correcion de sultado en la base de datos esta resuktado error :) no se como hacer en esa parte

Gracias por tu ayuda ;)
  #9 (permalink)  
Antiguo 19/06/2012, 11:15
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: sentencia mysql con php

De igual forma voy aprobar gracias!!
  #10 (permalink)  
Antiguo 19/06/2012, 15:58
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: sentencia mysql con php

Ahora que veo es verdad que el número de análisis es el mismo para todos los registros, sería bueno que me muestres la estructura de tu tabla con algunos registros cargados para comprender mejor el problema. Si quieres envíame un mesaje privado con tu dirección de MSN o e-mail para ayudarte, o sino por aquí.

Un saludo.
  #11 (permalink)  
Antiguo 19/06/2012, 21:43
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: sentencia mysql con php

Cita:
Iniciado por RabidFish Ver Mensaje
Hola JeMaGa.

Deberías usar la variable $id como te puse en el ejemplo porque esa variable va tomando el valor de cada uno de los registros para ir actualizándolos individualmente. El problema debe ser que yo en el primer ejemplo te dije que uses $filass['id'] cuando en realidad en tu tabla el ID de los registros es 'No.Analisis'.

Prueba esto en la parte que muestras los registros:
Código PHP:
<?php
while ($filass=mysql_fetch_array($results)){
?>
<tr>
    <td><input name="medioss[<?php echo $filass['No.Analisis']; ?>]" type="text"  value="<?php echo $filass['Medios_Usados']; ?>" size="40"></td>
    <td><input name="mdios[<?php echo $filass['No.Analisis']; ?>]" type="text"  value="<?php echo $filass['No.Lotess'];?>" size="25">    </td>
    <td><input name="especificacion" type="text" id="especificacion" value="AUSENCIA" size="25">    </td>
    <td><input name="medios2[<?php echo $filass['No.Analisis']; ?>]"  type="text" value="<?php echo $filass['resultado'];?>" size="24"></td>
</tr>
<?php
}
?>
Fíjaque que cambié $filass['id'] (como estaba en el primer ejemplo) por $filass['No.Analisis'].

Y en la parte para actualizar con el foreach me confundí y puse en la consulta "resultado" en vez de "resuktado" como tienes en tu tabla según deduzco, quedaría entonces así:
Código PHP:
<?php
foreach($_POST['medioss'] as $id => $valor) { // Recorro todos los campos con name="medioss" para obtener el ID del registro (que se almacena en la variable $id)
    // Almaceno en variables los valores de los tres campos con el ID del campo actual en que está el foreach
    
$medios $_POST['medioss'][$id];
    
$lotes $_POST['mdios'][$id];
    
$resultado $_POST['medios2'][$id];

    
$update "UPDATE mediosexternos SET Medios_Usados = '$medios', No.Lotess = '$lotes', Especificacion = 'AUSENCIA', resuktado = '$especificacion' WHERE No.Analisis = '$id'"// Armo la consulta con los valores de los campos
    
    
$executeupdate mysql_query($update$Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error()); // Ejecuto la consulta a la base de datos
}
?>
Cualquier cosa me avisas.

Un saludo.
Gracias por el ejemplo!! me sirvio...
  #12 (permalink)  
Antiguo 22/06/2012, 07:36
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: sentencia mysql con php

Miren hago un

Código PHP:
Ver original
  1. echo '<pre>';
  2. print_r($_REQUEST);
  3. echo '</pre>';

y muestra todas las variales con sus valores, tambien muestra todos los datos de los arrays, [medioss] es el nombre de uno de mis campos.

Código PHP:
Ver original
  1. [medioss] => Array
  2.         (
  3.             [0] => 222
  4.             [1] => 3333
  5.         )

como hago para que me actulice lo que esta en la posicion 0 y en la posicion 1. tengo esto

Código PHP:
Ver original
  1. foreach($_POST['medioss'] as $id => $valor) {
  2.    
  3.     $medios = $_POST['medioss'][$id]; //Estos estan declarados como arrays
  4.     $lotes = $_POST['mdios'][$id]; //Estos estan declarados como arrays
  5.     $resultado = $_POST['medios2'][$id];//Estos estan declarados como arrays
  6.  
  7.     $update = "UPDATE `mediosexternos` SET `Medios_Usados` = '$medios', `No.Lotess` = '$lotes', `Especificacion` = 'AUSENCIA', `resuktado` = '$resultado' WHERE `No.Analisis`='{$analisis}'"; // Armo la consulta con los valores de los campos
  8.    
  9.     $executeupdate = mysql_query($update, $Conexion) or die ('Error al actualizar en la tabla mediosexternos '.mysql_error()); // Ejecuto la consulta a la base de datos
  10.  
  11.  
  12. echo $update;
  13.  
  14. echo '<pre>';
  15. print_r($_REQUEST);
  16. echo '</pre>';
  17. }

y esto me actualiza los datos pero con los valores de la ultima posicion, es decir los campos me quedan todos con 3333. hay que tener encuenta que para un No.Analisis hay varios $medios no uno solo, todos los medios deben ser diferentes

Gracias por toda la ayuda!!!
  #13 (permalink)  
Antiguo 22/06/2012, 14:34
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: sentencia mysql con php

Hola JeMaga, ¿podrías mostrar cuáles son todos los campos que hay en la tabla "mediosexternos"? Me refiero al nombre de cada columna y el tipo de datos que almacena.

Un saludo.

Etiquetas: formulario, mysql, sentencia, 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 06:48.