Foros del Web » Programando para Internet » PHP »

Consulta SQL en PHP

Estas en el tema de Consulta SQL en PHP en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema por resolver y me ha costado un montón. tengo una base de datos en mysql estructurada de la ...
  #1 (permalink)  
Antiguo 03/02/2004, 15:41
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta Consulta SQL en PHP

Hola a todos, tengo el siguiente problema por resolver y me ha costado un montón.


tengo una base de datos en mysql estructurada de la siguiente forma:

Clientes (id, fecharegistro, ultimoingreso, compania, usuario, pass, nivel_acceso, email, direccion, telefono1, telefono2, telefono3, fax)

contactos (id, nombres, apellidos, compania, cargo, email, telefono1, telefono2, telefono3, celular, fax)

cargos (idcargo, cargo)


la tabla contactos se relaciona con la tabla clientes, ya que al mostrar X cliente con sus datos, mostraré a su vez los contactos adheridos a el. Para esto el orden de ingreso de registros es el siguiente:

1. Se ingresa un cliente;

Código PHP:

//me traigo las variables del form anterior
$fecharegistro $_POST["fecharegistro"];
$compania $_POST["compania"];
$usuario $_POST["usuario"];
$pass $_POST["pass"];
$nivel_acceso $_POST["nivel_acceso"];
$email $_POST["email"];
$direccion $_POST["direccion"];
$telefono1 $_POST["telefono1"];
$telefono2 $_POST["telefono2"];
$telefono3 $_POST["telefono3"];
$fax $_POST["fax"];

$sql =mysql_query("INSERT INTO $tablaclientes (fecharegistro, compania, usuario, pass, nivel_acceso, email, direccion, telefono1, telefono2, telefono3, fax) VALUES ('$fecharegistro', '$compania', '$usuario', '$pass', '$nivel_acceso', '$email', '$direccion', '$telefono1', '$telefono2', '$telefono3', '$fax')") or die(mysql_error());

$result mysql_query($sql); 
2. Luego en otra página ingreso los contactos pertenecientes a ese cliente;

Código PHP:
// armo el select de cargos para elegir leyendo de la bd ya que los he ingresado previamente
$compania mysql_query("SELECT DISTINCT id, compania FROM $tablaclientes ORDER BY compania ASC"); 
$cargo mysql_query("SELECT DISTINCT idcargo, cargo FROM $tablacargos ORDER BY cargo ASC"); 

Código PHP:

//me traigo las variables del form anterior
$fecharegistro $_POST["fecharegistro"];
$nombres $_POST["nombres"];
$apellidos $_POST["apellidos"];
$compania $_POST["compania"];
$cargo $_POST["cargo"];
$email $_POST["email"];
$telefono1 $_POST["telefono1"];
$telefono2 $_POST["telefono2"];
$telefono3 $_POST["telefono3"];
$celular $_POST["celular"];
$fax $_POST["fax"];

$sql =mysql_query("INSERT INTO $tablacontactos (fecharegistro, nombres, apellidos, compania, cargo, email, telefono1, telefono2, telefono3, celular, fax) VALUES ('$fecharegistro', '$nombres', '$apellidos', '$compania', '$cargo', '$email', '$telefono1', '$telefono2', '$telefono3', '$celular', '$fax')") or die(mysql_error());

$result mysql_query($sql); 

ok el ingreso lo he hecho bien pero al revisar para ver el contacto ingresado, me encuentro con 2 tipos de consulta que creo que tengo que hacer..


Código PHP:

//Incluimos el script de conexion.
include("../include/conex.php");

//Sentencia sql 
$_pagi_sql "SELECT * FROM $tablacontactos ORDER BY apellidos ASC";

//cantidad de resultados por página
$_pagi_cuantos 25;

//Incluimos el script de paginación de pinedo.
include("../include/paginator.inc.php"); 

bueno como saben al momento de ingresar un contacto tuve que seleccionar de una lista la empresa a la cual el pertenecia.. luego el cargo a la cual el pertenece, estos select los saque de 2 tablas que tengo ya hechas en mysql, una es la de la tabla clientes, y otra es la de la tabla cargos que es donde se encuentran los cargos mas comunes.

al momento de enviar eso a la base de datos yo envio es el valor de la id, sacado del value del select, a la base de datos, total que un contacto me queda con compañia: 4 y cargo: 3, esa compañia 4 puede ser X empresa (ej; sun.com) y el cargo 3 puede ser Gerente de sun.com como ejemplo.

ok ahora al mostrar los contactos armo una tabla html en la cual se encuentran las siguientes columnas

