Archivo del sitio

__PHP_Incomplete_Class

A quien no le ha pasado que cuando esta trabajando con autoload y tiene objetos en session y luego quiere trabajar con estos objetos aparecen los objetos incomprensibles e inaccesibles __PHP_Incomplete_Class
o un ejemplo de var_dump al objeto de session :

object(__PHP_Incomplete_Class)[1]
  public '__PHP_Incomplete_Class_Name' => string 'octavius\controlador\intranet\usuario\UsuarioTO' (length=47)
  private 'idUsuario' (octavius\controlador\intranet\usuario\UsuarioTO) => string '2' (length=1)
  private 'strPassword' (octavius\controlador\intranet\usuario\UsuarioTO) => null
  private 'Rol' (octavius\controlador\intranet\usuario\UsuarioTO) => 
    object(__PHP_Incomplete_Class)[2]

Bueno el problema es el siguiente, se hace el session_start antes del llamado del autoload, entonces no es capaz de detectar las clases de los objetos o las referencias de estos.
La solución es muy simple:

Primero defines tu auload, o lo incluyes, y luego después de eso agregas el session_start. Y podrás trabajar con tus objetos.

Después del arreglo el var_dump quedaría así:

object(octavius\controlador\intranet\usuario\UsuarioTO)[2]
  private 'idUsuario' => string '2' (length=1)
  private 'strPassword' => null
  private 'Rol' => 
    object(octavius\controlador\intranet\rol\RolTO)[3]
      private 'idRol' => string '5' (length=1)
      private 'strNombreRol' => string 'Prueba-Pablo' (length=12)
      private 'Modulos' => 
        array (size=3)

Espero que les sirva, saludos!.

Transformar el texto a utf8 sólo si no lo es.

Han tenido el problema con el acento o las ñ en programación?  típico problema. Bueno aquí les traigo una pequeña solución, transforma el texto a utf8 validando primero si esta ya en utf8 o no, porque si transforman un texto en utf8 siendo que ya lo es entonces aparecerán los caracteres extraños nuevamente.

Espero que les sirva.

Esto es para PHP.

 


// Valida si viene en utf8, sino lo transforma a utf8.
function str_to_utf8($str) {

if (mb_detect_encoding($str, 'UTF-8', true) === false) {
$str = utf8_encode($str);
}

return $str;
}

 

Referencia: http://php.net/manual/es/function.mb-detect-encoding.php

Actualizar multiples columnas en una tabla con PHP en una bd MYSQL

La semana pasada me cambie de trabajo, y estoy trabajando en un proyecto con php y mysql. Y quiero compartir un codigo que he creado que permite la actualización de multiples columnas en una bd mysql.

No se si existe una solución mas limpia o que sea una buena practica en php, no tengo mucha experiencia en este lenguaje.

Pero bueno vamos al codigo.

 


/**
 * Metodo que permite actualizar los campos de una tabla,
 * este permite actualizar todos los campos que la persona desee
 * @author Pablo Videla.
 * @mail donvidela@gmail.com
 * @param type $table Tabla que corresponde actualizar
 * @param type $campoModificar Nombres de los campos (array)
 * @param type $campoNewValue Valores de los campos (array)
 * @param type $campoCondicion el campo de la condicion
 * @param type $campoValue Valor del campo de la condicion
 */
 public function registroActualizarMultiplesCampos($table, $campoModificar, $campoNewValue, $campoCondicion, $campoValue) {

if (count($campoModificar) > 0 && count($campoNewValue) > 0) {
 if (count($campoModificar) == count($campoNewValue)) {

for ($i = 0; $i < count($campoModificar); $i++) {

if (gettype($campoNewValue[$i]) == "string") {

$sqlExtra = $sqlExtra . " " . $campoModificar[$i] . " = '" . $campoNewValue[$i] . "',";
 } else {
 $sqlExtra = $sqlExtra . " " . $campoModificar[$i] . " = " . $campoNewValue[$i] . ",";
 }
 }
 }

$sqlExtra = trim($sqlExtra, ',');
 $sql = "UPDATE " . $table . " SET
 $sqlExtra

 WHERE " . $campoCondicion . " = " . $campoValue . "";
 }

$result = $this->_db->Execute($sql);

}

Cualquier duda me la hacen saber, saludos.

PHP+MySql

Clase enviada por la profe Yasna Meza, y las modificaciones que hizo hacer en clases:

1.- Agregar un botón que muestre las personas con edades de rango 25 y 35 años

