Estoy haciendo un control de inventarios donde obviamente debe de haber altas, bajas y modificaciones de accesorios, consumibles, proveedores etc...
La cuestión es que este tipo de cosas ya las había echo de manera estructurada y pues no tenia ningún problema ya que las variables que deseaba comparar(para hacer una baja de una fila por ejemplo) las enviaba por la URL, para que después la función de eliminar leyera el ID (por ejemplo) e hiciera la pertinente baja del campo con ese ID comparado con el campo de la tabla correspondiente de la base de datos(espero quede claro).
Ahora, estoy migrando funciones similares con algo mas de control, soy principiante y antes quise meterme en MVC de manera estructurada(ya con mas ánimo a OO después de un poco de practica).
Para ello utilizo un index.php para manipular los controladores y sus funciones para cada actividad y que el usuario esté en contacto únicamente con el index.php así, el index.php solicitará al control la información pertinente a cada petición.
Me tope con que las funciones de consulta siguen el mismo patrón, mando llamar todos los datos y los pongo en una tabla, teniendo así opciones de modificar los campos o eliminarlos.
Por ejemplo, y para poder explicarme mejor agrego de esta manera un proveedor:
PROVEEDOR CONTROLADOR:
Código PHP:
function agregarproveedor()
{
require 'modelos/proveedorModelo.php';
//aqui obtengo los datos de un formulario, pero no lo anexo para no hacer largo el post.
$nombre=$_POST['nombre'];
$giro=$_POST['giro'];
$domicilio=$_POST['domicilio'];
$t1=$_POST['tel1'];
$t2=$_POST['tel2'];
$mail=$_POST['mail'];
$ejecuta = insertarProveedor($db,$nombre,$giro,$domicilio,$t1,$t2,$mail);
}
Código PHP:
function insertarProveedor($db,$nombre,$giro,$domicilio,$t1,$t2,$mail)
{
$sql = "INSERT INTO proveedores (nombre,giro,domicilio,telefono1,telefono2,email)
values ('$nombre','$giro','$domicilio','$t1','$t2','$mail')";
$insercion = $db->prepare($sql);
$resultado=$insercion->execute();
if(empty($resultado)){
echo "\nPDOStatement::errorInfo(): \n";
$arr = $db->errorInfo();
print_r($arr);
echo "<br>\nPDOStatement::ERROR CODE(): ";
print $db->errorCode();
echo "<script language=\"javascript\">alert(\"Error al insertar el registro en la base de datos, no se han generado cambios.\")
location.href = \"index.php?controlador=proveedor&accion=listar\";
;</script>";
die();
}
if(isset($resultado)){
echo "<script language=\"javascript\">alert(\"Proveedor agregado con Éxito.\")
location.href = \"index.php?controlador=proveedor&accion=listar\";
;</script>";
}
}
Me direcciona a la parte de mostrar proveedores existentes, que de groso modo y haciendo un SELECT resulta esto:
Código PHP:
<?php
foreach($items as $item)
{
?>
<tr>
<td><?php echo $item['nombre']?></td>
<td><?php echo $item['giro']?></td>
<td><?php echo $item['domicilio']?></td>
<td><?php echo $item['telefono1']?></td>
<td><?php echo $item['telefono2']?></td>
<td><?php echo $item['email']?></td>
//debo aclarar que este es el campo que quiero enviar a la accion de eliminarProv(idproveedor)<?php $item['idproveedor']?>
/* Esto no sirve asi que no le hagan caso, lo pongo para ilustrar un poco.
<td><a href=index.php?controlador=proveedor&accion=actualizar><img src="style/actualizar.png"/></a></td>
<td><a href=index.php?controlador=proveedor&accion=eliminarProv><img src="style/close.png"/></a></td>*/
</tr>
<?php
Si deseo eliminar por ejemplo un proveedor con un ID=3 debo de enviarle a una funcion ese valor, pero como lo hago ya que al insertar el proveedor puedo enviarle los datos por POST ya que es un formulario, pero en este caso no es un formulario, es una tabla de consulta(como la imagen de arriba), como le puedo hacer para que al darle click en la imagen o botón o link(la imagen de la X) le mande a la función el id del proveedor y posteriormente elimine de la base de datos el campo correspondiente?, recordar que por url le paso unicamente al index.php las acciones y el controlador correspondiente de la siguiente manera: index.php?controlador=proveedor&accion=eliminarPro v
Así que, ¿Alguna sugerencia?, muchas gracias por sus respuestas.