Comunidad de diseño web y desarrollo en internet online

Problema al mostrar un nombre al usar JOIN

Citar            
MensajeEscrito el 25 Feb 2010 05:18 pm
Tengo la siguiente consulta en php

Código PHP :

$sql="SELECT factura.iduser,factura.nombreproducto,factura.cantidad,factura.precio,factura.total,factura.status,factura.fecha,clientes.nombre,clientes.apellido_pat FROM factura JOIN clientes ON factura.iduser = clientes.iduser WHERE factura.idrefer = '".$_POST['refer']."' "; 
$rs=mysql_query($sql);
$num_rows = mysql_num_rows($rs);


y al mostrar los resultados imprimo la tabla

Código PHP :

if($num_rows > 0){
      ?>
         <table width="600" cellpadding="0" cellspacing="0" border="0">
         <tr class="renglon">
         <td width="200">Producto</td>
         <td width="200">Cantidad</td>
         <td width="200">Precios</td>
         <tr>
      <?php 
          while ($row=mysql_fetch_assoc($rs)){
         $nameproducto = $row['nombreproducto'];
         $cantidad = $row['cantidad'];
         $precio = $row['precio'];
         ?>
            <tr>
            <td width="200"><?php echo $nameproducto; ?></td>
            <td width="200"><?php echo $cantidad; ?></td>
            <td width="200"><?php echo $precio; ?></td>
            </tr>
           
      <?php } ?>
        </table>
   <?php }
   else {
      echo "No existe la factura";
   }


El problema que tengo es como puedo obtener el nombre de la tabla clientes al principio que se crea la tabla , he intentado poner un echo['nombre'] pero no me imprime nada e incluso eh puesto un

Código PHP :

$algo=mysql_fetch_array($rs);
echo $algo['nombre'];

si me lo imprime pero me resta un registro menos como resultado, me podrian echar un cable de lo que esta pasando

Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox
Citar            
MensajeEscrito el 26 Feb 2010 09:40 pm

Código PHP :

$sql = "
  SELECT 
    f.iduser, f.nombreproducto, f.cantidad, f.precio, f.total, f.status, f.fecha, 
    c.iduser, c.nombre, c.apellido_pat 
  FROM factura AS f
  JOIN clientes AS c ON (f.iduser = c.iduser)
  WHERE f.idrefer = '{$_POST['refer']}'
";  
$rs = mysql_query($sql);
$rs = mysql_fetch_assoc($rs);
$num_rows = mysql_num_rows($rs);


Debería funcionar! Fijate que lo único que agregué fue "c.iduser" en "SELECT" y la funcion mysql_fetch_assoc(). Si sigue sin mostrarte la info, probá imprimir tu consulta

Código PHP :

echo $sql;


... y fijate si es la consulta que deseas. También probá tirar un print_r del resultado $rs:

Código PHP :

print_r($rs);


... y fijate que valores está devolviendo!

Espero tu respuesta!

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

firefox
Citar            
MensajeEscrito el 01 Mar 2010 07:35 pm
me sale el mismo resultado como lo tenia antes, el detalle es que no se porque cuando imprimo al principio antes del while el nombre del cliente me resta un registro menos, no se si tenga que reiniciar el rs o algo para que no me reste un registro menos, la consulta esta bien, este es mi code

Código PHP :

$sql = "SELECT f.iduser, f.nombreproducto, f.cantidad, f.precio, f.total, f.status, f.fecha, c.iduser, c.nombre, c.apellido_pat FROM factura AS f JOIN clientes AS c ON (f.iduser = c.iduser) WHERE f.idrefer = '".$_POST['refer']."' ";   
$rs=mysql_query($sql);
$rs1=mysql_fetch_assoc($rs); 
$num_rows = mysql_num_rows($rs);
echo "Nombre:".$rs1['nombre'];
if($num_rows > 0){
      ?>
         <table width="600" cellpadding="0" cellspacing="0" border="0">
         <tr class="renglon">
         <td width="200">Producto</td>
         <td width="200">Cantidad</td>
         <td width="200">Precios</td>
         <tr>
      <?php 
          while ($row=mysql_fetch_assoc($rs)){
         $nameproducto = $row['nombreproducto'];
         $cantidad = $row['cantidad'];
         $precio = $row['precio'];
         ?>
            <tr>
            <td width="200"><?php echo $nameproducto; ?></td>
            <td width="200"><?php echo $cantidad; ?></td>
            <td width="200"><?php echo $precio; ?></td>
            </tr>
           
      <?php } ?>
        </table>
   <?php }
   else {
      echo "No existe la factura";
   }

Espero que me echen cable porque llevo dias que no lo encuentro

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox
Citar            
MensajeEscrito el 02 Mar 2010 03:35 am
Tienes esta línea:

Código PHP :

$rs1=mysql_fetch_assoc($rs);  


Ahí tomas un registro y avanza el puntero, y luego...

Código PHP :

while ($row=mysql_fetch_assoc($rs)){ 


Ahí tomas otro registro y vuelves a avanzar el puntero. El resultado es que el registro que está en $rs1 nunca lo muestras.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Mar 2010 04:31 pm
De acuerdo a lo que dijo DriverOp, dejo la porción de código para que chequees:

Código PHP :

$sql = " 
  SELECT  
    f.iduser, f.nombreproducto, f.cantidad, f.precio, f.total, f.status, f.fecha,  
    c.iduser, c.nombre, c.apellido_pat  
  FROM factura AS f 
  JOIN clientes AS c ON (f.iduser = c.iduser) 
  WHERE f.idrefer = '{$_POST['refer']}' 
";   
$rs = mysql_query($sql);
$rs = mysql_fetch_row($rs);
?>
<?php if (sizeof($rs)>0) { ?>
  <table width="600" cellpadding="0" cellspacing="0" border="0"> 
    <tr class="renglon"> 
      <td width="200">Producto</td> 
      <td width="200">Cantidad</td> 
      <td width="200">Precios</td> 
    <tr>
  <?php foreach ($rs as $row) { ?>
    <tr> 
      <td width="200"><?=$row['nombreproducto']; ?></td> 
      <td width="200"><?=$row['cantidad']; ?></td>
      <td width="200"><?=$row['$precio']; ?></td> 
    </tr> 
<?php } ?>
  </table>
<?php } else { ?>
  <h2>No hay informaci&oacute;n disponible...</h2>
<?php } ?>


... si esto sigue sin dar soluciones, fijate que en

Código PHP :

JOIN clientes AS c ON (f.iduser = c.iduser) 


... realmente exista una relación entre f.iduser = c.iduser

También podés intentar debuggear sacando el " WHERE f.idrefer = '{$_POST['refer']}' ", a ver que resultados arroja.

Espero des con la solución!

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.