Foros del Web » Programando para Internet » PHP »

problema con multi update php/mysql

Estas en el tema de problema con multi update php/mysql en el foro de PHP en Foros del Web. Hola soy nuevo gracias por aceptarme en el foro, tengo un problema ando haciendo un pequeño sistema de facturacion, primero se hace una consulta a ...
  #1 (permalink)  
Antiguo 17/01/2010, 07:58
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta problema con multi update php/mysql

Hola soy nuevo gracias por aceptarme en el foro, tengo un problema ando haciendo un pequeño sistema de facturacion, primero se hace una consulta a la bd para saber cuantos registros estan pendientes en estatus ORDEN y de ahi se hace un arreglo donde se almacenan, etc etc., en un for se muestra el arreglo en una tabla, hay un segundo for para numerar los registros y asignarles el numero de la factura siguiente, el problema es cuando quiero actualizar la bd, me agrega el ultimo numero en todos los campos de la tabla en estatus ORDEN, no se que hacer ya probe varias cosas y yo creo que el problema esta en el query update, pero no he podido hacer que me agregue la secuencia y no que me repita el ultimo numero, aqui agrego el codigo espero alguien me pueda ayudar, gracias.


Código:
<script languaje="javascript">
function fact()
{
document.forma.action="factrad.php";
document.forma.method="POST";
document.forma.submit();
}
</script>

<SCRIPT TYPE="text/javascript">
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
	if (keycode == 13)
	{
	myfield.form.submit();
	return false;
	}
	else
	return true;
}

</SCRIPT>

<?php
$nomb3=$dato2;
$tiempo= time();
$hora=date("h:i A",$tiempo);
$fecha=date("d/m/Y");

echo "<h6>HOLA $nomb3 QUE OPERACION DESEAS REALIZAR <p align=right> fecha:$fecha hora:$hora</h6>";

$conn =mysql_connect("localhost","root","");
mysql_select_db("fact",$conn);



$query="select * from factrad where estatus='orden'";
$res=mysql_query($query,$conn);
if(mysql_num_rows($res)!=0)
{
			echo "<html>";
			echo "<title></title>";
			echo "<head><h2><center> LISTA DE FACTURAS EN ESTATUS ORDEN</center></h2>";
			echo "</head>";
?>
	<body  onLoad="this.document.forma.num.focus();">
	<?php		//	echo "<center><img src=logo.jpg height=150 width=120></center>";
			echo "<input type=hidden name=dato2 value='$nomb3' style=width:265px; height:30px ></center>";
			echo "<pre>";
			//echo "<br>";
			echo "<form name='forma' id='forma'>";
			$impf="IMPRIMIR FACTURAS";
			$valor=chop($impf);
			echo "<p align=CENTER> <input type=button value='$valor' onclick=location.href='factrad.php'></p>";
			echo "<table align='left' width='225' cellspacing='2' cellpadding='2'border='1'>";
			echo "<tr>";
			echo "<td readonly=readlonly><b>ID</td>";
			echo "<td readonly=readlonly><b>CLAVE USUARIO</td>";
			echo "<td readonly=readlonly><b>SIGLAS</td>";
			echo "<td readonly=readlonly><b>RAZON SOCIAL</td>";

			echo "</tr>";

	while($row=mysql_fetch_array($res))
	{
		    $id[]=$row["id"];
		    $cve[] = $row ["cveusuario"];
    		$sigla[] = $row ["siglasradio"];
    		$razon[] = $row ["razonsoc"];

/*
			echo "<tr>";
			echo "<td><input type=text name='' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$row[id]'></td>";
			echo "<td><input type=text name='' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$row[cveusuario]'></td>";
			echo "<td><input type=text name='' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$row[siglasradio]'></td>";
			echo "<td><input type=text name='' size='65' style='text-align:center' maxlenght='100' readonly='readonly' value='$row[razonsoc]'></td>";
			echo "<td><input type=text name='num' size='15' style='text-align:center' maxlenght='100' ></td>";
			echo "</tr>";
*/
	}

			echo "<tr>";
			echo "<td><input type=text size=1 readonly='readonly'></td>";
			echo "</tr>";


			$t = count($id);



for ($i = 0; $i < $t; $i++)
{
			echo "<tr>";
			echo "<td><input type=text name='clave' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$id[$i]'></td>";
			echo "<td><input type=text name='clave' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$cve[$i]'></td>";
			echo "<td><input type=text name='sigg' size='15' style='text-align:center' maxlenght='100' readonly='readonly' value='$sigla[$i]'></td>";
			echo "<td><input type=text name='razz' size='65' style='text-align:center' maxlenght='100' readonly='readonly' value='$razon[$i]'></td>";

}



echo "</tr>";
			echo "</table>";
			echo "<table width='225' cellspacing='2' cellpadding='2' border=1>";
			echo "<tr><td readonly=readlonly><b>NUMERAR </td></tr>";
			echo "<tr><td><input type=text name='num' size='10' style='text-align:center' maxlenght='100'  value=''><input type=submit value='numerar'></td></tr>";



		for($b=0; $b<$t; $b++)
			{
			$c=$num++;
			echo "<tr><td><input type=text size='15' name='numera' style='text-align:center' maxlenght='100' readonly=readonly value=$c></td></tr>";
	//		echo $c;
			echo $b;
			$zz[]=$c;

// query para actualizar la bd y agregar el numero de factura a los registros que aun no lo tienen en base a la consulta previa
//	 $insertar="update factrad set numfact=$numera where estatus='orden'";
//	  mysql_query($insertar, $conn);
			}
$zm=count($zz);

		for($d=0; $d<$t; $d++)
			{
			echo $zz[$d];
		//	query para actualizar la bd y agregar el numero de factura a los registros que aun no lo tienen en base a la consulta previa
			$insertar=mysql_query("update factrad set numfact=$zz[$d] where $id[$d] AND estatus='orden'");
			}


			echo "</table>";

			echo "</form>";
			echo "</pre>";
			echo "</html>";


}


