Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Servia en 3 Febrero 2011, 21:50 PM

Título: Crear función para hacer query moldeable
Publicado por: Servia en 3 Febrero 2011, 21:50 PM
Señores, señoras tengo un problema y de nuevo acudo a ustedes ;-)

Me gustaría crear una función que me añada de forma automática los campos a actualizar de un query.
Me explico; tengo estos datos:
-jugador
-email
-vida
-arma

Hay un formulario de edición y quiero que al recibir los datos la función detecte los que no están vacíos y proceda a añadirlos al query posterior.

$campo1=creaquery($_POST['jugador']);
$campo2=creaquery($_POST['email']);
$campo3=creaquery($_POST['vida']);
$campo4=creaquery($_POST['arma']);

$user=$_SESSION['userlogin'];

function creaquery ($campo){
  if($campo!=''){
  $querido=NOMBREDEL CAMPO .'=' . $campo; // formar el jugador=$jugador
  }

}

$query="UPDATE db_game SET $querido WHERE user='$user' ";


Como lo hago?
Título: Re: Crear función para hacer query moldeable
Publicado por: Diabliyo en 3 Febrero 2011, 21:58 PM
Cita de: Servia en  3 Febrero 2011, 21:50 PMfunction creaquery ($campo){
  if($campo!=''){
  $querido=NOMBREDEL CAMPO .'=' . $campo; // formar el jugador=$jugador
  }

}

No te entiendo muy bien y ademas si lo estas programando tu, dejame decirte que es pesimo la forma como lo estas pensando... En fin, si quieres comprobar si una cadena esta vacia no es necesario hagas esto de !=''.

Basta con:

Código (php) [Seleccionar]
<?php
$dato
$_POST["campo"];

if( !
$campo ) echo 'Campo vacio';
else echo 
'Campo contiene informacion';
?>


Saludos !
Título: Re: Crear función para hacer query moldeable
Publicado por: Servia en 3 Febrero 2011, 22:01 PM
LOL

Primero, ni que mi código sea malo deberías decir que es pésimo, esta sección es de desarrollo precisamente.
Segundo, parece que no hayas leído lo que he escrito.

Me gustaría crear una función que añada de forma automática los campos a actualizar de un query.


Edito: Por ejemplo, yo no he criticado tus aplicaciones porque no sabías ni que eran las pretty urls.
Título: Re: Crear función para hacer query moldeable
Publicado por: ~ Yoya ~ en 3 Febrero 2011, 22:56 PM
Código (php) [Seleccionar]
function creaquery($campo, $user = $_SESSION['userlogin'])
{
if(!empty($campo))
{
$querido="NOMBREDEL CAMPO = ".$campo;
$query = mysql_query("UPDATE db_game SET $querido WHERE user='$user'");

                 if($query)
                 {
                    return TRUE;
                 }
        }

           return FALSE;
}


La he probado y funciona correctamente. Si todo esta bien devuelve True(1) y si no False(0), por si necesitas comprobar que el campo se haya actualizado correctamente.

Saludos.
Título: Re: Crear función para hacer query moldeable
Publicado por: Shell Root en 3 Febrero 2011, 22:57 PM
Tampoco entendí muy bien lo que quieres hacer... pero quizás esto te pueda servir...
Código (php) [Seleccionar]
foreach($_POST as $sNameInput => $sValueInput){
  if( (strlen($sValueInput) > 0) ){ echo "$".$sNameInput." = ".$sValueInput." <br/>"; }
  elseif( ($sValueInput == "") || empty($sValueInput) ){ echo "$".$sNameInput." = <i>null</i> <br/>"; }
}
Título: Re: Crear función para hacer query moldeable
Publicado por: Servia en 3 Febrero 2011, 23:20 PM
Perfecto!
Gracias, muchas gracias!
La combinación de ambos códigos genera lo que necesitaba!
Shell Root, había buscado mucho como mostrar el nombre de la var, pues en todos sitios decían que no se podía.

Encontré este que también sirve pero el tuyo es más cómodo.
function var_name (&$iVar, &$aDefinedVars)
    {
    foreach ($aDefinedVars as $k=>$v)
        $aDefinedVars_0[$k] = $v;

    $iVarSave = $iVar;
    $iVar     =!$iVar;

    $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
    $iVar      = $iVarSave;

    return $aDiffKeys[0];
    }


Lo dejo añadido, para quién busque en google el tema :P