Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[PHP] Control de productos
Autor Mensaje
Rodriii Sin conexión
Empleado del buffet
s2
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 13
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jan 2013
Mensaje: #1
[PHP] Control de productos
Para ir familiarizandome con PHP, realize un script demasiado sencillo con MySQL, que es mas que nada para un control de precios. Tiene varias páginas, en la página principal (pagina1.php), se muestra: Un formulario para agregar un nuevo producto, otro formulario para ingresar el nombre de un producto y ver su precio y al final un listado con todos los productos registrados. Les dejo los codes de cada página, si me pueden dar opiniones o consejos para mejorar, sería genial =)

pagina1.php


<html>
<head>
<title>Control de productos - Pagina Principal</title>
</head>
<body>
<h1>Control de Productos</h1>
<hr>
<br>
<form action="registro.php" method="post">
Nombre del producto:
<input type="text" name="nombre"><br>
Precio:
<input type="text" name="precio"><br>
<br>
<input type="submit" value="Registrar">
</form>
<br>
<hr>
<h1>Consulta de un producto</h1>
<hr>
<br>
<form action="consulta.php" method="post">
Ingrese el nombre del producto a consultar:
<input type="text" name="nombre"><br>
<br>
<input type="submit" value="Consultar">
</form>
<br>
<hr>
<h1>Todos los productos</h1>
<hr>
<br>
<?php
$conexion=mysql_connect("localhost","root","")
or die("Problemas en la conexion");

mysql_select_db("base1",$conexion)
or die("Problemas en la selección de la base de datos");