?>
  #2 (permalink)  
Antiguo 17/01/2010, 08:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con multi update php/mysql

Esto es incorrecto:

$insertar=mysql_query("update factrad set numfact=$zz[$d] where $id[$d] AND estatus='orden'");

No estas incluyendo el campo ID para hacer la comparacion.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/01/2010, 09:32
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

lo se, eso fue lo ultimo que intente para ver si era eso lo que faltaba, porque pense que en el query se tenia que poner algun identificador id para el arreglo, para que no me agregara el mismo numero en toda la tabla que cumpla con el where estatus='orden', ya lo intente asi tambien $insertar=mysql_query("update factrad set numfact=$zz[$d] where estatus='orden'"); y asi
$insertar=mysql_query("update factrad set numfact=$d where estatus='orden'");

ayuda porfa.
  #4 (permalink)  
Antiguo 17/01/2010, 10:13
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 17 años, 10 meses
Puntos: 29
Respuesta: problema con multi update php/mysql

Porqué no escapas las variables?
Código PHP:
Ver original
  1. $insertar=mysql_query("update factrad set numfact=".$d." where estatus='orden'");

Por cierto, te falta enviarla a $conn:
Código PHP:
Ver original
  1. $insertar=mysql_query("update factrad set numfact=".$d." where estatus='orden'", $conn) or die(mysql_error());
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 18/01/2010, 01:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con multi update php/mysql

Creo que deberias cambiar tambien el estatus:

Código PHP:
Ver original
  1. $insertar=mysql_query("update factrad set numfact=$d, estatus='facturado'
  2.    where estatus='orden'") or die(mysql_error());

... aunque lo mejor seria crear un numero de orden, de manera que el update sea "where orden = $numero_orden".
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 18/01/2010, 05:48
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

ok, muchas gracias a ambos lo pruebo y les comento que paso, y del estatus lo cambio en el siguiente formulario en factrad.php, puesto que se hace otra consulta y con fpdf se imprimen las facturas y en ese punto es donde cambia el estatus a facturado, gracias de nuevo
  #7 (permalink)  
Antiguo 18/01/2010, 12:22
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

Hola, que creen, hice los cambios que me aconsejaron y la bd no actualiza o no recibe nada, mysql, me manda un mensaje de error, cuando pongo ambas formas
Código:
1. $insertar=mysql_query("update factrad set numfact=$d
2. where estatus='orden'",$conn) or die(mysql_error());
y tambien cuando pongo
Código:
$insertar=mysql_query("update factrad set numfact=".$d." where estatus='orden'", $conn);
pone "Query was empty"
  #8 (permalink)  
Antiguo 18/01/2010, 14:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: problema con multi update php/mysql

Edtio: Al parecer aun no acabo de despertar del todo, el mensaje no era correcto, lamento las molestias ocasionadas.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 18/01/2010 a las 17:26 Razón: Lapsus brutus xD
  #9 (permalink)  
Antiguo 18/01/2010, 14:35
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

lo de copy/paste es como referencia, de lo que pusiste, y ni aun asi es la solucion, de todas formas "gracias...".
  #10 (permalink)  
Antiguo 21/01/2010, 10:11
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

ok, no hay problema, y lo que me hace el query UPDATE en la bd es lo siguiente:

DB: tabla factrad EJEMPLO asi es como deberia quedar
Código:
id,    numfact,    estatus,    razonsoc,                     etc... 
1,    152132,    facturado,  la primera s.a. de c.v.,    etc...
2,    152133,    orden,       la segunda s.a. de c.v.,   etc...
3,    152134,    orden,       la tercera s.a. de c.v.,    etc...
4,    152135,    orden,       la cuarta s.a. de c.v.,    etc...
etc     etc         etc               etc
pero al momento de actualizar el numero secuencial es el 152133 por el estatus orden y el query me hace esto:
Código:
id    numfact    estatus    razonsoc                     etc...
1,    152132,    facturado,  la primera s.a. de c.v.,    etc...
2,    152135,    orden,       la segunda s.a. de c.v.,   etc...
3,    152135,    orden,       la tercera s.a. de c.v.,    etc...
4,    152135,    orden,       la cuarta s.a. de c.v.,    etc...
etc     etc         etc               etc
me repite el ultimo numero que obtube en el for
Código:
for($b=0; $b<$t; $b++)
    {
	$c=$num++;
	echo "<tr><td><input type=text size='15' name='numera' style='text-align:center'         maxlenght='100' readonly=readonly value=$c></td></tr>";
//	echo $c;
	echo $b;
	$zz[]=$c;
    }
alguien sabe porque, disculpen que insista pero ya me canse de buscarle y no le hallo

Última edición por midgardo2002; 21/01/2010 a las 12:54
  #11 (permalink)  
Antiguo 21/01/2010, 12:53
 
Fecha de Ingreso: enero-2010
Mensajes: 11
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: problema con multi update php/mysql

YA LO ARREGLE, AQUI PONGO LA SOLUCION PARA CUANDO ALGUIEN LO NECESITE
Código:
	for($d=0; $d<$t; $d++)
			{
			echo $zz[$d];
		//	query para actualizar la bd y agregar el numero de factura a los registros que aun no lo tienen en base a la consulta previa
			$insertar=mysql_query("update factrad set numfact=$zz[$d] where id=$id[$d] AND estatus='orden'");
			mysql_query($insertar, $conn);
                        }
SALUDOS A TODOS

Etiquetas: multi, php-mysql, update
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 17:10.