I am creating a page to store the information of several disks, which is linked to a phpmyadmin database. Inserting works for me, but when consulting, editing, searching and deleting I do not find the created object well. This is the index_discos.php file:
<html>
<head>
<title>Gestor de discos</title>
<style type="text/css">
<!--input{
font-family:Arial,Helvetica;
font-size:14;
color:#000033;
font-weight:normal;
border-color:#999999;
border-width:1;
background-color:#FFFFFF;
}-->
</style>
</head>
<body bgcolor="#C0C0C0" link="blue" vlink="blue" alink="blue">
<font face="arial,helvetica">
<table border="0" align="center" cellspacing="3" cellpadding="3" width="650">
<tr><th colspan="2" width="100%" bgcolor="blue"><font size="6" color="white">Gestor de Discos</font></th>
</tr></table><p>
<?php
require("discos.php");
$los_discos=new discos();
echo "<center><p>
<table border='0' width='600'><tr>
<td valign=top align=center colspan=2>
<form name='form1' mrthod='post' action=\"index_discos.php?operacion=buscar\">
<font size ='-1'>Buscar por el campo <select name='campo_busqueda'>
<option ";
if((isset($_REQUEST["campo_busqueda"]))&&($_REQUEST["campo_busqueda"]=='titulo')) echo "selected";
echo "Value=titulo>Título</option><option ";
if((isset($_REQUEST["campo_busqueda"]))&&($_REQUEST["campo_busqueda"]=='interprete')) echo "selected";
echo " Value=interprete>Intérprete</option></select>";
if(!isset($_REQUEST["lo_q_busco"])) $_REQUEST["lo_q_busco"]="";
echo "<p><input type='text' name='lo_q_busco' value='".$_REQUEST["lo_q_busco"]."' size='20'>";
echo "<input type='submit' name='boton_buscar' value='Buscar!'>
</font>
</form>
</td><td align=center>
<form name='form2' method='post' action='index_discos.php?operacion=introduce&ver=0&nume=0#ancla'>
<input type='submit' name='alta' value=\"Nuevo disco\">
</form>
<form name='form3' method='post' action='index_discos.php?operacion=listado'>
<input type='submit' name='alta' value='Listado completo'>
</form>
</td>
</tr></table>";
if(isset($_REQUEST["operacion"])){
if($_REQUEST["operacion"]=="listado") $los_discos->buscar("","titulo");
elseif($_REQUEST["operacion"]=="buscar") $los_discos->buscar($_REQUEST["lo_q_busco"],$_REQUEST["campo_busqueda"]);
elseif($_REQUEST["operacion"]=="introduce"){//ventana de alta o edición
if($_REQUEST["ver"]==1) $caption="Datos del disco";
else if($_REQUEST["nume"]>0) $caption="Modificar disco";
else $caption="Alta de nuevo disco";
echo "<p><hr><a name='ancla'></a><font color='blue' size=+1>$caption</font>";
$los_discos->introduce($_REQUEST["nume"],$_REQUEST["ver"]);
}elseif($_REQUEST["operacion"]=="exec_alta"){
if($_REQUEST["titulo"]=="")
echo "<center>No se puede realizar la operación: el campo 'Título' es obligatorio.</center><p>";
elseif($_REQUEST["interprete"]=="")
echo "<center>No se puede realizar la operación: el campo 'Intérprete' es obligatorio.</center><p>";
else{
$los_discos->add_disco($_REQUEST["registro"],$_REQUEST["titulo"],$_REQUEST["interprete"],$_REQUEST["estilo"],$_REQUEST["casa_discografica"],$_REQUEST["formato"],$_REQUEST["duracion"],$_REQUEST["anio"],$_FILES['imagen']);
if($_REQUEST["registro"]>0) $caption="modificado";
else $caption="dado de alta";
echo "<p><center><font color='blue'> Se ha $caption correctamente el disco:<b>".$_REQUEST["titulo"]."</b> del intérprete <b>".$_REQUEST["interprete"]."</b></font></center><p>";
}
}elseif($_REQUEST["operacion"]=="borrar") $los_discos->del_disco($_REQUEST["nume"]);
}else
$los_discos->buscar("","titulo");
?>
</body>
</html>
And this is the disk.php file:
<?php
function boton_ficticio($caption,$url){
return "<table border=1 cellspacing=0 cellpadding=3 bgcolor=black>
<tr>
<td bgcolor='white'>
<font size='-1'>
<a href='$url'>$caption</a>
</font>
</td>
</tr>
</table>";
}
define("SERVIDOR","localhost");
define("USUARIO","root");
define("CLAVE","");
class discos{
protected $db;
function __construct($BD=""){
try{
if($BD!='')
$this->db=new PDO("mysql:host=".SERVIDOR.";dbname=".$BD.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
else
$this->db=new PDO("mysql:host=".SERVIDOR.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
$this->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
$this->db->setAttribute(PDO::NULL_TO_STRING,true);
if($BD==''){
$sql=file_get_contents('bases de datos.sql');
$this->ejecuta_SQL($sql);
}
}catch(PDOException $e){
die("<p><h3>No se ha podido establecer la conexión.
<p>Compruebe si está activado el servidor de bases de
datos MySQL.</h3></p>\n<p>Error: ".$e->getMessage()."</p>\n");
}
}
function __destruct(){
if(isset($db))
$db=null;
}
function add_disco($registro,$titulo,$interprete,$estilo,$casa_discografica,$formato,$duracion,$anio,$imagen){
if(isset($imagen)&&($imagen['size']>0)){
if($imagen['size']>80000)
die("<b>El fichero ocupa más de 80KB o no ha indicado su nombre en el formulario. No puede copiarse.</b>");
if(is_uploaded_file($imagen['tmp_name'])&&!empty($imagen['tmp_name'])){
$tipo_fichero=explode("/",$imagen['type']);
if($tipo_fichero[0]=='image'){
if($registro>0){
$sql_script="SELECT imagen FROM discos WHERE id='$registro'";
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
if($filas==0){
echo "<center>
<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
<tr><td align=center valign=middle>
<font size=+2>No se encuentra ningún registro</font>
</td></tr></table></center>";
}else{
$myrow=$resultado->fetch_row();
if($imagen['name']<>$myrow[0]){
$sql_script="SELECT id FROM discos WHERE imagen='".$myrow[0]."'";
$this->ejecuta_SQL($sql_script);
if($filas==1){
unlink("imagenes/".$myrow[0]);
}
}
}
}
move_uploaded_file($imagen['tmp_name'],'imagenes/'.$imagen['name']);
}else die("<b>Sólo se pueden subir ficheros de tipo imagen.</b>");
}else die("<b>No se puede subir el fichero.</b>");
}
if($registro>0)
$sql_script="UPDATE discos SET
titulo='$titulo',interprete='$interprete',estilo='$estilo',
casa_discografica='$casa_discografica',formato='$formato',
duracion='$duracion',anio='$anio',imagen='".$imagen['name']."'
WHERE id=$registro";
else
$sql_script="INSERT INTO discos
(titulo,interprete,estilo,casa_discografica,formato,duracion,anio,imagen)
VALUES('$titulo','$interprete','$estilo','$casa_discografica','$formato','$duracion','$anio','".$imagen['name']."')";
$this->ejecuta_SQL($sql_script);
$this->buscar("","titulo");
}
function nume_discos(){
$sql_script="SELECT * FROM discos";
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
return $filas;
}
function del_disco($id_to_del){
$sql_script="SELECT imagen FROM discos WHERE id='$id_to_del'";
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
if($filas==0){
echo "<center>
<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
<tr><td align=center valign=middle>
<font size=+2>No se encuentra ningún registro</font>
</td></tr></table></center>";
}else{
$myrow=$resultado->fetch_row();
$sql_script="SELECT id FROM discos WHERE imagen='".$myrow[0]."'";
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
if($filas==1){
unlink("imagenes/".$myrow[0]);
}
}
$sql_script="delete FROM discos WHERE id=$id_to_del";
$this->ejecuta_SQL($sql_script);
$this->buscar("","titulo");
}
function introduce($id_to_edit,$ver){
$campos=array(
0=>array(0=>"titulo",1=>"Título",2=>40,3=>100,4=>""),
1=>array(0=>"interprete",1=>"Intérprete",2=>30,3=>50,4=>""),
2=>array(0=>"estilo",1=>"Estilo",2=>30,3=>50,4=>""),
3=>array(0=>"casa_discografica",1=>"Casa Discográfica",2=>30,3=>50,4=>""),
4=>array(0=>"formato",1=>"Formato (CD/MC)",2=>30,3=>50,4=>""),
5=>array(0=>"duracion",1=>"Duración (min)",2=>3,3=>3,4=>""),
6=>array(0=>"anio",1=>"Año prod.",2=>4,3=>4,4=>""),
7=>array(0=>"imagen",1=>"Imagen",2=>15,3=>-1,4=>""));
if($id_to_edit>0){
$sql_script="SELECT
titulo,interprete,estilo,casa_discografica,formato,duracion,anio,imagen
FROM discos WHERE id='$id_to_edit'";
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
if($filas==0){
echo "<center>
<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
<tr><td align=center valign=middle>
<font size=+2>No se encuentra ningún registro</font>
</td></tr></table></center>";
}else{
$myrow=$resultado->fetch();
for($i=0;$i<count($campos);$i++)
$campos[$i][4]=$myrow[$i];
}
}
if($ver==0)
echo "<form name='form9' enctype=multipart/form-data method='post' action=\"index_discos.php?operacion=exec_alta\">";
echo "<table border='0' cellspacing='10' cellpadding='0' align='center' width='600'>";
for($i=0;$i<count($campos);$i++){
echo "<tr><td bgcolor='blue' align=center width=140>
<font size=-1 color='white'>".$campos[$i][1]."</font>
</td><td>";
if($ver==1){
if($campos[$i][3]>-1) echo "<font size=-1><b>".$campos[$i][4]."</b></font>";
else if($campos[$i][4]<>'') echo "<IMG src='imagenes/".$campos[$i][4].">";
else echo "<font size=-1><b>Sin imagen</b></font>";
}else
if($campos[$i][3]>-1)
echo "<input type='text' name='".$campos[$i][0]."' size='".$campos[$i][2]."' value=\"".$campos[$i][4]."\" maxlength='".$campos[$i][3]."'>";
else
echo "<input type='file' name='".$campos[$i][0]."' size='".$campos[$i][2]."'><input type='hidden' name='MAX_FILE_SIZE' value='80000'>";
echo "</td></tr>";
}//for
echo "</table><center>";
if($ver==0){
echo "<input type='hidden' name='registro' value='$id_to_edit'>";
if($id_to_edit>0)
echo "<input type='submit' name='pulsa' value=\"Modificar disco\">";
else
echo "<input type='submit' name='pulsa' value=\"Alta disco\">";
}
echo "</center>";
if($ver==0) echo "</form>";
}
function buscar($lo_q_busco,$campo_busqueda){
$sql_script="SELECT * FROM discos
WHERE ".$campo_busqueda." like '%".$lo_q_busco."%'
ORDER BY ".$campo_busqueda;
$resultado=$this->ejecuta_SQL($sql_script);
$filas=$resultado->rowCount();
if($filas==0){
echo "<center>
<table border=1 width=650 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
<tr><td align=center valign=center>
<h2>No se encuentra ningún registro</h2>
</td></tr></table></center>";
}else
echo "<table border='0' cellspacing='1' cellpadding='1' align='center' width='650'>
<tr>
<th bgcolor='blue'><font color='white'>Título</font></th>
<th bgcolor='blue'><font color='white'>Intérprete</font></th>
<th bgcolor='blue'><font color='white'>Estilo</font></th>
<th bgcolor='blue'><font color='white'>Casa Disco</font></th>
<th bgcolor='blue' colspan='3'><fontT color='white'>Operaciones</font></th>
</tr>";
while($myrow=$resultado->fetch()){
echo "<tr>
<td><font size='-1'><b>".$myrow[1]."</b></font></td>
<td><font size='-1'><b>".$myrow[2]."</b></font></td>
<td><font size='-1'><b>".$myrow[3]."</b></font></td>
<td><font size='-1'><b>".$myrow[4]."</b></font></td>
<td>".boton_ficticio("Consulta","index_discos.php?operacion=introduce&ver=1&nume=".$myrow[0]."#ancla")."</td>
<td>".boton_ficticio("Editar","index_discos.php?operacion=introduce&ver=0&nume=".$myrow[0]."#ancla")."</td>
<td>".boton_ficticio("Borrar","index_discos.php?operacion=borrar&nume=".$myrow[0])."</td>
</tr>";
}
echo "</table><p>
<table><tr>
<td><font color=blue size='-1'>El nº total de discos es: ".$this->nume_discos()."</font><p></td>
</tr></table>";
}
function ejecuta_SQL($sql){
$resultado=$this->db->query($sql);
if(!$resultado){
echo"<h3>No se ha podido ejecutar la consulta: <pre>$sql</pre><p><u> Errores</u>: </h3><pre>";
print_r($this->db->errorInfo());
die ("</pre>");
}
return $resultado;
}
}
?>