2.- Agregar un botón y un textfield y consultar las personas que empiezen con la letra o palabra agregada en el textfield


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo de conexión a BD : PHP + MySQL</title>

<style type="text/css">
body{background:#3399FF}
<!--
.style3 {font-family: "Courier New", Courier, monospace; font-weight: bold; }
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<h2>Ejemplo de conexión a BD : PHP + MySQL</h2>
<table width="200" border="1">
<tr>
<td width="95"><span class="style3">RUT</span></td>
<td width="89"><input name="txt_rut" type="text" id="txt_rut" maxlength="10" /></td>
</tr>
<tr>
<td><span class="style3">NOMBRE</span></td>
<td><input name="txt_nombre" type="text" id="txt_nombre" maxlength="20" /></td>
</tr>
<tr>
<td><span class="style3">FONO</span></td>
<td><input name="txt_fono" type="text" id="txt_fono" maxlength="8" /></td>
</tr>

<tr>
<td><span class="style3">EDAD</span></td>
<td><input name="txt_edad" type="text" id="txt_edad" value="0" maxlength="3" /></td>
</tr>
<tr>
<td><span class="style3">Ingresa nombre a buscar</span></td>
<td><input name="txt_name" type="text" id="txt_name" maxlength="255" /></td>
</tr>

<tr>
<td><input name="agregar" type="submit" id="agregar" value="Agregar" /></td>
<td><input name="limpiar" type="reset" id="limpiar" value="Limpiar" />
<input name="mostrar" type="submit" id="mostrar" value="Mostrar" /></td>
<td><input name ="mostrarEdad" type="submit" id="mostrarEdad" value = "Mostrar edad"/> </td>
<td><label>
<input name="mostrarCon" type="submit" id="mostrarCon" value="Mostrar_Nombres" />
</label></td>
</tr>
</table>

<p>
<?php
echo "<h3>Resultado de la operación : ";
$conexion = mysql_connect("localhost", "root", "duoc");
if ($conexion){
echo "Conexión establecida</h3>"; echo "<br>";
}
else{
echo "No se pudo establecer la conexión</h3>"; echo "<br>";
exit;
}
# Selecciona la base de datos
$db = mysql_select_db("example");
$verRegistros = -1;
if (isset($_REQUEST["mostrar"])){
$verRegistros = 1;
}
if (isset($_REQUEST["agregar"])){
# Obtiene los datos para agregar el registro
$rut = $_REQUEST["txt_rut"];
$nombre = $_REQUEST["txt_nombre"];
$fono = $_REQUEST["txt_fono"];
$edad = $_REQUEST["txt_edad"];
# Prepara la sentencia SQL para insertar el registro
$sql = "INSERT INTO persona VALUES ('" . $rut . "', '" . $nombre . "'," . $fono . "," . $edad . ")";
# Ejecuta la consulta de inserci{on
if (mysql_query($sql)){
echo "<h3>Registro insertado con éxito</h3>"; echo "<br>";
$verRegistros = 1;
}
else{
echo mysql_error();                # Muestra el error de SQL
die("Error en la consulta");
}
}

if ($verRegistros == 1){
# Setea la consulta sobre la tabla
$sql = "SELECT * FROM persona";
# Ejecuta la consulta y almacena el resultado
$respuesta = mysql_query($sql, $conexion);
echo "<table width='200' border='1'>";
echo "<caption align='top'>REGISTROS ALMACENADOS</caption>";
echo "<tr>";
echo "<th scope='col'>#</th>";
echo "<th scope='col'>RUT</th>";
echo "<th scope='col'>NOMBRE</th>";
echo "<th scope='col'>FONO</th>";
echo "<th scope='col'>EDAD</th>";
echo "</tr>";

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($respuesta)){
echo "<tr><td>" . $registro . "</td>";
echo "<td>" . $fila["rut"] . "</td>";
echo "<td>"  .$fila["nombre"] . "</td>";
echo "<td>"  .$fila["fono"] . "</td>";
echo "<td>"  . $fila["edad"] . "</td></tr>";
$registro = $registro + 1;
}
echo "</table>";
}