$registros=mysql_query("select nombre,precio
from productos",$conexion) or
die("Problemas en el select:".mysql_error());

while ($reg=mysql_fetch_array($registros))
{
echo "<b><u>Producto:</u></b>".$reg['nombre']."<br>";
echo "<b><u>Precio:</u></b>".$reg['precio']."<br>";
echo "<br>";
echo "<hr>";
}
mysql_close($conexion);
?>
</body>
</html>


registro.php


<html>
<head>
<title>Alta de un producto</title>
</head>
<body>
<h1>Alta de un producto</h1>
<hr>
<br>
<?php
$conexion=mysql_connect("localhost","root","")
or die("Problemas en la conexion");
mysql_select_db("base1",$conexion) or
die("Problemas en la seleccion de la base de datos");
mysql_query("insert into productos(nombre,precio) values
('$_REQUEST[nombre]','$_REQUEST[precio]')",
$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);
echo "El producto fue agregado satisfactoriamente";
?>
</body>
</html>


consulta.php


<html>
<head>
<title>Busqueda de Productos</title>
</head>
<body>
<h1>Busqueda de un Precio</h1>
<hr>
<br>
<?php
$conexion=mysql_connect("localhost","root","") or
die("Problemas en la conexion");

mysql_select_db("base1",$conexion) or
die("Problemas en la selección de la base de datos");

$registros=mysql_query("select precio
from productos where nombre='$_REQUEST[nombre]'",$conexion) or
die("Problemas en el select:".mysql_error());

if ($reg=mysql_fetch_array($registros))
{
echo "<b><u>Precio:</u></b>".$reg['precio']."<br>";
}
else
{
echo "No existe ese producto";
}
mysql_close($conexion);
?>
</body>
</html>


Saludos
23-07-2013 17:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nikod11 Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 791
Agradecimientos dados: 85
Agradecimientos: 473 en 57 posts
Registro en: Mar 2011
Mensaje: #2
RE: [PHP] Control de productos
Yo en la escuela tenia que hacer un proyecto utilizando PHP, pero nunca mas lo toque jajaja.

Capaz estaria bueno, crear funciones auxiliares como por ejemplo: abrirConexion, cerrarConexion, realizarQuery, etc.
23-07-2013 17:29
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rob. Sin conexión
Presidente del CEIT
Smile!
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.145
Agradecimientos dados: 126
Agradecimientos: 83 en 66 posts
Registro en: Dec 2010
Mensaje: #3
RE: [PHP] Control de productos
Está bueno!

Aunque, previo pedido de disculpas por la ignorancia, pero ¿or die? ¿vale eso? yo en ese caso hubiera hecho un "if".
Y en el caso del mysql_connect (ponele), hubiera usado mysqli_connect. Esa "i" extra le daba beneficios, creo que andaba por la estabilidad o el soporte la cuestión...


Acá encontré algo: http://www.php.net/manual/en/mysqli.persistconns.php
el mysqli, si mi inglés no me juega una mala pasada, agrega soporte a conexiones persistentes; parece una boludez pero suma =P

wake me up when september ends!
(Este mensaje fue modificado por última vez en: 23-07-2013 17:54 por rob..)
23-07-2013 17:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #4
RE: [PHP] Control de productos
Cita:¿or die? ¿vale eso?

Si.

Es gracioso cuando tenés una variable llamada "vote", y te queda "vote or die".

Rodrii , te repito la recomendación... create una cuenta en github y subí todas estas cosas!!!

https://github.com/

http://es.wikipedia.org/wiki/Git
23-07-2013 17:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Rodriii Sin conexión
Empleado del buffet
s2
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 13
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jan 2013
Mensaje: #5
RE: [PHP] Control de productos
(23-07-2013 17:58)Imakuni escribió:  
Cita:¿or die? ¿vale eso?

Si.

Es gracioso cuando tenés una variable llamada "vote", y te queda "vote or die".

Rodrii , te repito la recomendación... create una cuenta en github y subí todas estas cosas!!!

https://github.com/

http://es.wikipedia.org/wiki/Git

Uh me re colgue con lo de GitHub jaja. Ya mismo me creo una cuenta, y gracias por los consejos, me sirvieron mucho.
23-07-2013 18:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Jarry Sin conexión
Anomalía de Belady
I know teh codez
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.007
Agradecimientos dados: 188
Agradecimientos: 259 en 98 posts
Registro en: May 2008
Mensaje: #6
RE: [PHP] Control de productos
(23-07-2013 17:45)rob. escribió:  Está bueno!

Aunque, previo pedido de disculpas por la ignorancia, pero ¿or die? ¿vale eso? yo en ese caso hubiera hecho un "if".

Y en el caso del mysql_connect (ponele), hubiera usado mysqli_connect. Esa "i" extra le daba beneficios, creo que andaba por la estabilidad o el soporte la cuestión...


el or die es un cortocircuito
es casi lo mismo que hacer "operacion() || die();"
la idea es que si operacion() es true, ya no hace falta hacer la segunda parte, y ese codigo nunca se ejecuta.

te recomendaria que uses mysqli, ya que mysql esta deprecada, y va a volar en algun momento. ademas de todos los beneficios que trae:
http://ar2.php.net/manual/en/mysqlinfo.api.choosing.php

No estoy necesariamente de acuerdo con lo que dice en el post de arriba
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
23-07-2013 18:05
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Cloud Sin conexión
Empleado de Fotocopiadora
A punto de estallar.
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 42
Agradecimientos dados: 7
Agradecimientos: 7 en 5 posts
Registro en: May 2011
Mensaje: #7
RE: [PHP] Control de productos
No se si todavía sirve de algo, pero como te dijeron mejor usar mysqli y bindear variables.

Aparte meter lógica de negocios mezclda con los modelos en el medio de las vistas es algo que no te recomiendo ni para ejercicio didactico.
03-09-2013 23:44
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
verne Sin conexión
Militante
Así soy yo
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 76
Agradecimientos dados: 8
Agradecimientos: 14 en 8 posts
Registro en: Oct 2013
Mensaje: #8
RE: [PHP] Control de productos
Yo hace un par de años que me peleo con PHP y hace rato que no armo códigos planos sin frameworks. Mi sugerencia a priori sería separar en archivos el html de la lógica PHP. Como bien dijo Cloud, no es recomendable mezclar las vistas con los modelos. Como defensor del MVC mi sugerencia sería tener, a falta de un framework, mínimamente separado el modelo de datos (estructuras de tablas, consultas, etc) de la vista (HTML) y de la lógica de procesos (algoritmos, librerías, etc).
PHP es un lenguaje poco elegante, de modo que es mérito tuyo lograr que esté entedible y ordenado.

Abrazote.

Volverte loco es síntoma de la enfermedad del progreso.
23-10-2013 16:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Nimix Sin conexión
Secretario de la SAE
Trust me, I'm Engineer
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 423
Agradecimientos dados: 36
Agradecimientos: 272 en 62 posts
Registro en: Apr 2011
Mensaje: #9
RE: [PHP] Control de productos
Si lo que estás haciendo es algo que va a ser productivo posta, NUNCA metas en una query directamente los datos que recibas del Request porque eso da lugar a SQL Injection (o inyección SQL).
En tu caso en particular lo que podés hacer es 'escapar' los parámetros de las queries usando mysql_real_escape_string(), algo así ponele:



<?php
$conexion=mysql_connect("localhost","root","") or die("Problemas en la conexion");
mysql_select_db("base1",$conexion) or die("Problemas en la seleccion de la base de datos");
$query = "insert into productos(nombre,precio) values ('" .
mysql_real_escape_string($_REQUEST['nombre']) . "','" .
mysql_real_escape_string($_REQUEST['precio']) . "')";
mysql_query($query, $conexion) or die("Problemas insertando data en la base: " . mysql_error());
mysql_close($conexion);
echo "El producto fue agregado satisfactoriamente";
?>




Con eso zafás de que en el request te metan algo tipo "1', '1'); drop database 'base1'" y te boleteen la base de datos (entre otras cosas).
Tené en cuenta que probablemente necesites parsear antes los datos del request para validar que sean numéricos, etc.

Otra sugerencia sería que abstraigas un poco la conexión a la base de datos y la lógica de negocios. Lo ideal es usar como dijeron algún framework de MVC o cosas parecidas, una buena opción es Codeigniter, que viene con varias cosas ya resueltas y te va a simplificar la vida a la hora de programar. Igualmente si recién estás empezando está bueno que hagas todo 'a pedal' hasta que encuentres vos mismo la necesidad de separar las cosas en diferentes capas, eso lo irás manejando con el tiempo =)
(Este mensaje fue modificado por última vez en: 23-10-2013 17:22 por Nimix.)
23-10-2013 17:21
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Agro Sin conexión
Presidente del CEIT
Su marca puede estar aquí
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 6.760
Agradecimientos dados: 252
Agradecimientos: 888 en 293 posts
Registro en: Jul 2008
Facebook Twitter
Mensaje: #10
RE: [PHP] Control de productos

Off-topic:
Html y queries en el mismo archivo?
[Imagen: 24693-c30bf601b7718c74106472c40bdedae0.jpg]

[Imagen: digitalizartransparent.png]
24-10-2013 00:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)