Foros del Web » Programando para Internet » PHP »

formulario editor

Estas en el tema de formulario editor en el foro de PHP en Foros del Web. hola a todos. He hecho un formulario editor, en el que me va bien si los id no tienen letras, pero misospresa es que cuando ...
  #1 (permalink)  
Antiguo 27/02/2006, 12:32
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
formulario editor

hola a todos.

He hecho un formulario editor, en el que me va bien si los id no tienen letras, pero misospresa es que cuando tiene letras esta me suelta un error como este.

Unknown column 'a2' in 'where clause'

es como si no conociese ese id. pero si que existe.

este es el link hacia el editor: <a href='editararticulo.php?id=" .$row["id"]."'>

y este es el codigo completo del editor:

<?
// Autentificator
// Gestión de Usuarios PHP+Mysql+sesiones
// by Pedro Noves V. (Cluster)
// [email protected]
// ------------------------------------------
require("aut_verifica.inc.php");
$nivel_acceso=10; // Nivel de acceso para esta página.
// se chequea si el usuario tiene un nivel inferior
// al del nivel de acceso definido para esta página.
// Si no es correcto, se mada a la página que lo llamo con
// la variable de $error_login definida con el nº de error segun el array de
// aut_mensaje_error.inc.php
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
<html>

<head>
<title></title>
</head>

<body>

<br>
<?php
include ("includes/config.php");
include ("includes/funciones.php");
//si la forma ha sido enviada editamos el registro.
if(isset($_POST['submit'])){
//nos conectamos a mysql
$cnx = conectar ();

$sql = "UPDATE articulos SET ";
$sql .= "idnuestro ='".$_POST['idnuestro']."',";
$sql .= "descripcion ='".$_POST['descripcion']."',";
$sql .= "idfamilia ='".$_POST['familia']."',";
$sql .= "idalmacen ='".$_POST['idalmacen']."'";
$sql .= "WHERE id =".$_POST['id'];
$res = mysql_query($sql) or die(mysql_error());
echo "Registro actualizado.<br><a href='buscarticulo1.php?'>regresar</a>";
mysql_close($cnx);
exit;
}

//si no hay id, no puede seguir.
if(empty($_GET['id'])){
header("Location: index.php");
exit;
}

//nos conectamos a mysql
$cnx = conectar ();

//consulta para mostrar los datos.
$sql = "SELECT * FROM articulos where articulos.id=".$_GET['id'];
$res= mysql_query($sql) or die (mysql_error());

if( mysql_num_rows($res) >0){
//si hay resultados hacemos la forma.
?>
<p>Inserte los nuevos datos</p>

<form name="form1" method="post" action="<?echo $_SERVER['PHP_SELF'];?>">
<table width="400" border="1" cellpadding="0" cellspacing="0">
<?
//impresión de los datos.
while ($fila = mysql_fetch_array($res)) {
?>
<tr>
<td width="150">Id</td>
<td><input name="id" type="hidden" id="id " value="<?echo $fila['id'];?>"><? echo $fila['id'];?></td>
</tr>
<tr>
<td>Referncia Nuestra</td>
<td><input name="idnuestro" type="text" id="idnuestro" value="<? echo $fila['idnuestro'];?>"></td>
</tr>
<tr>
<td>Descripcion</td>
<td><input name="descripcion" type="text" id="descripcion" value="<? echo $fila['descripcion'];?>"></td>
</tr>
<tr>
<td>Familia</td>
<td><input name="idfamilia" type="text" id="idfamilia" value="<? echo $fila['idfamilia'];?>"></td>
</tr>
<tr>
<tr>
<td>Almacen</td>
<td><input name="idalmacen" type="text" id="idalmacen" value="<? echo $fila['idalmacen'];?>"></td>
</tr>


<tr>
<tr>
<tr>
<td>&nbsp;</td>
<td align="right"><input type="submit" name="submit" value="enviar"></td>
</tr>
</table>
</form>
<?
}
}else{
//no hay resultados, id malo o no existe.
echo "no se obtuvieron resultados";
}
mysql_close($cnx);
?>
</body>

</html>

gracias por su atencion
  #2 (permalink)  
Antiguo 27/02/2006, 12:37
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 3 meses
Puntos: 0
1.- Enmcarca el codigo en su etiqueta de PHP para que se pueda leer mejor........