if(isset($_REQUEST['mostrarEdad']))
{
$mostrarEdades = "select * from persona where edad >=25 and edad<=35";
$response =mysql_query($mostrarEdades,$conexion);
echo "<table width='200' border='1'>";
echo "<caption align='top'>REGISTROS ALMACENADOS de edades entre 25 y 35 años</caption>";
echo "<tr>";
echo "<th scope='col'>#</th>";
echo "<th scope='col'>RUT</th>";
echo "<th scope='col'>NOMBRE</th>";
echo "<th scope='col'>FONO</th>";
echo "<th scope='col'>EDAD</th>";
echo "</tr>";

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($response)){
echo "<tr><td>" . $registro . "</td>";
echo "<td>" . $fila["rut"] . "</td>";
echo "<td>"  .$fila["nombre"] . "</td>";
echo "<td>"  .$fila["fono"] . "</td>";
echo "<td>"  . $fila["edad"] . "</td></tr>";
$registro = $registro + 1;
}
echo "</table>";
}
if(isset($_REQUEST['mostrarCon']))
{
$name = $_REQUEST['txt_name'];

$mostrarCon = "select * from persona where nombre like '".$name."%'";
$response2 =mysql_query($mostrarCon,$conexion);
echo "<table width='200' border='1'>";
echo "<caption align='top'>REGISTROS ALMACENADOS Que empiezen CON</caption>";
echo "<tr>";
echo "<th scope='col'>#</th>";
echo "<th scope='col'>RUT</th>";
echo "<th scope='col'>NOMBRE</th>";
echo "<th scope='col'>FONO</th>";
echo "<th scope='col'>EDAD</th>";
echo "</tr>";

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($response2)){
echo "<tr><td>" . $registro . "</td>";
echo "<td>" . $fila["rut"] . "</td>";
echo "<td>"  .$fila["nombre"] . "</td>";
echo "<td>"  .$fila["fono"] . "</td>";
echo "<td>"  . $fila["edad"] . "</td></tr>";
$registro = $registro + 1;
}
echo "</table>";
}

# Cierra la conexión e informa de la operación
if (mysql_close($conexion)){
echo "Conexión ha sido cerrada con éxito"; echo "<br>";
}
else{
echo "Problemas al cerrar la conexión"; echo "<br>";
}
?>
</p>

<p>&nbsp;    </p>
</form>
</body>
</html>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Ejemplo de conexión a BD : PHP + MySQL</title>

<style type=”text/css”>
body{background:#3399FF}
<!–
.style3 {font-family: “Courier New”, Courier, monospace; font-weight: bold; }
–>
</style>
</head>

<body>
<form id=”form1″ name=”form1″ method=”post” action=””>
<h2>Ejemplo de conexión a BD : PHP + MySQL</h2>
<table width=”200″ border=”1″>
<tr>
<td width=”95″><span class=”style3″>RUT</span></td>
<td width=”89″><input name=”txt_rut” type=”text” id=”txt_rut” maxlength=”10″ /></td>
</tr>
<tr>
<td><span class=”style3″>NOMBRE</span></td>
<td><input name=”txt_nombre” type=”text” id=”txt_nombre” maxlength=”20″ /></td>
</tr>
<tr>
<td><span class=”style3″>FONO</span></td>
<td><input name=”txt_fono” type=”text” id=”txt_fono” maxlength=”8″ /></td>
</tr>

<tr>
<td><span class=”style3″>EDAD</span></td>
<td><input name=”txt_edad” type=”text” id=”txt_edad” value=”0″ maxlength=”3″ /></td>
</tr>
<tr>
<td><span class=”style3″>Ingresa nombre a buscar</span></td>
<td><input name=”txt_name” type=”text” id=”txt_name” maxlength=”255″ /></td>
</tr>

<tr>
<td><input name=”agregar” type=”submit” id=”agregar” value=”Agregar” /></td>
<td><input name=”limpiar” type=”reset” id=”limpiar” value=”Limpiar” />
<input name=”mostrar” type=”submit” id=”mostrar” value=”Mostrar” /></td>
<td><input name =”mostrarEdad” type=”submit” id=”mostrarEdad” value = “Mostrar edad”/> </td>
<td><label>
<input name=”mostrarCon” type=”submit” id=”mostrarCon” value=”Mostrar_Nombres” />
</label></td>
</tr>
</table>

<p>
<?php
echo “<h3>Resultado de la operación : “;
$conexion = mysql_connect(“localhost”, “root”, “duoc”);
if ($conexion){
echo “Conexión establecida</h3>”; echo “<br>”;
}
else{
echo “No se pudo establecer la conexión</h3>”; echo “<br>”;
exit;
}
# Selecciona la base de datos
$db = mysql_select_db(“example”);
$verRegistros = -1;
if (isset($_REQUEST[“mostrar”])){
$verRegistros = 1;
}
if (isset($_REQUEST[“agregar”])){
# Obtiene los datos para agregar el registro
$rut = $_REQUEST[“txt_rut”];
$nombre = $_REQUEST[“txt_nombre”];
$fono = $_REQUEST[“txt_fono”];
$edad = $_REQUEST[“txt_edad”];
# Prepara la sentencia SQL para insertar el registro
$sql = “INSERT INTO persona VALUES (‘” . $rut . “‘, ‘” . $nombre . “‘,” . $fono . “,” . $edad . “)”;
# Ejecuta la consulta de inserci{on
if (mysql_query($sql)){
echo “<h3>Registro insertado con éxito</h3>”; echo “<br>”;
$verRegistros = 1;
}
else{
echo mysql_error();                # Muestra el error de SQL
die(“Error en la consulta”);
}
}

if ($verRegistros == 1){
# Setea la consulta sobre la tabla
$sql = “SELECT * FROM persona”;
# Ejecuta la consulta y almacena el resultado
$respuesta = mysql_query($sql, $conexion);
echo “<table width=’200′ border=’1′>”;
echo “<caption align=’top’>REGISTROS ALMACENADOS</caption>”;
echo “<tr>”;
echo “<th scope=’col’>#</th>”;
echo “<th scope=’col’>RUT</th>”;
echo “<th scope=’col’>NOMBRE</th>”;
echo “<th scope=’col’>FONO</th>”;
echo “<th scope=’col’>EDAD</th>”;
echo “</tr>”;

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($respuesta)){
echo “<tr><td>” . $registro . “</td>”;
echo “<td>” . $fila[“rut”] . “</td>”;
echo “<td>”  .$fila[“nombre”] . “</td>”;
echo “<td>”  .$fila[“fono”] . “</td>”;
echo “<td>”  . $fila[“edad”] . “</td></tr>”;
$registro = $registro + 1;
}
echo “</table>”;
}

