<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sergio Infante &#187; PHP</title>
	<atom:link href="http://neosergio.net/category/php-flos/feed/" rel="self" type="application/rss+xml" />
	<link>http://neosergio.net</link>
	<description>Back to the geek world</description>
	<lastBuildDate>Sat, 10 Jul 2010 00:10:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mostrar errores de PHP en servidor de desarrollo &#124; Ubuntu Server</title>
		<link>http://neosergio.net/2010/06/26/errores-php/</link>
		<comments>http://neosergio.net/2010/06/26/errores-php/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 07:45:52 +0000</pubDate>
		<dc:creator>neosergio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Ubuntu GNU/Linux]]></category>

		<guid isPermaLink="false">http://neosergio.net/?p=493</guid>
		<description><![CDATA[En un servidor de producción es aconsejable NO mostrar los errores de PHP. En Ubuntu Server 10.04 sucede que por defecto está configurado para no mostrarlos (preparado para producción), sin embargo para desarrollar o por simples motivos de aprendizaje en &#8230; <a href="http://neosergio.net/2010/06/26/errores-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En un servidor de producción es aconsejable <strong>NO</strong> mostrar los errores de PHP. En Ubuntu Server 10.04 sucede que por defecto está configurado para no mostrarlos (preparado para producción), sin embargo para desarrollar o por simples motivos de aprendizaje en muchas ocasiones se requiere que los errores sean visualizados.</p>
<p>En el caso de fallar, cuando no muestra errores, simplemente aparecerá una página en blanco. Para cambiar este comportamiento se deben seguir los siguientes pasos:</p>
<p>1. Ubicar el archivo de configuración de PHP, por lo general se puede encontrar en /etc/php5/apache2/php.ini , en caso de no encontrarlo una simple ejecución de phpinfo() nos puede mostrar esa ubicación:</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2010/06/phpinfocut.png"><img class="size-medium wp-image-494  aligncenter" title="phpinfocut" src="http://neosergio.net/wp-content/uploads/2010/06/phpinfocut-300x173.png" alt="phpinfo()" width="300" height="173" /></a></p>
<p>2. Ubicar la linea que contenga la instrucción displa﻿y_errors (en mi caso, esta en la linea 531) y cambiar el Off por el On para que quede asi:</p>
<blockquote><p>display_errors = On</p></blockquote>
<p>3. Guardar  los cambios en el archivo php.ini</p>
<p>4. Reiniciar el servicio:</p>
<blockquote><p>sudo /etc/init.d/apache2 restart</p></blockquote>
<p>Es suficiente con estos pasos para habilitar la visualización de errores.</p>
<p>Happy coding <img src='http://neosergio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://neosergio.net/2010/06/26/errores-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jugando con YAXT: Instalando LAMP en Ubuntu 9.04 Netbook Remix</title>
		<link>http://neosergio.net/2009/05/18/yaxt-lamp-netbook-remix/</link>
		<comments>http://neosergio.net/2009/05/18/yaxt-lamp-netbook-remix/#comments</comments>
		<pubDate>Mon, 18 May 2009 12:53:20 +0000</pubDate>
		<dc:creator>neosergio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu GNU/Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://neosergio.net/?p=197</guid>
		<description><![CDATA[Este es YAXT, y este post describe una de las tantas formas de tener LAMP en Ubuntu 9.04 Netbook Remix. En esta oportunidad decidí usar la manera visual, entonces los pasos fueron los siguientes: 1. Ubicar la sección de administración &#8230; <a href="http://neosergio.net/2009/05/18/yaxt-lamp-netbook-remix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Este es <a href="http://neosergio.net/2009/05/12/y-este-es-yaxt/">YAXT</a>, y este post describe una de las tantas formas de tener <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)">LAMP</a> en Ubuntu 9.04 Netbook Remix.</p>
<p>En esta oportunidad decidí usar la manera visual, entonces los pasos fueron los siguientes:</p>
<p>1. Ubicar la sección de administración y elegir el Gestor de Paquetes Synaptic</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/administracion_yaxt.png"><img class="size-medium wp-image-201 aligncenter" title="yaxt administration" src="http://neosergio.net/wp-content/uploads/2009/05/administracion_yaxt-300x175.png" alt="" width="300" height="175" /></a></p>
<p>2. Una vez abierto Synaptic, buscar el menú Editar y la opción Marcar paquetes por tarea.</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/synaptic_editar.png"><img class="size-medium wp-image-202 aligncenter" title="edit synaptic" src="http://neosergio.net/wp-content/uploads/2009/05/synaptic_editar-300x175.png" alt="" width="300" height="175" /></a></p>
<p>3. Al abrirse la ventana de paquetes por tarea, solo se debe activar la opción: LAMP server y aceptar.</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/lamp_server_netbook_remix.png"><img class="size-medium wp-image-203 aligncenter" title="lamp server netbook remix" src="http://neosergio.net/wp-content/uploads/2009/05/lamp_server_netbook_remix-300x175.png" alt="" width="300" height="175" /></a></p>
<p>4. Luego aparecerá otra ventana donde informara de los cambios requeridos, se debe marcar estos cambios.</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/cambios.png"><img class="size-medium wp-image-205 aligncenter" title="synaptic changes" src="http://neosergio.net/wp-content/uploads/2009/05/cambios-300x175.png" alt="" width="300" height="175" /></a></p>
<p>5. Y por ultimo una ventana mas de resumen con todos los cambios a realizarse, se aplica.</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/aplicar.png"><img class="size-medium wp-image-206 aligncenter" title="apply changes synaptic" src="http://neosergio.net/wp-content/uploads/2009/05/aplicar-300x175.png" alt="" width="300" height="175" /></a></p>
<p>6. It works!!!</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/it_works_apache.png"><img class="size-medium wp-image-208 aligncenter" title="it works apache" src="http://neosergio.net/wp-content/uploads/2009/05/it_works_apache-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Si se desea probar un script en PHP, se debe reiniciar apache2</p>
<blockquote><p>sergio@yaxt:~$ sudo /etc/init.d/apache2 restart</p></blockquote>
<p>Un phpinfo() da esto como resultado.</p>
<p style="text-align: center;"><a href="http://neosergio.net/wp-content/uploads/2009/05/phpinfo_netbook_remix.png"><img class="size-medium wp-image-209 aligncenter" title="phpinfo() on netbook remix" src="http://neosergio.net/wp-content/uploads/2009/05/phpinfo_netbook_remix-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Happy LAMPing <img src='http://neosergio.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://neosergio.net/2009/05/18/yaxt-lamp-netbook-remix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ejercicio PHP: Autenticación de usuarios con sesiones en PHP y MySQL</title>
		<link>http://neosergio.net/2009/01/27/ejercicio-php/</link>
		<comments>http://neosergio.net/2009/01/27/ejercicio-php/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 06:37:58 +0000</pubDate>
		<dc:creator>neosergio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://neosergio.net/?p=115</guid>
		<description><![CDATA[Este es un ejemplo simple de autenticación de usuarios usando sesiones en PHP y consultando a una base de datos en MySQL. Voy a evitar pegar demasiado código en el post y me limitare a colocar enlaces hacia otra ubicación &#8230; <a href="http://neosergio.net/2009/01/27/ejercicio-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Este es un ejemplo simple de autenticación de usuarios usando sesiones en PHP y consultando a una base de datos en MySQL. Voy a evitar pegar demasiado código en el post y me limitare a colocar enlaces hacia <a href="http://code.neosergio.net/autenticacion_usuarios/">otra ubicación</a> donde sea mas inteligible el mismo. (Solo pondré las partes esenciales en el post, el resto de código está en los enlaces)</p>
<p style="text-align: left;">En primer lugar, algunos datos necesarios:</p>
<ul>
<li>Servidor: <strong>localhost</strong></li>
<li>Usuario: <strong>usuario_mysql</strong></li>
<li>Password: <strong>clave_mysql</strong></li>
<li>Nombre de la base de datos: <strong>ejemplos</strong></li>
</ul>
<p style="text-align: left;">Luego el esquema simple de la tabla usuarios, que almacenara el nombre del usuario y la clave.</p>
<p style="text-align: center;"><img class="size-full wp-image-117 aligncenter" title="campos_tabla_usuarios" src="http://neosergio.net/wp-content/uploads/2009/01/campos_tabla_usuarios.png" alt="" width="140" height="75" /></p>
<p style="text-align: left;">La manera mas práctica de organizar funciones en PHP es ubicarlas en un solo archivo, en este caso lo denominare <strong>funciones.php</strong> y <a href="http://code.neosergio.net/autenticacion_usuarios/funciones">este es su contenido</a>. Este archivo posee funciones que permiten conectarse a la base de datos, consultar la existencia de un registro en la misma y verificar si la sesión fue iniciada con el nombre de usuario, cada vez que se desee utilizar solo bastaría poner <strong>include(&#8216;funciones.php&#8217;)</strong> para incluirlo en cualquier script PHP.</p>
<p style="text-align: left;">Una vez que tenemos las funciones creadas, ya podemos empezar con el formulario de entrada (<a href="http://code.neosergio.net/autenticacion_usuarios/index">index.php</a>), lo importante es que contenga algo tan simple como esto:</p>
<blockquote><p>&lt;form method=&#8217;POST&#8217; action=&#8217;index2.php&#8217;&gt;<br />
Usuario &lt;input type=&#8217;text&#8217; name=&#8217;usuario&#8217;/&gt;&lt;br/&gt;<br />
Password &lt;input type=&#8217;password&#8217; name=&#8217;clave&#8217;&gt;&lt;br/&gt;<br />
&lt;input type=&#8217;submit&#8217; value=&#8217;Ingresar&#8217;/&gt;&lt;br/&gt;<br />
&lt;/form&gt;</p></blockquote>
<p>Este formulario enviara dos valores (usuario y clave) hacia el archivo <a href="http://code.neosergio.net/autenticacion_usuarios/index2">index2.php</a>, este archivo recogerá los datos enviados y los usará en la función conexiones(), si el usuario existe se iniciará la sesión e ingresará a las páginas permitidas para el usuario (<a href="http://code.neosergio.net/autenticacion_usuarios/ingreso">ingreso.php</a>, <a href="http://code.neosergio.net/autenticacion_usuarios/sistema">sistema.php</a>), si no existe volverá al formulario de ingreso.</p>
<blockquote><p>&lt;?php<br />
include (&#8216;funciones.php&#8217;);<br />
//usuario y clave pasados por el formulario<br />
$usuario = $_POST['usuario'];<br />
$clave = $_POST['clave'];<br />
//usa la funcion conexiones() que se ubica dentro de funciones.php<br />
if (conexiones($usuario, $clave)){<br />
header(&#8216;Location:ingreso.php&#8217;);<br />
} else {<br />
header(&#8216;Location: index.php&#8217;);<br />
}<br />
?&gt;</p></blockquote>
<p><a href="http://code.neosergio.net/autenticacion_usuarios/ingreso">Ingreso.php</a> y <strong>todas</strong> las páginas que se desean mantener disponibles solo a usuarios registrados deberán tener la forma de:</p>
<blockquote><p>&lt;?php<br />
include (&#8216;funciones.php&#8217;);</p>
<p>if (verificar_usuario()){<br />
//aqui debe venir todo el contenido necesario que solo el usuario validado puede acceder<br />
print &#8220;Desconectarse &lt;a href=&#8217;salir.php&#8217;/&gt;aqui&lt;/a&gt;&#8221;;<br />
} else {<br />
header(&#8216;Location:index.php&#8217;);<br />
}<br />
?&gt;</p></blockquote>
<p>Donde se usa la función verificar_usuario(), para permitir el acceso si es que el nombre del usuario fue configurado en una sesión, si la función devuelve un valor falso, retornara al formulario de entrada. Es necesario que todas las paginas posean parte de este código, así se evitará que un intruso pueda poner la url de una pagina interna y esta sea visible o accesible sin haber verificado al usuario.</p>
<p>Para salir del sistema y borrar la sesión se usa el archivo <a href="http://code.neosergio.net/autenticacion_usuarios/salir">salir.php</a>, este archivo contiene instrucciones para destruir la sesión y volver al formulario de ingreso, también esta validado solamente para usuarios verificados:</p>
<blockquote><p>&lt;?php<br />
include (&#8216;funciones.php&#8217;);<br />
if (verificar_usuario()){<br />
session_unset();<br />
session_destroy();<br />
header (&#8216;Location:index.php&#8217;);<br />
} else {<br />
header (&#8216;Location:index.php&#8217;);<br />
}<br />
?&gt;</p></blockquote>
<p>Lo que no se debe olvidar al agregar mas paginas al sitio es incluir el archivo de <a href="http://code.neosergio.net/autenticacion_usuarios/funciones">funciones.php</a> y usar la función verificar_usuario() para poder elegir entre el contenido al que debe acceder el usuario validado y el contenido para el visitante (usuario no validado).</p>
<p>Este ha sido un ejemplo simple de uso de sesiones en PHP, consultando a una base de datos en MySQL, existen muchas formas de lograr esto y obviamente mejorarlo, este es solo un ejercicio, útil para comprender el uso de sesiones.</p>
<p>Happy PHP Coding <img src='http://neosergio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://neosergio.net/2009/01/27/ejercicio-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ejercicio PHP: Grupos aleatorios de alumnos.</title>
		<link>http://neosergio.net/2008/11/26/ejercicio-php-aleatorios-alumnos/</link>
		<comments>http://neosergio.net/2008/11/26/ejercicio-php-aleatorios-alumnos/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 07:26:06 +0000</pubDate>
		<dc:creator>neosergio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://neosergio.net/?p=88</guid>
		<description><![CDATA[Pensemos en el siguiente caso: Una sección tiene 29 alumnos, los cuales se clasifican en tres grupos: programadores, diseñadores gráficos y alumnos con experiencia en networking, se desea formar grupos multidisciplinarios, que deben estar formados por un alumno de cada &#8230; <a href="http://neosergio.net/2008/11/26/ejercicio-php-aleatorios-alumnos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pensemos en el siguiente caso:</p>
<p>Una sección tiene 29 alumnos, los cuales se clasifican en tres grupos: programadores, diseñadores gráficos y alumnos con experiencia en networking, se desea formar grupos multidisciplinarios, que deben estar formados por un alumno de cada categoría, y debe ser formado aleatóriamente.</p>
<p>Lo primero que podría venir a la mente es tener 10 grupos, 9 con tres miembros de cada categoría y 1 de dos miembros que no tendrían roles específicos, pero aquí surge un inconveniente, las categorías no tienen el mismo numero de alumnos, son 8 programadores, 16 diseñadores gráficos y 5 que se dedicaran a networking, tal como se puede ver en estos archivos de texto respectivamente: <a title="alumnos programadores" href="http://code.neosergio.net/grupos_aleatorios_alumnos/programacion">programacion</a>, <a title="alumnos disenadores" href="http://code.neosergio.net/grupos_aleatorios_alumnos/diseno">diseno</a> y <a title="alumnos para networking" href="http://code.neosergio.net/grupos_aleatorios_alumnos/networking">networking.</a></p>
<p><strong>Una solución a este caso podría ser la siguiente:</strong></p>
<p>Revisar cuantos grupos como máximo, tendrán miembros multidisciplinarios, en este caso seria de acuerdo a la categoría que tiene menos integrantes. Luego de acuerdo al numero máximo de grupos que tendrán sus miembros completos, sacar aleatóriamente miembros de cada categoría hasta completar los grupos que si tendrán roles específicos.</p>
<p>Al resto que no están incluidos en los grupos con roles específicos, se les debe tratar por igual, formando así grupos sin roles específicos, teniendo como grupo final a uno conformado por dos alumnos.</p>
<p>Por lo tanto, plasmando la solución a este caso, tendríamos 5 grupos con roles definidos, 4 grupos sin roles definidos y 1 grupo de dos miembros, también sin roles definidos.</p>
<p><strong>Un script de la solución planteada es el siguiente:</strong></p>
<blockquote><p>&lt;?php<br />
//fuente de datos, lista de alumnos que estan en la particion /home<br />
$grupo_1 = file(&#8220;programacion&#8221;);<br />
$grupo_2 = file(&#8220;diseno&#8221;);<br />
$grupo_3 = file(&#8220;networking&#8221;);</p>
<p>//cantidad de elementos<br />
$num_grupo_1 = count($grupo_1); $num_grupo_2 = count($grupo_2);<br />
$num_grupo_3 = count($grupo_3);<br />
$total_alumnos = $num_grupo_1+$num_grupo_2+$num_grupo_3;</p>
<p>//impresion de listas iniciales y la cantidad de sus elementos<br />
print &#8220;Listas Iniciales &#8211; $total_alumnos alumnos&lt;table border=&#8217;1&#8242;&gt;&#8221;;<br />
print &#8220;&lt;tr&gt;&lt;th&gt;Programacion &#8211; $num_grupo_1 alumnos&lt;/th&gt;&lt;/tr&gt;&#8221;;<br />
foreach ($grupo_1 as $valor){ print &#8220;&lt;tr&gt;&lt;td&gt;$valor&lt;/td&gt;&lt;/tr&gt;&#8221;; }<br />
print &#8220;&lt;tr&gt;&lt;th&gt;Diseno &#8211; $num_grupo_2 alumnos&lt;/th&gt;&lt;/tr&gt;&#8221;;<br />
foreach ($grupo_2 as $valor){ print &#8220;&lt;tr&gt;&lt;td&gt;$valor&lt;/td&gt;&lt;/tr&gt;&#8221;; }<br />
print &#8220;&lt;tr&gt;&lt;th&gt;Networking &#8211; $num_grupo_3 alumnos&lt;/th&gt;&lt;/tr&gt;&#8221;;<br />
foreach ($grupo_3 as $valor){ print &#8220;&lt;tr&gt;&lt;td&gt;$valor&lt;/td&gt;&lt;/tr&gt;&#8221;; }<br />
print &#8220;&lt;/table&gt;&#8221;;</p>
<p>//define el numero de grupos disponibles<br />
$numero_grupos = $num_grupo_1;<br />
if ($numero_grupos&gt;=$num_grupo_2){ $numero_grupos = $num_grupo_2; }<br />
if ($numero_grupos &gt;= $num_grupo_3){ $numero_grupos = $num_grupo_3; }<br />
print &#8220;El numero de grupos con integrantes con roles exactos es $numero_grupos&lt;br/&gt;&#8221;;</p>
<p>//tablas ordenadas aleatoriamente con integrantes exactos<br />
print &#8220;Grupos ordenados aleatoriamente, los integrantes tienen un rol especifico&#8221;;<br />
print &#8220;&lt;table border=&#8217;1&#8242;&gt;&#8221;;<br />
print &#8220;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;Programacion&lt;/th&gt;&lt;th&gt;Diseno&lt;/th&gt;&lt;th&gt;Networking&lt;/th&gt;&lt;/tr&gt;&#8221;;<br />
$numero = $numero_grupos;<br />
for ($i=$numero; $i&gt;0; $i&#8211;){<br />
$elemento = $numero-$i+1;<br />
print &#8220;&lt;tr&gt;&#8221;;<br />
print &#8220;&lt;td&gt;$elemento&lt;/td&gt;&#8221;;<br />
$claves_a = array_rand($grupo_1); print &#8220;&lt;td&gt;$grupo_1[$claves_a]&lt;/td&gt;&#8221;; unset ($grupo_1[$claves_a]);<br />
$claves_b = array_rand($grupo_2); print &#8220;&lt;td&gt;$grupo_2[$claves_b]&lt;/td&gt;&#8221;; unset ($grupo_2[$claves_b]);<br />
$claves_c = array_rand($grupo_3); print &#8220;&lt;td&gt;$grupo_3[$claves_c]&lt;/td&gt;&#8221;; unset ($grupo_3[$claves_c]);<br />
print &#8220;&lt;/tr&gt;&#8221;;<br />
}<br />
print &#8220;&lt;/table&gt;&#8221;;<br />
//almacenamiento de los restantes en un nuevo arreglo<br />
$restantes = array();<br />
foreach ($grupo_1 as $valor){ $restantes[]=$valor; }<br />
foreach ($grupo_2 as $valor){ $restantes[]=$valor; }<br />
foreach ($grupo_3 as $valor){ $restantes[]=$valor; }</p>
<p>//impresion de grupos de alumnos restantes<br />
print &#8220;Grupos ordenados aleatoriamente, no tienen roles especificos&#8221;;<br />
print &#8220;&lt;table border=&#8217;1&#8242;&gt;&lt;tr&gt;&#8221;;<br />
$contador_cada_3 = 0; $num_grupo_r = count($restantes);<br />
$numero_grupos++;<br />
print &#8220;&lt;td&gt;$numero_grupos&lt;/td&gt;&#8221;;<br />
for ($i=$num_grupo_r; $i&gt;0 ; $i&#8211;){<br />
$claves_r = array_rand($restantes);<br />
print &#8220;&lt;td&gt;$restantes[$claves_r]&lt;/td&gt;&#8221;; unset ($restantes[$claves_r]);<br />
++$contador_cada_3;<br />
//$restantes debe tener elementos y se agrupan cada 4 alumnos.<br />
if ($contador_cada_3==3 &amp;&amp; count($restantes)){<br />
$contador_cada_3 = 0;<br />
print &#8220;&lt;/tr&gt;&lt;tr&gt;&#8221;; $numero_grupos++; print &#8216;&lt;td&gt;&#8217;.$numero_grupos.&#8217;&lt;/td&gt;&#8217;;<br />
}<br />
}<br />
print &#8220;&lt;/tr&gt;&lt;/table&gt;&#8221;;</p>
<p>?&gt;</p></blockquote>
<p>Por la rapidez con que desarrollé el script (menos de 30 min) he omitido algunos detalles, que podrían hacer al resultado mas vistoso y ordenado. Me he enfocado en el resultado y en el buen funcionamiento del script.</p>
<p><a title="script en PHP" href="http://code.neosergio.net/grupos_aleatorios_alumnos/aleatorio.php">Aquí esta el resultado</a></p>
<p>Espero haber sido explicativo con los comentarios en el código del programa en PHP, si existe alguna parte que no se entiende, coméntenla y con gusto les explicaré lo que hice. Por otro lado también pueden contribuir a mejorar la solución, todo proceso o solución se puede mejorar.</p>
<p><strong>happy PHP coding <img src='http://neosergio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://neosergio.net/2008/11/26/ejercicio-php-aleatorios-alumnos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
