Foros del Web » Programando para Internet » PHP »

Sentencias

Estas en el tema de Sentencias en el foro de PHP en Foros del Web. he estado haciendo el siguiente código para un insert $conexion = mysql_connect($server, $user, $pass) or die("RIP"); mysql_select_db("vinos") or die("No pudo seleccionarse la BD."); $sql_nuevo="INSERT INTO ...
  #1 (permalink)  
Antiguo 13/07/2004, 14:26
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 14 años, 9 meses
Puntos: 9
Sentencias

he estado haciendo el siguiente código para un insert
$conexion = mysql_connect($server, $user, $pass) or die("RIP");
mysql_select_db("vinos") or die("No pudo seleccionarse la BD.");
$sql_nuevo="INSERT INTO usuarios (usuario, clave, tipousuario, rut, dv, nombre, apPaterno, apMaterno, direccion, comuna, region, fono, email, estado, ingreso) VALUES ('$usuario', '$clave', '$tipousuario', $rut, '$dv', '$nombre', '$apPaterno', '$apMaterno', '$direccion', $comuna, $region, '$fono', '$email', '$estado', '$ingreso')";
mysql_query($sql_nuevo);
Header("Location:index.php");
exit;



y luego he hecho este para ver si me insertó algo en la bdd pero nada...en qué estoy fallando??

$conexion = mysql_connect($server, $user, $pass) or die("RIP");
mysql_select_db("vinos") or die("No pudo seleccionarse la BD.");
$squery ="SELECT nombres FROM usuarios";
$iquery = mysql_query($squery, $conexion);
if ($iquery > 0 ){
$irow = 0;
$ilastrow = mysql_num_rows($iquery);
while ($irow < $ilastrow){
$campo = mysql_result($iquery, $irow, "(nombres)");
$irow++;

echo ($campo);
}
}

No me entrega nada...ni siquiera sé si estoy ingresando datos a la base..no me arroja ningún otro error...
__________________
Buena Vida...
Francisco
  #2 (permalink)  
Antiguo 13/07/2004, 15:03
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 13 años, 9 meses
Puntos: 3
puede ser que la sentencia mysql_query este arrojando un error y tu no te estes enterando.
creo que en el manual oficial de PHP viene informacion de como mostrar los mensajes de error. mira, por ejemplo:

mysql_errno // captura el numero de error
mysql_error // captura el mensaje de error

lo que puedes hacer tambien es mostrar la sentencia SQL en la pantalla:

echo $sql_nuevo;

(y quitar el Header("Location:index.php") porque te va a petar).

abres el phpMyAdmin y lanzas la consulta para ver si te funciona.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 13/07/2004, 15:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No usas phpMyadmin o cualquier otro GUI para Mysql? .. Sería bueno que usases uno .. por qué tal vez te esté fallando tu própio código de visualización (de la consulta para obtener esos registros) y no el de la própia creación del registro.

Lo principal es salir de dudas para ver que has de mirar ...

por lo demás .. te complicas mucho para recorrer el "record-set" .. En PHP tienes las funciones mysql_fetch_xxx() para recorrerlo casi automáticamente: obtienen un registro del "record-set" y mueven el puntero una posición hacia adelante en los resultados obtenidos.

Quedaría algo tipo:

