Foros del Web » Programando para Internet » PHP »

Hola. Tengo una dudita con SQL y PHP

Estas en el tema de Hola. Tengo una dudita con SQL y PHP en el foro de PHP en Foros del Web. Hola, soy nuevo en el foro. Y recien iniciado en PHP. Tengo un libro de php, y aprendo de hay. Pero la cosa ahora, es ...
  #1 (permalink)  
Antiguo 14/04/2006, 16:42
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
Pregunta Hola. Tengo una dudita con SQL y PHP

Hola, soy nuevo en el foro. Y recien iniciado en PHP. Tengo un libro de php, y aprendo de hay. Pero la cosa ahora, es algo que no esta en el libro.
Bueno, lo que yo quiero hacer, es insertar varios ids de productos... eh.... imprimirlos en otra hoja, con una formato de boleta/factura/ticket no se como lo llaman. lo que necesito es la funcion de imprimir, y ademas, necesito mostrar los productos referentes a los ids ingresados anteriormente. si algien puede ayudarme y si pueden dejarme el script. se los agradeceria muchisimo. en serio.

Última edición por jam1138; 14/04/2006 a las 19:45
  #2 (permalink)  
Antiguo 14/04/2006, 17:16
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Si se quiere mostrar los resultados en otra página web puedes usar echo, print o print_r.

Si se quiere imprimir los resultados en papel, mediante la impresora, es un poco más complicado ya que debes añadir la funcionalidad a la configuración de PHP.
Extraído del manual de PHP:
Cita:


CXVII. Printer Functions
Introducción
These functions are only available under Windows 9.x, ME, NT4 and 2000. They have been added in PHP 4.0.4.

Instalación
This PECL extension is not bundled with PHP.

Windows users must enable php_printer.dll inside of php.ini in order to use these functions. You may obtain this unbundled PECL extension from the various PECL snaps pages (select the appropriate repository for your version of PHP): PECL for PHP 4.3.x, PECL for PHP 5.0.x or PECL Unstable.

Configuración en tiempo de ejecución
El comportamiento de estas funciones está afectado por los valores definidos en php.ini.


Tabla 1. Printer configuration options

Name Default Changeable Changelog
printer.default_printer "" PHP_INI_ALL

For further details and definitions of the PHP_INI_* constants, see the Apéndice G.

Tabla de contenidos
printer_abort -- Deletes the printer's spool file
printer_close -- Close an open printer connection
printer_create_brush -- Create a new brush
printer_create_dc -- Create a new device context
printer_create_font -- Create a new font
printer_create_pen -- Create a new pen
printer_delete_brush -- Delete a brush
printer_delete_dc -- Delete a device context
printer_delete_font -- Delete a font
printer_delete_pen -- Delete a pen
printer_draw_bmp -- Draw a bmp
printer_draw_chord -- Draw a chord
printer_draw_elipse -- Draw an ellipse
printer_draw_line -- Draw a line
printer_draw_pie -- Draw a pie
printer_draw_rectangle -- Draw a rectangle
printer_draw_roundrect -- Draw a rectangle with rounded corners
printer_draw_text -- Draw text
printer_end_doc -- Close document
printer_end_page -- Close active page
printer_get_option -- Retrieve printer configuration data
printer_list -- Return an array of printers attached to the server
printer_logical_fontheight -- Get logical font height
printer_open -- Open connection to a printer
printer_select_brush -- Select a brush
printer_select_font -- Select a font
printer_select_pen -- Select a pen
printer_set_option -- Configure the printer connection
printer_start_doc -- Start a new document
printer_start_page -- Start a new page
printer_write -- Write data to the printer
  #3 (permalink)  
Antiguo 14/04/2006, 19:22
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
Pregunta No....