if(isset($_REQUEST[‘mostrarEdad’]))
{
$mostrarEdades = “select * from persona where edad >=25 and edad<=35”;
$response =mysql_query($mostrarEdades,$conexion);
echo “<table width=’200′ border=’1′>”;
echo “<caption align=’top’>REGISTROS ALMACENADOS de edades entre 25 y 35 años</caption>”;
echo “<tr>”;
echo “<th scope=’col’>#</th>”;
echo “<th scope=’col’>RUT</th>”;
echo “<th scope=’col’>NOMBRE</th>”;
echo “<th scope=’col’>FONO</th>”;
echo “<th scope=’col’>EDAD</th>”;
echo “</tr>”;

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($response)){
echo “<tr><td>” . $registro . “</td>”;
echo “<td>” . $fila[“rut”] . “</td>”;
echo “<td>”  .$fila[“nombre”] . “</td>”;
echo “<td>”  .$fila[“fono”] . “</td>”;
echo “<td>”  . $fila[“edad”] . “</td></tr>”;
$registro = $registro + 1;
}
echo “</table>”;
}
if(isset($_REQUEST[‘mostrarCon’]))
{
$name = $_REQUEST[‘txt_name’];

$mostrarCon = “select * from persona where nombre like ‘”.$name.”%'”;
$response2 =mysql_query($mostrarCon,$conexion);
echo “<table width=’200′ border=’1′>”;
echo “<caption align=’top’>REGISTROS ALMACENADOS Que empiezen CON</caption>”;
echo “<tr>”;
echo “<th scope=’col’>#</th>”;
echo “<th scope=’col’>RUT</th>”;
echo “<th scope=’col’>NOMBRE</th>”;
echo “<th scope=’col’>FONO</th>”;
echo “<th scope=’col’>EDAD</th>”;
echo “</tr>”;

$registro = 1;
# Recorre la matriz que almacena el resultado
while($fila = mysql_fetch_array($response2)){
echo “<tr><td>” . $registro . “</td>”;
echo “<td>” . $fila[“rut”] . “</td>”;
echo “<td>”  .$fila[“nombre”] . “</td>”;
echo “<td>”  .$fila[“fono”] . “</td>”;
echo “<td>”  . $fila[“edad”] . “</td></tr>”;
$registro = $registro + 1;
}
echo “</table>”;
}

# Cierra la conexión e informa de la operación
if (mysql_close($conexion)){
echo “Conexión ha sido cerrada con éxito”; echo “<br>”;
}
else{
echo “Problemas al cerrar la conexión”; echo “<br>”;
}
?>
</p>

<p>&nbsp;    </p>
</form>
</body>
</html>

A %d blogueros les gusta esto: