Foros del Web » Programando para Internet » PHP »

Código de Examinar, Editar y Eliminar registros

Estas en el tema de Código de Examinar, Editar y Eliminar registros en el foro de PHP en Foros del Web. Tengo el siguiente código: Código PHP: echo  "<table>" ;         echo  "<tr>" ;         echo  "<td valign='top'>" ;         echo  "<table width='100%' cellpadding='2' cellspacing='2' border='0' class='forumline' align='center'>" ;         echo  "<tr class='encabeza' valign='middle'>" ;         echo  "<td width='120' align='center'>Tabla</td>" ;         echo  ...
  #1 (permalink)  
Antiguo 25/05/2009, 08:07
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Código de Examinar, Editar y Eliminar registros

Tengo el siguiente código:

Código PHP:
echo "<table>";
        echo 
"<tr>";
        echo 
"<td valign='top'>";
        echo 
"<table width='100%' cellpadding='2' cellspacing='2' border='0' class='forumline' align='center'>";
        echo 
"<tr class='encabeza' valign='middle'>";
        echo 
"<td width='120' align='center'>Tabla</td>";
        echo 
"<td width='80' align='center' colspan='3'>Acci&oacute;n</td>";
        echo 
"</tr>";
        
        
$sql="show table status from dpswd where name!='funcion' and name!='habilidad' and name!='portada' and name!='notas' and name!='resp_consul'";
        
$result=mysql_query($sql,$link);
        