Eso no es lo que yo quiero.... lo de imprimir en papel... ya lo tengo... Lo que quiero... es mostrar los resultados de una consulta (mejor varias)
por ejemplo... el usuario ingresa 6 ids de productos... entonces el programa, en una hoja aparte, debe mostrarle dichos ids con respectiva info (producto, precio, marca,etc) eso es lo que yo quiero
....
....
Osea, un sistema de busqueda
pero que busque varias cosas y que imprima varias cosas....

gracias de antemano....
  #4 (permalink)  
Antiguo 14/04/2006, 19:46
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
hola de nuevo
miren el codigo de donde deben aparecer los items a agregar es este
Cita:
<HTML>
<HEAD>
<TITLE>Sistema de Productos de Patagonia Informatica</TITLE>
<style type="text/css">
<!--
.Estilo1 {
color: #FFFFFF;
font-family: Geneva, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 12px;
}
.Estilo2 {
font-size: 12px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.total {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: normal;
color: #000000;
border: 1px dotted #000000;
text-align: center;
vertical-align: middle;
}
a:link {
color: #000000;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #000000;
}
a:hover {
text-decoration: underline;
color: #000000;
}
a:active {
text-decoration: none;
color: #000000;
}
.Estilo4 {color: #FFFFFF}
body {
background-image: url(bg.gif);
margin-left: 100px;
margin-top: 50px;
}
total {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;
background-color: #FFFFFF;
border: 1px dotted #00FFFF;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="total2.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Estilo6 {font-size: 36px; font-family: Geneva, Arial, Helvetica, sans-serif; }
.Estilo8 {font-size: 12px; font-family: Geneva, Arial, Helvetica, sans-serif; color: #000000; }
.Estilo9 {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-style: italic;
font-weight: bold;
font-size: 12px;
}
-->
</style>
<link href="nuevo.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Estilo11 {color: #000000}
-->
</style>
</HEAD>
<BODY>
<table width="938" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="totales">
<!--DWLayoutTable-->
<tr>
<td width="930" height="60" valign="middle"><div align="center" class="Estilo6">Sistema de Consultas de Patagonia Informatica </div></td>
</tr>
<tr>
<td height="445" valign="top"><?
$link=mysql_connect ("localhost","root");
mysql_select_db ("patagonia",$link);
$result = mysql_query("SELECT * FROM consultas2 WHERE ID = '$id'");
$result1 = mysql_query("SELECT * FROM consultas2 WHERE ID = '$id1'");
?>
<table width="887" align="center" class="total">
<!--DWLayoutTable-->
<tr>
<th width="76" height="17" valign="top" bgcolor="#000000"><span class="Estilo4"><strong>ID</strong></span></th>
<th width="248" align="center" valign="middle" bgcolor="#333333"><span class="Estilo1">Descripcion</span></th>
<th width="119" align="center" valign="middle" bgcolor="#666666"><span class="Estilo1">Marca</span></th>
<th width="81" valign="top" bgcolor="#999999" ><span class="Estilo4">Precio</span></th>
<th width="342"></th>
</tr>
<?

//Mostramos los registros
while ($row=mysql_fetch_array($result and $result1))
{
echo '<tr><td>'.$row["ID"].'</td>';
echo '<td>'.$row["Descripcion"].'</td>';
echo '<td>'.$row["Marca"].'</td>';
echo '<td>' .$row["Precio"].'</td>/tr>';
}
mysql_free_result($total)
?>
</table>

</td>
</tr>
</table>
</BODY>
</HTML>
  #5 (permalink)  
Antiguo 14/04/2006, 20:10
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
El usuario ingresará sus productos en un formulario, en tu código no veo que estés procesando el $id o el $id1 de un formulario.

Cuando llenas un form, los valores que el usuario selecciona lo puedes encontrar en la matriz $_POST
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #6 (permalink)  
Antiguo 15/04/2006, 06:42
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
si lo hago.. mira...
en las variables $result $result1...
son mysql_query.... pero yo quiero mostrar en una tabla estas dos querys...
gracias..
  #7 (permalink)  
Antiguo 15/04/2006, 06:52
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Se ve bastante raro usar: mysql_fetch_array($result and $result1)

pues la definición de mysql_fetch_array es:

array mysql_fetch_array ( int id_resultado [, int tipo_de_resultado] )

O sea que ese 'and' parece que no tiene nada que hacer ahí.

En su lugar prueba con esto:

Código PHP:
//
        
$result mysql_query("SELECT * FROM consultas2 WHERE ID = $id OR ID = $id1 "); 
Ahora en un sólo $result tienes el resultado de ambos queries.

Otra manera de hacer la consulta:

Código PHP:
//
        
$result mysql_query("SELECT * FROM consultas2 WHERE ID IN ($id,$id1)"); 
Nota, le quité las comillas a los $id, $id1 porque supuse que eran formato numérico, imagino que INT, así que al no ser un string, es mejor dejarlos sin comillas.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 15/04/2006, 07:45
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
uamistad... me resolviste el problema... pero salgo de un problema, y tengo otros 2. que son los siguientes:
1) no me deja mostrar dos veces el mismo id.... no se porq... pero tampoco puedo arreglar eso.... este es un problema....
2) esto no creo que sea un problema... pero a este libro, no puedo hablarle y consultarle que hacer... jeje... lo que quiero hacer....es que sume el precio de todos los ids.... supongamos... pongo 5 ids.... que me muestre la suma del precio de los 5 ids....

hasta ahora.... ustedes me han sido una gran ayuda.... se los agradeceria si pueden ayudarme una vez mas...
  #9 (permalink)  
Antiguo 15/04/2006, 07:57
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
me parece que ya se que hacer
pondre una variable dentro del while
para que sume las rows PrecioC
voy a ver q sale....
  #10 (permalink)  
Antiguo 15/04/2006, 08:00
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Cita:
pero a este libro, no puedo hablarle y consultarle que hacer...
Jaja, sí, eso pasa. Lo bueno que te decidiste a programar en PHP, pues es uno de los lenguajes que tiene mayor comunidad de ayuda como esta en internet. Cuando puse mi primer mensaje aquí sabía menos que tú.

Para mostrar una suma, usa la función de suma:

$result = mysql_query("SELECT SUM(Precio) FROM consultas2 WHERE ID = $id");


La primera pregunta sinceramente no la entendí,
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #11 (permalink)  
Antiguo 15/04/2006, 08:12
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
jejne

la primera pregunta era.... como ago para mostrar dos veces el mismo id... yo pongo dos veces y me muestra uno.... y otra cosa.... supongamos... yo quiero ingresar 5 ids... pero somo me muestra 3.... si pongo cuatro o cinco,,,, me tira un error de fetch array.. ayuda!! porfa...

y probe
lo de sum
pero de resultado me tira Resource id #6

deben pensar que soy un rompebol*s
  #12 (permalink)  
Antiguo 15/04/2006, 08:19
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
lo de la suma esta resulto
dentro del while puse esto
$total = $total + $row["PrecioC"];
ahora me falta resolver que me muestra varias veces un producto y que me muestre mas de 3
  #13 (permalink)  
Antiguo 15/04/2006, 08:23
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Qué onda compa, ¿cómo haces la consulta para que te muestre varias veces el id? Es que sigo sin entender.

Ahhh y con respecto a la suma, está bien lo que hiciste porque al menos funciona, pero estás desaprovechando la potencia del motor de base de datos. En general se suele dejar a la base de datos la mayor cantidad de trabajo posible y una suma es algo que una DB hace de forma más eficiente que un while en PHP.

¿Qué vas a hacer cuando necesites ordenar los resultados? Sería una locura meterlos en un array de PHP para luego ordenarlos por el método de la burbuja =)

Hay que aprovechar la potencia de MySQL hasta donde sea posible hacerlo.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #14 (permalink)  
Antiguo 15/04/2006, 08:33
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
Bueno.... ponele... si yo vendo 2 mouse.... que en la otra hoja.... luego de que yo inserte en dos campos diferentes el id del mouse ( el mismo id ) y que luego... en la hoja siguiente.... me muestre dos veces el mouse.... por que lo inserte dos veces al id del mouse... entendes????
ahora..... tambien trate de hacer dos whiles... que uno me muestre las ids numero 1 hasta el 4, y que la otra de 5 a 8.... pero no me funka....
  #15 (permalink)  
Antiguo 15/04/2006, 08:41
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
che... ya arregle los de mostrar muchas ids (diferentes...) ahora lo que me falta arreglar es poder mostrar 2 veces el mismo articulo
  #16 (permalink)  
Antiguo 15/04/2006, 09:11
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Creo que seguimos sin hablar el mismo idioma, =)

Mira, me parece que tienes una tabla así:

ARTICULO (TABLA)
id
nombre
descripcion
marca
precio

Le agregué el campo nombre porque parece que no lo tenías. Y era necesario para poder decir que se trataba de un mouse.

El id lo tienes numérico, ¿cierto? Entonces por lo que entiendo metiste dos mouse diferentes, quiza de diferentes marcas o con diferentes descripciones, pero de que tienen que ser diferentes seguramente tienen que serlo.

Ahora, si un cliente compra dos mouse, eso ya no corresponde a la tabla ARTICULO, corresponderá a otra tabla, llámale COMPRAS por ejemplo.

Y para mostrar todo lo que metas en compras, pues igual que antes:

"SELECT * FROM compras"
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #17 (permalink)  
Antiguo 15/04/2006, 09:13
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
no ya asta
lo arregle
gracias de antemano
  #18 (permalink)  
Antiguo 15/04/2006, 09:31
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
podes arreglarme esto uamigo

podes arreglarme este link

rapidshare.de/files/18074914/arreglo.txt.html
  #19 (permalink)  
Antiguo 15/04/2006, 09:47
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
No se ve raro el código.

Cuando haces scripts que te dan errores de DB, conviene asegurarse de que la llamada la sentencia SQL está hecha de forma correcta.