Código PHP:
$conexion mysql_connect($server$user$pass) or die("RIP");
mysql_select_db("vinos") or die("No pudo seleccionarse la BD.");
$squery ="SELECT nombres FROM usuarios";
$iquery mysql_query($squery$conexion);
if (
mysql_num_rows($iquery) > 0){
while (
$irow=mysql_fetch_array($iquery)){
echo 
$irow['nombres']."<br>";


Un saludo,
  #4 (permalink)  
Antiguo 13/07/2004, 15:24
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 14 años, 9 meses
Puntos: 9
Gracias Haron...era un atributo de la tabla el que estba mal escrito
__________________
Buena Vida...
Francisco
  #5 (permalink)  
Antiguo 13/07/2004, 15:36
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 14 años, 9 meses
Puntos: 9
Cluster..gracias por tu respuesta tambien.. justamente iba a preguntar eso...
Lo que pasa es que yo vengo de ASP y en ASP preguntamos por while EOF (End Of File) o por BOF (Begin Of File)

La otra duda que tengo sobre la insercion de datos es que en ASP nosotros tambien usuamos el EOF o el BOF para no duplicar los datos de la base de datos..por ejemplo..cuando creamos un usuario..debemos validar que este no esté creado en la BDD..

cómo sería en PHP esto??

Gracias de antemano..
__________________
Buena Vida...
Francisco
  #6 (permalink)  
Antiguo 13/07/2004, 16:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Consejo ..

Olvidate de ASP .. toma sólo el concepto de "cliente-servidor" donde tieens tus páginas HTML por ejemplo y todo lo que conlleva al cliente y al "servidor" donde estará ahora PHP y el acceso a BD u otros datos que requieras externos además de los que les haces llegar por los links/peticiones/formularios como lo haces habitualmente.

Ahora dedicate a www.php.net y aprender como funciona este maravilloso (;)) lenguaje.

Piensa también que no sólo usas PHP sino base de datos con sus témas própios ..entre ellos SQL própio de Mysql que es lo que usas ahora con sus peculiaridades.

------

Sobre tu prengunta .. no sé como funciona ASP (pero con las preguntas que hacen algo voy aprendiendo como un fumador pasivo toma el humo del que fuma xDDD)....

En PHP hacemos (ya que tu hablas de "nosotros xD") lo que se haría con SQL. Si dices que no quieres duplicar un registro que vas a insertar en tu Base de datos en tal tabla .... tendrás que hacer una consulta SQL pertinente para obtener al menos el nº de coincidencias de ese registro bajo esas condiciones. También (esto es puro SQL) .. si tal campo no se puede repetir puedes definirlo como "unico" (en Mysql hablo) y si se produce ese "intento de" duplicación ya te avisará Mysql con un hermoso error. Podrías controlar el error para continuar con tu "INSERT" o no .. pero no es lo mas "limpio" tal vez hacerlo así (de hecho yo por lo menos no lo hago así para ese control .. en principio).

Código PHP:
$sql="SELECT COUNT(*) FROM tabla WHERE campo='$condicion'";
$resultado=mysql_query($sql) or die (mysql_error());
if (
mysql_result($resultado,0) == 1){
   echo 
"el dato existe ...";
} else {
   
$sql="INSERT .. balblablabalbal";
   
mysql_query($sql);

Podrías usar la función mysql_num_rows() .. pero esa función obtiene todo tu "record-set" y luego cuenta los resultatos (nº de registros arrojados) .. Esto es un gasto de recursos innecesarios cuando ya SQL (de Mysql en este caso y es aplicable a cualquier BD en su SQL particular) ya tienen funciones para "contar registros tra-la.la".

Con la función mysql_result() voy directo al resultado .. pues ya sé que "COUNT()" de Mysql me va a devolver un -sólo registro- con ese dato .. Si es ==1 ya sé que hay una coincidencia (se supone que si validas así es por qué es único o puede ser único ese dato).

Date cuenta que nunca hablo o doy por "sobreentendido" que vas a usar Mysql como BD .. PHP tienen la particularidad de poder trabajar con un grán número de BD distintas .. así que PHP te pone a tu disposición las N funciones básicas para: conectarte a tu BD, generar la consulta y obtener el "record-set" generado y .. poco más por lo común. Todo lo demás se deja en manos del lenguaje S.Q.L. própio de cada motor de BD que uses. (Tienes capas de abstracción de BD para que sólo uses un código común para acceder a N tipos de BD diferentes sin cambiar más que el SQL particular de cada una que en la mayoría de casos en su base es exactamente igual).

Un saludo,
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 05:35.