<table width="100%" border="0" cellpadding="0" cellspacing="0" id="titulost">
<tr valign="top" bgcolor="#666666" class="textoblanco">
<td width="3%" valign="top"><div align="center" class="textoblancobold">#</div></td>
<td width="39%" valign="top"><div align="center"><span class="textoblancobold">Nombres y Apellidos </span></div></td>
<td width="15%" valign="top"><div align="center" class="textoblancobold">Compa&iacute;a / Cargo</div></td>
<td width="20%"><div align="center" class="textoblancobold">Email</div></td>
<td width="10%" valign="top"><div align="center" class="textoblancobold">Tel&eacute;fonos</div></td>
<td width="10%" valign="top"><div align="center" class="textoblancobold">Celular</div></td>
<td width="10%" valign="top"><div align="center" class="textoblancobold">Fax</div></td>
</tr>
<tr>
<td colspan="7" class="textogris"><?
//Leemos y escribimos los registros de la p&aacute;gina actual
$cont=0;
while($row = mysql_fetch_array($_pagi_result)){
$cont++;
// le coloco colores a las cedlas
if ($alternate == "1") {
$color = "white";
$alternate = "2";
}
else {
$color = "#E8E8E8";
$alternate = "1";
}
?>
<table width="100%" border="0" cellpadding="3" cellspacing="0" id="registros">
<tr bgcolor="<?=$color?>">
<td width="3%" height="17" class="textogris"><?=$cont?></td>
<td width="3%" height="17" class="textogris"><a href="cont_modificar2.php?id=<?=$row[id]?>"><img src="../images/modificar.gif" alt="Modificar Registro de <?=$row[nombres]?>" width="16" height="17" border="0"></a></td>
<td width="3%" height="17" class="textogris"><a href="cont_eliminar2.php?id=<?=$row[id]?>"><img src="../images/eliminar.gif" alt="Borrar Registro de <?=$row[nombres]?>" width="16" height="17" border="0"></a></td>
<td width="27%" class="textogris"><a href="cont_revisar2.php?id=<?=$row['id']?>"><?=$row['nombres']?>&nbsp;<?=$row['apellidos']?></a></td>
<td width="13%" class="textogris">
<?
// armo el select de cargos para elegir

$companiashow= "$compania";
$cargoshow= "$cargo";

$select1 = mysql_query("SELECT id, compania FROM $tablaclientes WHERE id='$companiashow'");
$select2 = mysql_query("SELECT idcargo, cargo FROM $tablacargos WHERE cargo='$cargoshow'");


?>
<span class="textogrisbold">
<?php while ($row = mysql_fetch_row($select1)) { ?>
<?=$row[1]?>
<? } ?>
</span><br>
<span class="textogrisbold">
<?php while ($row = mysql_fetch_row($select2)) { ?>
<?=$row[2]?>
<? } ?>
</span></td>
<td width="19%" class="textogris"><?=$row['email']?></td>
<td width="8%" class="textogris"><?=$row['telefono1']?><br>
<?=$row['telefono2']?><br>
<?=$row['telefono3']?></td>
<td width="8%" class="textogris" align="center"><?=$row['celular']?></td>
<td width="16%" class="textogris"><?=$row['fax']?></td>
</tr>
</table>
<?
}

//Incluimos la barra de navegaci&oacute;n
echo"<p align='center' class='textogris'>".$_pagi_navegacion."</p>"; ?></td>
</tr>
</table>


ok el problema se presenta cuando quiero convertir ese 4 de compañia y ese 3 de cargo, yo quiero es que al detectar esos numeros vaya a la base de datos, compare y me muestre resultados de compañia y cargo, para eso pensé que así podría funcionar pero veo que no :o(

<td width="13%" class="textogris">
<?
// armo el select de cargos para elegir

$companiashow= "$compania";
$cargoshow= "$cargo";

$select1 = mysql_query("SELECT id, compania FROM $tablaclientes WHERE id='$companiashow'");
$select2 = mysql_query("SELECT idcargo, cargo FROM $tablacargos WHERE cargo='$cargoshow'");


?>
<span class="textogrisbold"><?php while ($row = mysql_fetch_row($select1)) { ?>
<?=$row[1]?>
<? } ?></span><br>
<span class="textogrisbold">
<?php while ($row = mysql_fetch_row($select2)) { ?>
<?=$row[2]?>
<? } ?>
</span></td>




bueno espero que hayan entendido mi extensa explicación, y si pueden aconsejarme sobre como relacionar la consulta SQL para mostrar los datos de compaía y cargo previamente ingresados en la tabla os agradezco.

Salu2
  #2 (permalink)  
Antiguo 03/02/2004, 15:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías usar más SQL y unificar tu consulta bajo un INERT JOIN o similares para relacionar esas dos tablas y los datos que requieres de ambas.

Por ejemplo .. en la tabla "contactos" tienes los cargos .. deberias relacionarlos por el identificativo idcargo .. lo mismo con la de "Clientes" con respecto a las otras.. Todo esto te facilitará la taréa de hacer consultas por várias condiciones de X tablas.

Creo que el problema es más bien de modelo de datos de tu Base de datos (tablas y relaciones entre ellas) mas que de PHP. Si consigues realizar tu consultas integramente en SQL .. no tendrás mas que hacer un "mysql_fetch_array()" común para un único resultado y no liarte con "código php" (eso sí, liarte con más SQL )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:56.