Tema: Sentencias
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/07/2004, 15:36
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
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,