Usando arrays en Ajax.InPlaceCollection desde PHP

Array

En ocasiones nos puede interesar editar un texto y que aparezca una lista “select” con diversas opciones. Si éstas se hallan predefinidas, no hay mayor problema que seguir los ejemplos que hay en el wiki de Script.aculo.us pero si las opciones las recogemos de una base de datos o de un fichero, tendremos un “array” que podemos pasar fácilmente al select de la siguiente forma.

Esta vez lo he puesto todo en el mismo archivo y no hay base de datos detrás (es fácil venir de una consulta y mandar el resultado a otro script; mira posts anteriores en este mismo blog).

Ahí va el index.php:


<?php
/*
//Script PHP-AJAX distribuido con la intención de que sea útil/
//Usa las librerías Prototype y Scriptaculous//////////////////
//Ramón Castro Pérez (http://ramoncastro.es/PeHachePe/)////////
//Licencia GPL/////////////////////////////////////////////////
//Conserva esta nota///////////////////////////////////////////
*/
//tenemos un array que puede venir de una consulta o de un fichero de texto o de donde sea, vamos
$array = array(‘Esther’,'Elena’,'Ramón’,'Montse’);

?>

<!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>Principal</title>
<script src=”js/prototype.js” type=”text/javascript”></script>
<script src=”js/scriptaculous.js” type=”text/javascript”></script>
</head>
<body>

<?php

//recojo el valor si ya he enviado la opción
$valor = $_POST['value'];
if(isset($valor))
{
echo ‘<h1 style=”text-align:center”>Has elegido a ‘.$valor.’</h1>’;
}
else//si acabo de llegar a la página
{
//tenemos el párrafo de texto editable
echo ‘<p id=”edita”>Elige tutor/a</p>’;

//Extraemos los valores del array y los pasamos a una cadena
$precadena = implode(“‘,’”,$array);
//Colocamos las comillas primera y final en la cadena
$cadena = “‘”.$precadena.”‘”;

//montamos el script donde pasamos el resultado a la página que procesa
//en el ejemplo ésta misma pero no tiene que serlo
//OJO, en la matriz Collection pasamos la variable $cadena

?>

<script type=”text/javascript”>
new Ajax.InPlaceCollectionEditor(‘edita’,'index.php’,{collection: [<?php echo $cadena; ?>], ajaxOptions: {method: ‘post’}});
</script>

<?php

}

echo ‘
</body>
</html>
‘;

?>

Las librerías usadas las puedes encontrar en http://script.aculo.us en la sección Downloads
Si copias y pegas el index.php, cambia las comillas inclinadas por las normales en tu editor de texto

Saludos

[tag]ajax, placecollection, scriptaculous, array, php[/tag]


About this entry