$colorfondo='#E9E9E9';
        while ( 
$mrow=mysql_fetch_object($result) )
        {
         if (
$colorfondo=='#F6f6f6'$colorfondo='#E9E9E9'; else $colorfondo='#F6f6f6';
         
$tablas=$mrow->Name;
         
$registros=$mrow->Rows;
         
$id=$tablas;
         echo 
"<tr valign='middle' onMouseOut=\"this.bgColor='$colorfondo';\" onMouseOver=\"this.bgColor='#FAD29F';\" bgcolor='$colorfondo'>";
         echo 
"<td width='120' align='left' class='tablas'><b>$tablas</b></td>";
         echo 
"<td align='center'><a href='".$_SERVER['PHP_SELF']."?examinar&tabla=$tablas'><img src='images/examinar.gif' border='0' alt='Examinar' title='Examinar'></a></td>";
         echo 
"<td align='center'><a href='".$_SERVER['PHP_SELF']."?insertar&$tablas'><img src='images/insertar.gif' border='0' alt='Insertar' title='Insertar'></a></td>";
         echo 
"<td align='center'><a href='".$_SERVER['PHP_SELF']."?vaciar&$tablas'><img src='images/vaciar.gif' border='0' alt='Vaciar' title='Vaciar'></a></td>";
         echo 
"</tr>";
        }
        
        echo 
"</table>";
        echo 
"</td>";
        echo 
"</tr>";
     
     echo 
"</table>"
Este código, me muestra algunas tablas de mi base datos, además tiene unas opciones de: Examinar, Insertar y Vaciar. Estoy trabajando sobre la opción examinar, por lo que toda la idea va a estar encaminada hacia esa opción, (para que no pierdan mi objetivo). Cuando doy clic en examinar, me muestra la tabla con sus registros y cada registro tiene 2 opciones: Editar y Eliminar.

El código de examinar es el siguiente:

Código PHP:
echo "<tr>";
echo 
"<td valign='top' colspan='2'>";
echo 
"<table cellpadding='1' cellspacing='1' border='0' class='forumline'>";
echo 
"<tr class='encabeza' valign='middle'>";
echo 
"<td align='center'></td>";
$sql="select * from dpswd.$tabla limit $desde, $cantidadlinea";
$result mysql_query($sql,$link);
$campos mysql_num_fields($result);
 for (
$j=1$j<$campos$j++)
{  
 
$nombre mysql_field_name($result,$j);
 echo 
"<td align='center' valign='middle'>";
 echo 
"<a href='".$_SERVER['PHP_SELF']."?desc&nombre=$nombre&examinar&tabla=$tabla' class='orden' title='Ordenar descendentemente'><img src='images/desc.gif' border='0'></a>&nbsp;$nombre&nbsp;";
 echo 
"</td>";

echo 
"</tr>";
$colorfondo='#E9E9E9';
for (
$i=0;$i<mysql_num_rows($result);$i++)
{
 if (
$colorfondo=='#F6f6f6'$colorfondo='#E9E9E9'; else $colorfondo='#F6f6f6';
 echo 
"<tr valign='top' onMouseOut=\"this.bgColor='$colorfondo';\" onMouseOver=\"this.bgColor='#FAD29F';\" bgcolor='$colorfondo'>";
 echo 
"<td valign='top'>";
 echo 
"<table width='100%' cellpadding='2' cellspacing='1' border='0'>";
 echo 
"<tr align='center' valign='top'>";
 echo 
"<td><a href='".$_SERVER['PHP_SELF']."?editar&tabla=$tabla&lolo=$nombre' title='Editar'><img src='images/editar.gif' border='0'></a></td>";
 echo 
"<td><a href='".$_SERVER['PHP_SELF']."?eliminar' title='Borrar'><img src='images/eliminar.gif' border='0'></td>";
 echo 
"</tr>";
 echo 
"</table>";
 echo 
"</td>";
 for (
$k=1;$k<$campos;$k++)
{          
 
$uno=substr(mysql_result($result$i$k),0,40);
 
$cadena=strtok($uno,".");
 
$cadena2=htmlspecialchars($cadena);
 echo 
"<td style='font-size:11px'>$cadena2</td>";
}
echo 
"</tr>";
}

}
echo 
"</table";
echo 
"</td>";
echo 
"</tr>"
Hasta aquí casi todo bien, pero los problemas empiezan cuando voy a Editar pues debe decirle que registro es el que quiero Editar, pero no se como darle un valor calve de un registro determinado.

El código de edición que tengo hasta el momento es:

Código PHP:
$sql="SHOW COLUMNS FROM $tablas";
$result mysql_query($sql,$link);
echo 
"<tr><td colspan='2' class='encabeza'>Editando $tablas</td></tr>";
while (
$row mysql_fetch_assoc($result)) {
$campos=$row;

echo 
"<tr>";
echo 
"<td align='right' valign='top'>".$campos['Field'].":&nbsp;</td>";
echo 
"<td>";
if ( 
$campos['Key']==MUL ) {
$campo_foraneo $campos['Field'];
$sql="SELECT CONCAT( referenced_table_name) AS tabla_referencia FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'dpswd' AND REFERENCED_TABLE_NAME IS NOT NULL AND COLUMN_NAME = '$campo_foraneo' ORDER BY TABLE_NAME, COLUMN_NAME"$result=mysql_query($sql,$link);
$cols=mysql_fetch_object($result);
$tabla=$cols->tabla_referencia
         
$sql="select $campo_foraneo from dpswd.$tabla";
$result=mysql_query($sql,$link);
echo 
"<select name='".$campos."'>";
echo 
"<option>- - - </option>";
while ( 
$select=mysql_fetch_assoc($result) ){
$select_campo=$select;
echo 
"<option value='".$select_campo[$campo_foraneo]."'>".$select_campo[$campo_foraneo]."</option>";
}
echo 
"</select>";
        
}elseif( 
$campos['Type']==longtext )
{
echo 
"<textarea name='".$campos['Field']."' cols='50' rows='4'></textarea>";
}else{
 if ( 
$campos['Key']==PRI 
{
echo 
"valor del id";
}else{
echo 
"<input type='text' name='".$campos['Field']."' value='' />";
}
}
echo 
"</td>";
echo 
"</tr>";
}
echo 
"<tr><td></td><td align='left'><input type='submit' name='guardar' value='Guardar'></td></tr>"
El otro detalle esta en que cuando quiero editar un registro por ejemplo: la tabla usuarios, en ella esta el campo foraneo id_funcion, que viene de la tabla funcion, el select me muestra el número de cada registro de la tabla funcion, sin embargo lo que quiero es que me salgan las funciones y no los números de cada función.
  #2 (permalink)  
Antiguo 25/05/2009, 09:07
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Código de Examinar, Editar y Eliminar registros

pole un identificador para que pueddas editar y mostrar los datos.

Código PHP:
<a href='".$_SERVER['PHP_SELF']."?editar=".$row['id_funcion']."&$tabla&lolo=$nombre' title='Editar'><img src='images/editar.gif' border='0'></a
algo asi seria.

saludos.
  #3 (permalink)  
Antiguo 25/05/2009, 10:32
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Respuesta: Código de Examinar, Editar y Eliminar registros

El asunto esta en que no se como darle el identificador que sale de la primera consulta, para pasarselo a la variable editar. Este identificador tiene que ser algo global, pues depende de la tabla con la que este trabajando.


Código:
$sql="select * from dpswd.$tabla limit $desde, $cantidadlinea";
		 $result = mysql_query($sql,$link);
		 //echo $sql;
		 $campos = mysql_num_fields($result);
		 for ($j=1; $j<$campos; $j++)
         {  
		  $nombre = mysql_field_name($result,$j);
          echo "<td align='center' valign='middle'>";
		  echo "<a href='".$_SERVER['PHP_SELF']."?desc&nombre=$nombre&examinar&tabla=$tabla' class='orden' title='Ordenar descendentemente'><img src='images/desc.gif' border='0'></a>&nbsp;$nombre&nbsp;";
		  echo "</td>";
         }
         echo "</tr>";
		
		$colorfondo='#E9E9E9';
		 for ($i=0;$i<mysql_num_rows($result);$i++)
         {
          if ($colorfondo=='#F6f6f6') $colorfondo='#E9E9E9'; else $colorfondo='#F6f6f6';
		  echo "<tr valign='top' onMouseOut=\"this.bgColor='$colorfondo';\" onMouseOver=\"this.bgColor='#FAD29F';\" bgcolor='$colorfondo'>";
          echo "<td valign='top'>";
		  echo "<table width='100%' cellpadding='2' cellspacing='1' border='0'>";
		  echo "<tr align='center' valign='top'>";
		  echo "<td><a href='".$_SERVER['PHP_SELF']."?editar&tabla=$tabla&lolo='".$row['id_funcion']."' title='Editar'><img src='images/editar.gif' border='0'></a></td>";
		  echo "<td><a href='".$_SERVER['PHP_SELF']."?eliminar' title='Borrar'><img src='images/eliminar.gif' border='0'></td>";
		  echo "</tr>";
		  echo "</table>";
		  echo "</td>";
		  for ($k=1;$k<$campos;$k++)
          {          
		   $uno=substr(mysql_result($result, $i, $k),0,40);
		   $cadena=strtok($uno,".");
		   $cadena2=htmlspecialchars($cadena);
		   echo "<td style='font-size:11px'>$cadena2</td>";
          }
          echo "</tr>";
         }
de que parte del código saco el valor, del azul o el verde, en el azul estoy mostrando el encabezado de las tablas, y en el verde los registros por encabezado.

Última edición por boy-computer; 25/05/2009 a las 10:40 Razón: Texto con formato equivocado
  #4 (permalink)  
Antiguo 25/05/2009, 11:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Código de Examinar, Editar y Eliminar registros

Conforme a lo que entendi, si lo que tu quieres es editar un registro en especifico, lo primero que viene a mi mente es si creaste un ID que fuera autoincrement. Si es así lo unico que tienes que hacer al valor de editar es esto


Código PHP:
$sql="select * from dpswd.$tabla limit $desde, $cantidadlinea";
         
$result mysql_query($sql,$link);
         
//echo $sql;
         
$campos mysql_num_fields($result);
while(
$row mysql_fetch_assoc($sql)){

echo 
"<a href='editar.php?ID=".$row["ID"].>editar</a>"


Cuando vayas a enviar la información lo unico que tienes que hacer es en el query "WHERE ID = '".$_GET["ID"]."'

Si no es eso por favor podrías explicar mejor a que te refieres con identificador
  #5 (permalink)  
Antiguo 25/05/2009, 14:50
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Código de Examinar, Editar y Eliminar registros

Colega casi estoy donde quiero, pero tengo una duda, te pongo el código que he hecho hasta el momento y te explico, además le puse a todas mi tablas un id de la forma id_nombretabla.

Código PHP:
$sql="select * from dpswd.$tabla limit $desde, $cantidadlinea";
$result mysql_query($sql,$link);

while ( 
$row mysql_fetch_assoc($result) )
{
 
$identifica=$row;
 
$id=$identifica['id_'.$tabla.''];
}

       for (
$i=0;$i<mysql_num_rows($result);$i++)
         {
         echo 
"<tr valign='top'>";
          echo 
"<td valign='top'>";
    echo 
"<table cellpadding='2' cellspacing='1' border='1'>";
    echo 
"<tr align='center' valign='top'>";
    echo 
"<td><a href='".$_SERVER['PHP_SELF']."?editar&tabla=$tabla&id=$id' title='Editar'></a></td>";
    echo 
"<td><a href='".$_SERVER['PHP_SELF']."?eliminar' title='Borrar'><img src='images/eliminar.gif' border='0'></td>";
    echo 
"</tr>";
    echo 
"</table>";
          
           echo 
"</td>";                
           for (
$k=1;$k<$campos;$k++)
           {          
    
$uno=substr(mysql_result($result$i$k),0,40);
    
$cadena=strtok($uno,".");
     
$cadena2=htmlspecialchars($cadena);
    echo 
"<td style='font-size:11px'>$cadena2</td>";
          }
          echo 
"</tr>";
         } 
Con las líneas:
Código PHP:
while ( $row mysql_fetch_assoc($result) )
{
 
$identifica=$row;
 
$id=$identifica['id_'.$tabla.''];

Logro que me de el número id que le corresponde a cada registro en dependencia de la tabla con la que este trabajando, pero tengo un problema, cuando pongo:

Código PHP:
echo "<td><a href='".$_SERVER['PHP_SELF']."?editar&tabla=$tabla&id=$id' title='Editar'></a></td>"
lo que hace es asignarle a cada último registro, el último id encontrado, es decir, no recorre un ciclo asignando id.

Mi pregunta es, como acomodo el while dentro del for, para que de correctamente la asignación de los id.
  #6 (permalink)  
Antiguo 25/05/2009, 15:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Código de Examinar, Editar y Eliminar registros

Cada vez que corre el while esta sobre escribiendo la variable

Ejemplo

Código PHP:
while ( $row mysql_fetch_assoc($result) ) 

 
$identifica=$row
 
$id=$identifica['id_'.$tabla.'']; 

lo que le esta diciendo al interpretador yo quiero que me asignes una valor a la variable $id esto lo hace la primera vez pero luego en la segunda le vuelves a decir yo quiero que me asignes a la variable $id este valor y sigue asi sucesivamente hasta que encuentra la ultima, entonces lo que estas haciendo es asignarle siempre el ultimo valor, por lo tanto para poder asignar diferentes variables a los diferentes valores tienes que crear un array de la forma como yo lo haría es


Código PHP:
while ( $row mysql_fetch_assoc($result) ) 

 
$identifica=$row
 
$id[]=$identifica['id_'.$tabla.'']; 


Ahora todos las variables van a tener diferentes valores

Me avisas si no sabes como trabajar con este array
  #7 (permalink)  
Antiguo 25/05/2009, 15:29
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Código de Examinar, Editar y Eliminar registros

Colega me da este error :

Cita:
Fatal error: [] operator not supported for strings in panel.php on line 491
Además, como le paso el valor en el link.
  #8 (permalink)  
Antiguo 25/05/2009, 15:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Código de Examinar, Editar y Eliminar registros

que hay en las lineas desde la 490 a la 492?
  #9 (permalink)  
Antiguo 25/05/2009, 15:40
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Código de Examinar, Editar y Eliminar registros

tengo el código:

Código PHP:
while ( $row mysql_fetch_assoc($result) ) 
         { 
          
$identifica=$row
          
$id[]=$identifica['id_'.$tabla.'']; 
         }
         
         for (
$i=0;$i<mysql_num_rows($result);$i++)
         {
          if (
$colorfondo=='#F6f6f6'$colorfondo='#E9E9E9'; else $colorfondo='#F6f6f6';
          echo 
"<tr valign='top' onMouseOut=\"this.bgColor='$colorfondo';\" onMouseOver=\"this.bgColor='#FAD29F';\" bgcolor='$colorfondo'>";
          echo 
"<td valign='top'>";
          
          echo 
"<table cellpadding='2' cellspacing='1' border='0'>";
          echo 
"<tr align='center' valign='top'>";
          echo 
"<td><a href='".$_SERVER['PHP_SELF']."?editar&tabla=$tabla&id_$tabla=como pongo aqui el valor' title='Editar'><img src='images/editar.gif' border='0'></a></td>";
          echo 
"<td><a href='".$_SERVER['PHP_SELF']."?eliminar' title='Borrar'><img src='images/eliminar.gif' border='0'></td>";
          echo 
"</tr>";
          echo 
"</table>";
          
          echo 
"</td>";                
          for (
$k=1;$k<$campos;$k++)
          {          
           
$uno=substr(mysql_result($result$i$k),0,40);
           
$cadena=strtok($uno,".");
           
$cadena2=htmlspecialchars($cadena);
           echo 
"<td style='font-size:11px'>$cadena2</td>";
          }
          echo 
"</tr>";
         } 
Empieza desde la línea 488 hasta 516, las líneas 488 hasta 492 es el código que me acabas de dar.

Busca la linea de editar y dime comopongo ahi el valor del id
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:25.