2.- no entiendo por que te genera ids con letras (me imagino que el id se genera solo o no?
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #3 (permalink)  
Antiguo 27/02/2006, 13:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo mejor es ver que sentencia SQL compones .. haces muchas concatenaciones (realmente eso más que ayudar "lia" para ver un problema concreto ..).

Haz un echo a $sql y observa .. El error te dice que no encuentra la columna (o campo) de nombre a2 .. eso sucede cuando no usas comillas para encerrar tu valor (sea numérico o alfanumérico en SQL dá igual ..):

Usa siempre comillas:
Código PHP:
<?
$sql 
.= "WHERE id ='".$_POST['id']."'";
Un saludo,
  #4 (permalink)  
Antiguo 27/02/2006, 17:43
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
el id se introduce manualmente, al tratarse de articullo por eso de tener letras,.


El where lo he metido en comillas y me sigue dando el error pero sin embargo cuando no hay letras no me da el error.
  #5 (permalink)  
Antiguo 28/02/2006, 00:32
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Intentalo asi amigo:
Código PHP:
<?
$id_in
="$_POST['id']";

$sql .= "WHERE id like '%$id_in%'";
?>
"Podrias usar LIKE en ves de igual (=), en tu sentencia", No estoy 100% seguro pero prueba a ver?

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 28/02/2006 a las 00:41
  #6 (permalink)  
Antiguo 28/02/2006, 05:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. esa tabla de productos y campo o columna "id" que datos contiene? ...

Seguro que la sentencia SQL que se compone es la que esperas? .. hicistes ya un echo a $sql? .. que obtienes?

Un saludo,
  #7 (permalink)  
Antiguo 28/02/2006, 13:09
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
SELECT * FROM articulos where articulos.id=2 estas es el echo hecho con un id 2 pero con un a2 no me lo imprimi me da error colunna desconocida, lo que no entiendo es por que siendo alfanumerico casca y numerico no, pongo el optro archivo que llama a este select pero creo que la voy a liar:

<?
// Autentificator
// Gestión de Usuarios PHP+Mysql+sesiones
// by Pedro Noves V. (Cluster)
// [email protected]
// ------------------------------------------
require("aut_verifica.inc.php");
$nivel_acceso=10; // Nivel de acceso para esta página.
// se chequea si el usuario tiene un nivel inferior
// al del nivel de acceso definido para esta página.
// Si no es correcto, se mada a la página que lo llamo con
// la variable de $error_login definida con el nº de error segun el array de
// aut_mensaje_error.inc.php
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
<html>
<head>
<title>RESULTADO DE LA BUSQUEDA</title>
</head>
<body>

<?php
include ("includes/config.php");
include ("includes/funciones.php");
include ("includes/links.php");
?>

<br><br> <br> <br> <BODY BGCOLOR="#C0C0C0">
<table width="90%" align="center" border="10" bordercolor="#800080" >
<tr bgcolor=#408080>
<td align="center"><b><font color=#400040>Referencia fabricante</font></b></td>
<td align="center"><b><font color=#400040>Referencia Nuestra</font></b></td>
<td align="center"><b><font color=#400040>Almacen</font></b></td>
<td align="center"><b><font color=#400040>Descripcion</font></b></td>
<td align="center"><b><font color=#400040>Pasillo</font></b></td>
<td align="center"><b><font color=#400040>Estanteria</font></b></td>
<td align="center"><b><font color=#400040>Estante</font></b></td>
<td colspan="2" align="center"BGCOLOR="black"><b><font color=#80FF00>ACCION</font></b></td>
</tr>
<?
$cnx = conectar ();
if (!$cnx){
echo ("<p>No es posible establecer conexion"."con el servidor. Intentelo de nuevo.</p>");
exit ();
}
if (!@mysql_select_db("$DATABASE") ){
echo ("<p>No es posible establecer base de dato.</p>");
exit ();
}
?>


<?php
$_pagi_sql = "select * from articulos,familia,almacen where articulos.id like '%$fabrica%' and articulos.idnuestro like '%$nuestra%'and articulos.descripcion like '%$nombre%' and articulos.idfamilia=familia.idfa and articulos.idalmacen=almacen.idalmacen ";
include ("paginator.php");
$desde = $_pagi_inicial+1;
$hasta = $_pagi_inicial+$_pagi_cuantos;
echo "<b>Mostrando registros del:</b> $desde hasta el $hasta de un total de $_pagi_totalReg";
echo "<br>";
echo "<br>";
if (!_pagi_sql) {
echo ("<p> performing query: ". mysql_error () ."</p>");
exit ();
}

while ($row = mysql_fetch_array ($_pagi_result)) {
echo "<tr><td ><b><font color=#800080 size=2>" .$row["id"]."</font></b>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["idnuestro"]))
{ echo "&nbsp;"; } else { echo $row["idnuestro"]; } echo "</font></b></td>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["nombreal"]))
{ echo "&nbsp;"; } else { echo $row["nombreal"]; } echo "</font></b></td>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["descripcion"]))
{ echo "&nbsp;"; } else { echo $row["descripcion"]; } echo "</font></b></td>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["pasillo"]))
{ echo "&nbsp;"; } else { echo $row["pasillo"]; } echo "</font></b></td>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["estante"]))
{ echo "&nbsp;"; } else { echo $row["estante"]; } echo "</font></b></td>\n";
echo "<td ><b><font color=#800080 size=2>"; if (empty($row["estanteria"]))
{ echo "&nbsp;"; } else { echo $row["estanteria"]; } echo "</font></b></td>\n";
echo "<td BGCOLOR=#80FF00><a href='articulos.php?id=" .$row["id"]."'><b><font color=#400040><font size=2>Ver Articulo</font></b></a></td>\n";
echo "<td BGCOLOR=#80FF00><a href='editararticulo.php?id=" .$row["id"]."'><b><font color=#400040 ><font size=2>Editar articulo</font></b></a></td>\n";
}
$busca=0


?>
</table>
<? echo"<p>".$_pagi_navegacion."</p>"; ?>
</body>
</html>
  #8 (permalink)  
Antiguo 28/02/2006, 13:52
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 1
no sé si tendrá que ver pero como dices:

Cita:
lo que no entiendo es por que siendo alfanumerico casca y numerico no
te pregunto: ¿cómo has definido el campo id en la base de datos? ¿integer? ¿varchar?
__________________
http://www.nosoynadie.net/
  #9 (permalink)  
Antiguo 05/03/2006, 08:07
 
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
hola de nuevo, despues de una gripe, otra vez estoy aqui.

eltipo de dato es vachar he probado a poderlo int pero como era de esperar las letras las pierdo.

Lo he solucionado creando un campo id, el cual es int y key primaria, solo lo usare para busquedas y cosas de esas el usuario nunca sabra que eso existe.

o sea si ante tenia un id que hacia referencia a una serie de referencias alfanumerica. ahora ademas de este he creado un id solo numerico y autoincrementado.


Gracias a todos por su ayuda
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 07:05.