Foros del Web » Programando para Internet » PHP »

una consulta

Estas en el tema de una consulta en el foro de PHP en Foros del Web. Buenas ..llevo algún tiempo con este código en php el cual debe registrarme un usuario pero no entiendo por que no lo hace me da ...
  #1 (permalink)  
Antiguo 09/06/2013, 10:20
 
Fecha de Ingreso: junio-2013
Mensajes: 20
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta una consulta

Buenas ..llevo algún tiempo con este código en php el cual debe registrarme un usuario pero no entiendo por que no lo hace me da como resultado " REGISTRO NO GRABADO"

Este mensaje sale si en el formulario coloco una cedula que NO existe en la BD pero, si lo hago con una que ya existe me da el siguiente error "Fatal error: Cannot use object of type stdClass as array in line 99 que es esta
if ($objeto{'cedula'} == $cedula ) y no me registrar ningun usuario..


sin mas que decir agradesco de antemano cualquier TIP, ayuda, critica pellisco o.O
para poder continuar ya que pues estoy aun en lo basico de PHP el codigo completo es el siguiente



<?php
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$cedula = $_POST['cedula'];
$cargo = $_POST['cargo'];
$Usuario = $_POST['Usuario'];
$conex = mysql_connect("localhost","xxxx","2xxxx") or
die("Problemas en la conexion");
mysql_select_db("cicpc",$conex) or
die("Problemas en la selección de la base de datos");
$inst = "select * from usuario where cedula=$cedula";
$res = mysql_query($inst, $conex);
if ($res) {
$objeto = mysql_fetch_object($res);
if ($objeto{'cedula'} == $cedula )
echo "cedula ya existe";
else
{
$inst="insert into usuario values ('$nombre','$apellido','$cedula','$cargo',$Usuario )";
$res = mysql_query($inst, $conex);
if ($res)
echo "registro grabado";
else
echo "registro no grabado";

}
}
else
echo "ERROR.. No se Pudo Consultar";

mysql_close($conex);
?>
  #2 (permalink)  
Antiguo 09/06/2013, 10:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: una consulta

Sucede que esa sintaxis es incorrecta, el mismo mensaje de error te lo está indicando:
Cita:
Cannot use object of type stdClass as array
Si no sabes inglés puedes usar un traductor para entender lo que te dice.

Las propiedades de un objeto se acceden con -> y no como lo hiciste.

Código PHP:
Ver original
  1. // MAL
  2. $objeto{'cedula'}
  3.  
  4. // BIEN
  5. $objeto->cedula

Además dicha condición es absurda pues en la consulta ya estás haciendo la misma pregunta.

Cita:
WHERE cedula=$cedula
Eso vuelve la segunda comprobación es innecesaria, ¿no lo crees?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/06/2013, 10:56
 
Fecha de Ingreso: junio-2013
Mensajes: 20
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: una consulta

// BIEN
$objeto->cedula

colocandolo asi me da el siguiente error

Trying to get property of non-object in

siento molestar tanto con esto pero no no se como solucionarlo....
y pues para idea de lo que quiero hacer es simple solo que primero verifique si la cedula existe.... si es asi me diga que ya esta y sino continue con el registro...
gracias de nuevo
  #4 (permalink)  
Antiguo 09/06/2013, 10:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: una consulta

Sigo pensando que esa comparación con código PHP es innecesaria, porque en la consulta de SQL estás haciendo la misma comparación, ¿o de verdad no te das cuenta?

Piensa, si la consulta devuelve un resultado entonces, ¿para qué comparas de nuevo el mismo valor?

No tiene nada de sentido hacer dos veces la misma cosa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/06/2013, 11:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 12
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: una consulta

Por lo que puedo ver en el código usas el mysql_connect(Server, usuario, pass)...Lo que sucede es que con las versiones de php actuales debes de usar mysqli_connect(...lo mismo que antes...)...lo otro sería una conexión con PDO...

$conexion = new PDO(...); pero si no quieres irte a lo de pdo si que deberías usar el mysqli_connect...o sea que donde va mysql, poner mysqli.

Salu2s..
  #6 (permalink)  
Antiguo 09/06/2013, 14:50
 
Fecha de Ingreso: junio-2013
Mensajes: 20
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: una consulta

E cambiado el codigo pero aun no me da resultado y es que con este me dice que el numero que ya ingrese existe cuando no es asi
E visto otros ejemplos y no e logrado solucionarlo y ante eso busco ayuda en este foro Gracias de antemano Un saludo
<?php
{
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$cedula = $_POST['cedula'];
$cargo = $_POST['cargo'];
$Usuario = $_POST['Usuario'];

$conexion = mysql_connect("localhost","dairon","20624101") or
die("Problemas en la conexion");
mysql_select_db("cicpc",$conexion) or
die("Problemas en la selección de la base de datos");

$sql= mysql_query ("select * from usuario where cedula= $cedula");
if(($sql)==false )

{
$sql = mysql_query ("INSERT INTO usuario (nombre, apellido, cedula, cargo, usuario)
VALUES ('$_POST[$nombre]','$_POST[$apellido]', '$_POST[$cedula]', '$_POST[$cargo]', '$_POST[$Usuario]')".$conexion)
or die("error al cargar".mysql_error());

if( $sql > 0 )
echo "<p>Usuario Registrado con Exito</p>";
else
echo "<p>Ocurrió un error al crear el usuario: " . mysql_error(
$conexion ) . ".</p>";
}



else
{
echo "<p>El numero de Cedula Ya existe en el sistema</p>";
}
}


mysql_close($conexion);
?>

Etiquetas: Ninguno
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 01:13.