Aunque la tuya lo parece:
"SELECT * FROM consultas2 WHERE ID IN ($id,$id1,$id2,$id3,$id7,$id6,$id5,$id4)"

Podría ser que alguno de los id's no tuviera valor por ejemplo y eso ocasionaría que te tirara un error el fetch_array.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #20 (permalink)  
Antiguo 15/04/2006, 09:48
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Prueba usar sólo un $id.

Si funciona, mete el siguiente, $id1

Si funciona, mete el siguiente, $id2

y así hasta terminar, de esa manera puedes saber en dónde te está dando el error.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #21 (permalink)  
Antiguo 15/04/2006, 11:43
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
ya sta

ya pude

ahora
tengo otra consulta
como ago para que php
que haga un backup de la base de datos
se que es mysqldump
pero como se usa
cual es la funcion en php? tengo mysql 4.1
  #22 (permalink)  
Antiguo 15/04/2006, 11:51
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
mysqldump se usa desde una ventana de comandos.

Por ejemplo si estás es Win te vas a tu carpeta de mysql\bin yo acostumbro:

Código:
cd c:\appserv\mysql\bin (me muevo a este nivel)

mysqldump -u root --opt mibasededatos > convertida.sql

Más opciones mysqldump se pueden ver aquí.

Sin embargo no es la única forma de respaldar, puede ser desde phpMyAdmin o cualquier manejador y te puede respaldar en varios formatos. CSV es muy popular también. Chécalo, suerte !
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #23 (permalink)  
Antiguo 15/04/2006, 12:27
 
Fecha de Ingreso: abril-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
mysqldump me funciona gracias....
todavia no puedo resolver lo de mostrar dos veces el mismo producto
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:35.