Foros del Web » Programando para Internet » PHP »

No veo valor en los camos del form a la hora de editar un registro

Estas en el tema de No veo valor en los camos del form a la hora de editar un registro en el foro de PHP en Foros del Web. Este es mi código de edición de registros: Código PHP: $sql = "SHOW COLUMNS FROM $tabla" ;          $result  =  mysql_query ( $sql , $link );                   ...
  #1 (permalink)  
Antiguo 26/05/2009, 12:42
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Pregunta No veo valor en los camos del form a la hora de editar un registro

Este es mi código de edición de registros:

Código PHP:
$sql="SHOW COLUMNS FROM $tabla";
        
$result mysql_query($sql,$link);
        
        
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
        
$result_editar=mysql_query($sql_editar,$link);
        
//echo $sql_editar;
        
$a_editar=array();
        while ( 
$cols=mysql_fetch_assoc($result_editar) )
        {
         
$a_editar[]=$cols;
        }
                
        echo 
"<tr><td colspan='2' class='encabeza'>Editando $tabla</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);
         
//echo $sql;
         
$cols=mysql_fetch_object($result);
         
$tabla=$cols->tabla_referencia
         
         
$sql="select * from dpswd.$tabla";
         
$result=mysql_query($sql,$link);
         
//echo $sql;
         
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[$tabla]."</option>";
         }
         echo 
"</select>";
        
        }elseif( 
$campos['Type']==longtext )
        {
         echo 
"<textarea name='".$campos['Field']."' cols='50' rows='7'></textarea>";
        }else{
         if ( 
$campos['Key']==PRI 
         {
          echo 
$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>"
Explico un poco:
Si a la hora de editar hay algun campo Key==MUL, me debe mostra un select para escojer que valor deseo.

Si hay algun campo longtext, me debe poner entonces un textarea.

En caso de que no se cumpla ninguna de estas condiciones entonces muestro un campo text

todo eso lo controlo mediante la consulta:
Código PHP:
$sql="SHOW COLUMNS FROM $tabla";
$result mysql_query($sql,$link); 
Ahora bien, logro que me ponga nombre campo: objeto formulario, pero no logro hacer que aparescan los valores del registro insertado en los objetos.

Podrían ayudarme con esto
  #2 (permalink)  
Antiguo 26/05/2009, 12:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: No veo valor en los camos del form a la hora de editar un registro

estay muy desordenado ps man,

primero que nada a cada query asignale un nombre distinto

$sql_name ,$sql2 etc etc

al igual que el $result

despues hablamos.

saludos
  #3 (permalink)  
Antiguo 26/05/2009, 13:58
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: No veo valor en los camos del form a la hora de editar un registro

Mira a ver si ahora esta mejor:

Código PHP:
$sql_campos="SHOW COLUMNS FROM $tabla";
$result mysql_query($sql_campos,$link);
        
//-------------consulta donde selecciono los registros que voy a editar
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
$num mysql_num_fields($result_editar);
for (
$i=0;$i<mysql_num_rows($result_editar);$i++)
{
 for (
$k=1;$k<$num;$k++)
 {          
  echo 
$edit[]=mysql_result($result_editar$i$k);
 }
}
//-------------consulta donde selecciono los registros que voy a editar
                
echo "<tr><td colspan='2' class='encabeza'>Editando $tabla</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_c="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_c,$link);
$cols=mysql_fetch_object($result);
 
$tabla=$cols->tabla_referencia
         
$sql_t="select * from dpswd.$tabla";
$result=mysql_query($sql_t,$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[$tabla]."</option>";
}
echo 
"</select>";
}elseif( 
$campos['Type']==longtext )
{
echo 
"<textarea name='".$campos['Field']."' cols='50' rows='7'></textarea>";
}else{
if ( 
$campos['Key']==PRI 
{
echo 
$id_;
}else{
echo 
"<input type='text' name='".$campos['Field']."' value='' />";
}
}
echo 
"</td>";
echo 
"</tr>";

La consulta que hago es para seleccionar los valores del registro que voy a editar, no se como ponerlos en un array, además después no se cómo ponerlos en el value='' de los objetos del formulario.

Ayudema colega.
  #4 (permalink)  
Antiguo 26/05/2009, 14:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: No veo valor en los camos del form a la hora de editar un registro

por que PRI y MUL estan sin comillas

o los definiste antes??

ve ese tema
  #5 (permalink)  
Antiguo 26/05/2009, 14:28
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: No veo valor en los camos del form a la hora de editar un registro

Me funciona igual, pero bueno si las llevas entonces se las pongo, pero revizame como pasarle los valores a los objetos del formulario, es decir, después de hacer la consulta:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
$num mysql_num_fields($result_editar);
for (
$i=0;$i<mysql_num_rows($result_editar);$i++)
{
 for (
$k=1;$k<$num;$k++)
 {          
  echo 
$edit[]=mysql_result($result_editar$i$k);
 }

como creo un array con estos valores y como le paso los valores a los objetos del formulario, para poderlos editar.

Disculpa pero aún sigo
  #6 (permalink)  
Antiguo 26/05/2009, 14:31
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: No veo valor en los camos del form a la hora de editar un registro

algo asi?

a ver si nos acercamos , de a poco poco xD

Código PHP:

$sql_editar
="select * from dpswd.$tabla where id_".$tabla."='$id_'"
$result_editar=mysql_query($sql_editar,$link); 
$num mysql_num_fields($result_editar); 
$valores=mysql_fetch_array($result_editar,MYSQL_ASSOC);

echo 
$valores['nombre']; // o cualkier nombre de campo en la bdd

for ($i=0;$i<mysql_num_rows($result_editar);$i++) 

 for (
$k=1;$k<$num;$k++) 
 {           
  echo 
$edit[]=mysql_result($result_editar$i$k); 
 } 

  #7 (permalink)  
Antiguo 26/05/2009, 14:41
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: No veo valor en los camos del form a la hora de editar un registro

Ese código hasta el momento me hace lo mismo que el mío, pero me hace falta que el resultado que se muestra en la línea

Código PHP:
echo $edit[]=mysql_result($result_editar$i$k); 
se le asigne al atributo value=" del los objetos del formulario. Mira en el código que pasé al principio para que veas donde quiero obtener los valores de la consulta.
  #8 (permalink)  
Antiguo 26/05/2009, 14:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: No veo valor en los camos del form a la hora de editar un registro

creo que has formado un lio en algo facil ejemplo

por que haces esto:
$result_editar=mysql_query($sql_editar,$link);
$num = mysql_num_fields($result_editar);
for ($i=0;$i<mysql_num_rows($result_editar);$i++)
{
for ($k=1;$k<$num;$k++)
{
echo $edit[]=mysql_result($result_editar, $i, $k);
}
}

en ves de algo asi:

$result_editar=mysql_query($sql_editar,$link);
$arraym=mysql_fetch_array($result_editar,MYSQL_ASS OC);

ya que hace lo mismo no?
  #9 (permalink)  
Antiguo 26/05/2009, 15:00
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: No veo valor en los camos del form a la hora de editar un registro

Porque estoy tratando de guardar en un array los valores de la consulta:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link); 
Pero además, después quiero utilizar ese array dentro de otro código más abajo, por favor, dime si me hago entender, te ruego que mires el código que pasé al principio,para que veas lo que tengo y como lo puedo arreglar para que me aparescan los valores que quiero editar sobre los objetos del formulario de edición.
  #10 (permalink)  
Antiguo 26/05/2009, 15:03
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: No veo valor en los camos del form a la hora de editar un registro

pero man saddsaasd

creo q esto te orientara...
ejemplo:

$result_editar=mysql_query($sql_editar,$link);
$arraym=mysql_fetch_array($result_editar,MYSQL_ASS OC);
// **aqui ya se convierte en un array con todos los datos**//
echo $arraym["nombre"];
echo $arraym["apellido"];


dale un var_dump();

para que veas.

es que si no entiendes eso dificilmente el codigo este bien estructurado
  #11 (permalink)  
Antiguo 26/05/2009, 15:28
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: No veo valor en los camos del form a la hora de editar un registro

Colega de esa forma no me es útil

Código PHP:
echo $arraym["nombre"];
echo 
$arraym["apellido"]; 
porque en realidad nesecito que el array sea capaz de almacenar cualquier campo, es decir, debe trabajar por ejemplo para cualquier tabla, te explico.

si trabajo con la tabla estudiante, por ejemplo, entonces tengo campos como nombre y apellidos; pero si trabajo con la tabla cursos, entonces tengo camos como fecha_inicio, impartido_por, calificación.

Como verás nesecito que que ese array pueda almacenar cualquier tipo de valor de campo.

Mira no nos compliquemos más, la idea esta clara, solo que no sé como insertar el valor en el atributo value=" del formulario.

Te voy a explicar mejor todavía el código mio para que lo entiendas mejor, pero por favor esto es con paciencia, y te agradesco que me ayudes hasta que desmos con el código que quiero, no me dejes solo con esto .

te voy a poner por parte el código y lo que me hace:

Código PHP:
/*este me selecciona los nombres de los campos de la tabla que pasa en la variable $tabla*/
$sql_campos="SHOW COLUMNS FROM $tabla";
$result mysql_query($sql_campos,$link); 
Código PHP:
while ($row mysql_fetch_assoc($result)) {
$campos=$row;   //aqui estoy almacenando los nombres de los campos
.
.              
.           
/* dentro de estas lineas va el codigo de edicion segun el tipo de campo*/
.

Código PHP:
/*aqui muestro los nombres de los campos, para despues poner al lado de cada uno un objeto del formulario ya sea un text, textarea o un select */
echo "<tr>";
echo 
"<td align='right' valign='top'>".$campos['Field'].":&nbsp;</td>";
echo 
"<td>"
Código PHP:
/* si existe algun campo que sea FOREIGN KEY (esto lo pregunto de la forma if ( $campos['Key']=='MUL' ), si existe, entonces muestro un select, donde hago una consulta a la tabla que pertenece el campo FOREIGN KEY de la tabla original en la que el es el campo PRIMARY KEY ) */
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 * 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[$tabla]."</option>";
}
echo 
"</select>"
Código PHP:
/* si existe algun campo de de tipo dato longtext lo cual pregunto de la forma  elseif( $campos['Type']=='longtext' ), entonces muestro un textarea  */
elseif( $campos['Type']=='longtext' )
{
echo 
"<textarea name='".$campos['Field']."' cols='50' rows='7'></textarea>";

Código PHP:
/* en el caso para el campo PRIMARY KEY le digo que me ponga el valor del campo nada mas  */
else{
if ( 
$campos['Key']=='PRI' 
{
echo 
$id_;

Código PHP:
/* y en ultima instancia, en caso de no cumplirse nada de lo anterior, entonces muestro solamente cajas de texto  */
else{
echo 
"<input type='text' name='".$campos['Field']."' value='' />";

Ahora lo que nesecito es pasarle en el value='' de los objetos el valor de los campos que voy a editar y es para eso que hago:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
        
$result_editar=mysql_query($sql_editar,$link);
        
$num mysql_num_fields($result_editar);
        
$valores=mysql_fetch_array($result_editar,MYSQL_ASSOC);
        echo 
$valores['nombre']; // o cualkier nombre de campo en la bdd
        
for ($i=0;$i<mysql_num_rows($result_editar);$i++) 
        { 
         for (
$k=1;$k<$num;$k++) 
         {           
          
$edit[]=mysql_result($result_editar$i$k); 
         } 
        } 
Pero no se como meter el valor de:
Código PHP:
$edit[]=mysql_result($result_editar$i$k); 
dentro del codigo donde empieza:

Código PHP:
while ($row mysql_fetch_assoc($result)) {
$campos=$row;
.
.
.
.
.
.
.

Es aqui donde nesecito de la ayuda, como almacenar los datos de la consulta en un array y luego pasarlo al value=''

Por favor ayudame (O) aydenme. Estoy muy
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 14:08.