Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: [.:: NauJFracT ::.] en 15 Diciembre 2006, 08:20 am



Título: Clase para actualizar campos recibidos de mysql
Publicado por: [.:: NauJFracT ::.] en 15 Diciembre 2006, 08:20 am
Bueno, como yo estaba cansado de hacer tablitas y ponerles nombres, text inputs etc, he creado esta clase para que, con solo enviarle una consulta, nos devuelta todo el formato listo para actualizar (es la versión 1.0 xD) (la clase no es mia totalmente, no recuerdo de donde la tomé, pero ha sido modificada un 80% de la original... De resto todo es mio  :P)

classForm.php
Código:
<?php //by NauJFracT juanfranciscot@gmail.com
class DB_mysql{
// Variables de conexión;
var $BaseDatos;
var $Servidor;
var $Usuario;
var $Clave;

//Identificador de conexión y consulta
var $Conexion_ID=0;
var $Consulta_ID=0;

//Numero de error y texto de error
var $Errno = 0;
var $Error ="";

/*Metodo constructor: cada vez que creemos una variable de esta clase
se ejecutará esta función */

function DB_mysql($bd="",$host="",$user="",$pass=""){
$this->BaseDatos = $bd;
$this->Servidor =$host;
$this->Usuario=$user;
$this->Clave=$pass;
}
/*Conexion a la base de datos*/
function conectar($bd,$host,$user,$pass){
if($bd !="") $this->BaseDatos = $bd;
if($host !="") $this->Servidor = $host;
if($user !="") $this->Usuario = $user;
if($pass !="") $this->Clave = $pass;
/* Conectamos al server */
$this->Conexion_ID = mysql_connect($host,$user,$pass);
if(!$this->Conexion_ID){
$this->Error = "Ha fallao la conesion";
return 0;
}
//selecciono la db
if(!@mysql_select_db($this->BaseDatos,$this->Conexion_ID)){
$this->Error = "imposible conectar a la DB".$this->BaseDatos;
return 0;
}
/*Si nos conectamos entonces el identificador será devuelto*/
return $this->Conexion_ID;
}
function consultas($sql=""){
if($sql==""){
$this->Error="No ha especificado una consulta SQL";
return 0;
}
/*ejecutamos la consulta wn*/
$this->Consulta_ID = @mysql_query($sql,$this->Conexion_ID);
if(!$this->Consulta_ID){
$this->Errno= mysql_errno();
$this->Error= mysql_error();
}
/* Si todo bien devuelve el identificador de la conexion*/
return $this->Consulta_ID;
}
//Devuelve el numero de campos de una consulta
function numcampos(){
return mysql_num_fields($this->Consulta_ID);
}
//Devuelve el numero de registros de una consulta
function numregistros(){
return mysql_num_rows($this->Consulta_ID);
}
//Devuelve el nombre de un campo de una consulta
function nombrecampo($numcampo){
return mysql_field_name($this->Consulta_ID,$numcampo);
}
//Muestra los datos de una consulta
function verconsulta($formDestino,$baseDeDatosModificar){
echo '
<form name="form1" action="'.$formDestino.'" method="post">
<input type="hidden" value="'.$baseDeDatosModificar.'" name="baseDatos">
<table border =1 cellpadding="0" bordercolor="#003366" cellspacing="0">

<tr>';

//mostramos los nombres de los campos
for ($i=0;$i< $this->numcampos(); $i++){
echo "<td><b>".$this->nombrecampo($i)."</b>
<input type=\"hidden\" value=\"".$this->nombrecampo($i)."\" name=\"elCampo[".$i."]\"></td>\n";
$theNameCamp[$i]=$this->nombrecampo($i);
$theNameCamp2[$i]=$this->nombrecampo($i);
}
echo "
</tr>\n";
$inc=0;
//Mostramos los registros
while($row = mysql_fetch_row($this->Consulta_ID)){
echo "<tr> \n";
for ($j=0;$j<$this->numcampos();$j++){
echo "<td><input type=\"text\" value=\"".$row[$j]."\" name=\"".$theNameCamp[$j]."[".$inc."]\">
<input type=\"hidden\" value=\"".$row[$j]."\" name=\"".$theNameCamp2[$j]."2[".$inc."]\">
</td>\n";
}
echo "</tr>
\n";$inc++;
}

echo '<tr>
<td colspan='.$j.'><input type="submit" value="Enviar"></td>
</tr></table></form>';
  }//fin funcion verconsulta();
}//fin Class DB_mysql
?>

archivo que recibe y genera un form
formularioPrueba.php
Código:
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #666666;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<body>
<?php //by NauJFracT juanfranciscot@gmail.com
require("../clases/classForm.php");
$miconexion = new DB_mysql;
$miconexion->conectar("cursos_notas","localhost","root","");
$miconexion->consultas("SELECT *  FROM `usuarios`");
$miconexion->verconsulta("actualizarCampos.php","usuarios");
?>
</body>

archivo que nos recibira todas las consultas y actualizará los campos:
actualizaCampos.php
Código:
<?php require_once("conexion.php");
//by NauJFracT juanfranciscot@gmail.com
function recibeForm(){
$baseDeDatos=$_POST['baseDatos'];
$comienzaQ="UPDATE `".$baseDeDatos."` SET ";
for($i=0;$i<=count($_POST[$_POST['elCampo'][0]])-1;$i++){$consulta="";
$where="";
for($i2=0;$i2<=count($_POST['elCampo']);$i2++){

$coma=($i2==count($_POST['elCampo'])-1 )? "" : ",";
$AND=($i2==count($_POST['elCampo'])-1 )? "" : " AND ";
if($_POST['elCampo'][$i2]!=''){

$consulta.="`".$_POST['elCampo'][$i2]."`='".$_POST[$_POST['elCampo'][$i2]][$i]."'".$coma;
$where.=" `".$_POST['elCampo'][$i2]."`='".$_POST[$_POST['elCampo'][$i2].'2'][$i]."'".$AND;
//echo $_POST['elCampo'][$i2]."--------->".$_POST[$_POST['elCampo'][$i2]][$i];
}
//$_POST[$_POST['elCampo'][$i2]][$i2];
}//echo $comienzaQ.$consulta." WHERE ".$where." Limit 1<br>\n";
$consulta=mysql_query($comienzaQ.$consulta." WHERE ".$where." Limit 1")or die(mysql_error());
//echo "<br>";
$inc++;
}
}
recibeForm();
?>
<p>Se han actualizado correctamente los campos! </p>

Ojalá les sirva tanto como a mi :D


Título: Re: Clase para actualizar campos recibidos de mysql
Publicado por: Luisango en 15 Diciembre 2006, 15:37 pm
No esta mal!! (.. es una kk (jajaj es broma))
Esta muy bien pero seria muy lioso no crees?