Foros del Web » Programando para Internet » PHP »

Problema con manejador de Base de Datos

Estas en el tema de Problema con manejador de Base de Datos en el foro de PHP en Foros del Web. Movido de "Base de Datos" Que tal amigos, estoy programando un pequeño manejador de BDs bastante modesto, para entender mejor el codigo, supongamos que tenemos ...
  #1 (permalink)  
Antiguo 06/10/2008, 16:51
Avatar de ratmayor  
Fecha de Ingreso: noviembre-2005
Ubicación: Puerto La Cruz
Mensajes: 23
Antigüedad: 18 años, 4 meses
Puntos: 0
Exclamación Problema con manejador de Base de Datos

Movido de "Base de Datos"

Que tal amigos, estoy programando un pequeño manejador de BDs bastante modesto, para entender mejor el codigo, supongamos que tenemos una tabla en la BD llamada "datos" y que contiene los campos "nombre, edad, peso". Eh aqui el codigo:

Código PHP:
require "conex.php";

$table "datos";
$field = array();

/* Esta funcion genera las variables de entrada dependiendo de los nombres de los campos de la BD, por ejm: $_POST[nombre], $_POST[edad], $_POST[peso] */
function valuesarg($table ''){
       
$result mysql_query("SELECT * FROM $table");
       
$fields = @mysql_num_fields($result);
       for(
$i=1$i $fields$i++){
              
$field[] .= $_POST[mysql_field_name($result$i)];
       }
       return 
$field;
}

/* Esta funcion carga los campos de la tabla seleccionada por ejm: nombre, edad, peso... */
function fieldarg($table ''){
       
$result mysql_query("SELECT * FROM $table");
       
$fields = @mysql_num_fields($result);
       for(
$i=1$i $fields$i++){
              
$field[] .= mysql_field_name($result$i);
       }
       return 
$field;
}
//Aqui eliminamos la ultima "," de la cadena
$fields implode (',',valuesarg($table));
$values implode (',',fieldarg($table));

//eh aqui la consulta...
$sql "insert into $table ($fields) values ($values)";

mysql_query($sql,$link); 
El codigo asi como va, funciona perfectamente, el problema radica cuando quiero modificar el contenido de una variable en especifico, es decir hacer algo como esto "htmlentities(nombre), edad, peso" o "nombre, md5(edad), peso" etc...

De verdad espero que puedan ayudarme, ya estoy a un paso del manicomio! jajaja saludos

Última edición por ratmayor; 07/10/2008 a las 08:08
  #2 (permalink)  
Antiguo 06/10/2008, 17:48
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 8 meses
Puntos: 19
Respuesta: Problema con manejador de Base de Datos

a ver si organizamos un poquito el codigo la proxima vez, y posteamos usando los TAGS para PHP asi nos pone colores, en que epoca estamos? en el siglo pasado ?! BLANCO Y NEGRO!, como quieren que uno entienda lo que hacen si ponen todo en una linea, no tiene tabulaciones y ensima parece una pelicula de chaplin!

[php]
<?php

require "conex.php";

$table = "datos";
$field = array();

/* Esta funcion genera las variables de entrada dependiendo de los nombres de los campos de la BD, por ejm: $_POST[nombre], $_POST[edad], $_POST[peso] */
function valuesarg($table = ''){
$result = mysql_query("SELECT * FROM $table");
$fields = @mysql_num_fields($result);
for($i=1; $i < $fields; $i++){
$field[] .= $_POST[mysql_field_name($result, $i)];
}
return $field;
}

/* Esta funcion carga los campos de la tabla seleccionada por ejm: nombre, edad, peso... */
function fieldarg($table = ''){
$result = mysql_query("SELECT * FROM $table");
$fields = @mysql_num_fields($result);
for($i=1; $i < $fields; $i++){
$field[] .= mysql_field_name($result, $i);
}
return $field;
}
//Aqui eliminamos la ultima "," de la cadena
$fields = implode (',',valuesarg($table));
$values = implode (',',fieldarg($table));

//eh aqui la consulta...
$sql = "insert into $table ($fields) values ($values)";

mysql_query($sql,$link);

?>
[php]

Los puntos en el signo "=" estan de mas ya que el ".=" sirve para concatenar un valor al valor ya contenido en la variable, pero en este caso se asigna una posicion nueva cada vez que se agrega un valor en el array o sea que el ".=" esta de mas
Ponelo asi
Código PHP:
$field[] = mysql_field_name($result$i); 
Despues, estoy notando que las dos funciones realizan exactamente lo mismo, cual es el sentido? no entiendo tu codigo, no le encuentro sentido, si podes ser mas explicito se agradeceria

Saludos!
  #3 (permalink)  
Antiguo 07/10/2008, 07:47
Avatar de ratmayor  
Fecha de Ingreso: noviembre-2005
Ubicación: Puerto La Cruz
Mensajes: 23
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Problema con manejador de Base de Datos

Antes que nada, no sabia como usar las tags PHP! y muchas gracias por el consejo, y si, aunque las funciones hacen exactamente lo mismo, generan contenidos diferentes, poniendo el ejemplo de que en la tabla hay 3 campos "nombre, edad, peso" la primera funcion genera solo el nombre del campo de la tabla y devuelve "nombre, edad, peso"

Código PHP:
function fieldarg($table ''){
$result mysql_query("SELECT * FROM $table");
$fields = @mysql_num_fields($result);
for(
$i=1$i $fields$i++){
$field[] = mysql_field_name($result$i);
}
return 
$field;

la segunda genera variables con el nombre del campo. Esta funcion retornaria algo como "$_POST[nombre], $_POST[edad], $_POST[peso].

Código PHP:
function valuesarg($table ''){
       
$result mysql_query("SELECT * FROM $table");
       
$fields = @mysql_num_fields($result);
       for(
$i=1$i $fields$i++){
              
/* Aqui genero variables $_POST[] */              
              
$field[] = $_POST[mysql_field_name($result$i)];
       }
       return 
$field;

Esto prepara la consulta sin tener que hace un codigo en especifico para cada tabla

Código PHP:
//Aqui eliminamos la ultima "," de la cadena
$fields implode (',',valuesarg($table));
$values implode (',',fieldarg($table));


/* eh aqui la consulta. dentro de esta se cargan los valores cargados 
desde las funciones, de manera tradicional seria algo como: 
$sql = "insert into $table (nombre, edad, peso) values ($_POST[nombre],$_POST[edad],$_POST[peso])"; */

$sql "insert into $table ($fields) values ($values)";
mysql_query($sql,$link); 
Entonces el problema esta en que si, las variables se generan al momento en la funcion 2, como haria para tratar a una variable de manera independiente, si como explique anteriormente, la la funcion 2 general ago como esto: $_POST[nombre], $_POST[edad], $_POST[peso], como haria si deseo hacer esto:

Código PHP:
htmlentities($_POST[nombre]), $_POST[edad], $_POST[peso]
/* o algo asi: */
$_POST[nombre], crypt($_POST[edad],a), $_POST[peso
Cambiar el contenido de una sola variable es mi gran problema...

Última edición por ratmayor; 07/10/2008 a las 08:10
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 17:32.