|
Mostrar Mensajes
|
Páginas: [1]
|
2
|
Programación / PHP / Update de varios campos con un array
|
en: 22 Mayo 2012, 13:16 pm
|
Buenas a todos, ya se que a priori parece que mi problema es de BBDD pero no. Tengo un formulario el cual se crea dinamicamente con un bucle while, para mostrar los datos de un mismo articulo almacenados en la BBDD. Almaceno todos los valoers de los input en una array, tal que asi: <?php while($resul_hiscalib=mysql_fetch_array($consu_hiscalib)){ ?> <tr align="center"> <td> <input size="8%" type="text" name="calib_his[]" value="<?php echo $resul_hiscalib[17]; ?>" /> </td> <td> <input style="text-align: center;" size="8%" type="text" name="calib_his[]" value="<?php echo strftime("%d-%m-%Y",strtotime($resul_hiscalib[2])); ?>" /> </td> <td> <input style="text-align: center;" size="25%" type="text" name="calib_his[]" value="<?php echo $resul_hiscalib[3]; ?>" /> </td> <td> <input style="text-align: center;" size="6%" type="text" name="calib_his[]" value="<?php echo $resul_hiscalib[16]; ?>" /> </td> <td> <input style="text-align: center;" size="8%" type="text" name="calib_his[]" value="<?php echo strftime("%d-%m-%Y",strtotime($resul_hiscalib[7])); ?>" /> </td> Y continua... El caso es que en mi array se almacenan todos los datos...no differencia por linea ni nada paraa que en el update de la otra pagina yo pueda poner los campos y se vayan ejecutando. aqui dejo la sentencia SQL de la otra pagina: if($query=mysqli_prepare($link,"UPDATE HISCALIBRACION SET Fecha=?,Actuacion=?,InfExterno=?,Tecnico=?,Labexterno=?,`Proxima actuacion`=?,Coste=?,Dedicacion=?,Duracion=?,Incertidumbre=?,K=?,Imax=?,Tmin=?,Estado=?,`Num Informe`=? where Referencia=? and Serie=?;")) { foreach($_REQUEST['calib_his'] as $item){ if($_REQUEST['calib_his']!=""){ echo $_REQUEST['calib_his']."<br />"; /*mysqli_stmt_bind_param($query, "sssssssssssisssssi",$item,$referencia,$_REQUEST['datos_tec_old'][$posicion] ); mysqli_execute($query); if (mysqli_stmt_affected_rows($query)==-1) { $error_repetido=true; }; //printf("%d Row inserted.\n", mysqli_stmt_affected_rows($query)); //printf("%d \n",$posicion); } else { $error_hay_blanco=true; }*/
$_REQUEST['calib_his']=""; } }}} die(); Como ven he estado realizando muchas pruebas y demas para conseguir sacar algo. Inutil, lo unico que consigo es mostrar todos los campos seguidos, algo que me es completamente inutil ya que los quiero uno a uno para poder realizar el update. Alguna idea? A ver si no lo tengo que solucionar yo como siempre me pasa xD
|
|
|
4
|
Programación / Bases de Datos / Problema Mysqli_prepare
|
en: 14 Mayo 2012, 12:30 pm
|
Buenas tengo un problemilla. Ejecuto el siguiente codigo: <?php $link = mysqli_connect('172.31.20.39', 'phpmyadmin', 'clave', 'equipos');
if (!$link) { die('Error de conexión (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); }
if($stmt = mysqli_prepare($link,"UPDATE EQUIPOS set Nombre=?, Referencia=?, Marca=?, Modelo=?,`Num de serie`=?, lampara=?, `idsuministradora`=?, `Contacto suministrador`=?, idserviciotecnico=?,`Contacto servicio tecnico`=?, idubicacionequipo=?, idubicacionmanualuso, Precio=?, `Fecha de recepcion`=?, `Fecha de puesta en servicio`=?, Estado=?, `Bloqueo Rble Unidad`=?, AcreditacionE=?, AcreditacionP=?, Potencia=?, `idubicacionmanualmantenimiento`=?, marcado_ce=?, accesorio_fungible_mobiliario=?, Laboratorio=? where id=?;")){ mysqli_stmt_bind_param($stmt, "sssssiisisiiisssiiisissi", $_REQUEST['nombrequipo'],$_REQUEST['codigo'],$_REQUEST['marca'],$_REQUEST['modelo'],$_REQUEST['num_serie'],$_REQUEST['lampara'],$_REQUEST['suministrador'],$_REQUEST['contacto_suminis'],$_REQUEST['stecnico'],$_REQUEST['contacto_st'],$_REQUEST['ubicacion_equipo'],$_REQUEST['ubicacion_manual_uso'],$_REQUEST['precio_compra'],$_REQUEST['recepcion'],$_REQUEST['puesta_servicio'],$_REQUEST['estado_compra'],$_REQUEST['vbueno'],$_REQUEST['acredit_ensayo'],$_REQUEST['acredit_patron'],$_REQUEST['potencia'],$_REQUEST['ubicacion_manual_mante'],$_REQUEST['marcado_ce'],$_REQUEST['accesorio'], $_REQUEST['nombrelab'], $_REQUEST['modificar'] ); die($stmt); mysqli_execute($stmt); echo "Actualizacion correcta."; }else{ "No se ha podido realizar la actualizacion"; } mysqli_close($link); ?> Y no hace nada de nada. Ni entra en el DIE que hay detras de la definicion de los valores. La pagina se carga totalmente en blanco. Alguna idea? creo que estoy haciendo mal el mysqli_prepare, me falta algo? Un saludo y gracias de antemano!
|
|
|
5
|
Programación / Desarrollo Web / Re: Problema con while PHP y MySQL
|
en: 10 Mayo 2012, 12:36 pm
|
Solucionado! Bucle for y condicionales. Adjunto el codigo pro si a alguien le viene bien. <?php $datos= explode(",",$_REQUEST['cadena']); $cuenta_datos=count ($datos); $campos= array( 0 => "Nombre", 1 => "Referencia", 2 => "Marca", 3 => "Modelo", 4 => "Num de serie",
); //echo $datos[0]; //echo $campos[0]; $cuenta_campos= count($campos);
$query = "select * from equipos where";
for($i=0; $i<$cuenta_campos; $i++){ for ($i2=0;$i2<$cuenta_datos;$i2++){
$query = $query." [".$campos[$i]."] like '%".$datos[$i2]."%'"; if ( !($i==$cuenta_campos-1 and $i2==$cuenta_datos-1) ) { $query = $query." or"; };
}; }
echo $query;
?>
|
|
|
6
|
Programación / Desarrollo Web / Problema con while PHP y MySQL
|
en: 10 Mayo 2012, 10:59 am
|
Buenas a todos, en mi primer post y ya preguntado...empiezo bien... xD El caso es que estoy programando un buscador con php y mysql y me gustaria que me ayudaseis un poco por favor. Adjunto el codigo: <?php $datos= explode(",",$_REQUEST['cadena']); $cuenta=count ($datos);
//Conexion a la BD $conexion=mysql_connect("172.31.20.39","phpmyadmin","clave") or die("Problemas en la conexion"); mysql_select_db("equipos",$conexion) or die("Problemas en la selección de la base de datos"); $i=0; $bucle = while ($i!=$cuenta){ ECHO " OR Nombre LIKE %"; echo $datos[$i]; ECHO "%"; $i++;} echo $bucle; //$SQL="select * from EQUIPOS where Nombre like foo".while ($i!=$cuenta){ //ECHO " OR Nombre LIKE %"; //echo $datos[$i]; //ECHO "%"; //$i++;}.")"; //ECHO $SQL; $consueq=mysql_query("select * from EQUIPOS where Nombre in('".implode(',', $datos)."')",$conexion) or die("Problemas en el select:".mysql_error()); $reg=mysql_fetch_array($consueq); print_r ($reg[0]); ?>
Lo que me esta fallando es el while dentro de una variable, estoy empezando a pensar que no funciona, ya que fuera de la variable funciona perfectamente. Lo que quiero es que la query realice un rastreo en la tabla de valores que se aproximen a los introducidos. Por lo de aproximacion no puedo usar un IN en el apartado where y necesito un bucle que recorra todos los valores del array para usar el LIKE. Alguien puede ayudarme?...estoy bastante atascado. Gracias de antemano! EDITO: Lo siento acabo de ver el foro de PHP Si alguien puede moverlo...error de novato !
|
|
|
|
|
|
|