Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2010, 04:14
FRACTO
 
Fecha de Ingreso: noviembre-2007
Mensajes: 45
Antigüedad: 16 años, 5 meses
Puntos: 1
Envio de formulario en la misma página

hola a todos, gracias a la ayuda de algun compañero del foro de php y lo que he ido mirando por algunos blogs he realizado un listado de las entradas de la base de datos, donde seleccionando mediante checkbox les puedo aplicar una accion sobre ellos (eliminar, editar, publicado...). El código es el siguiente (lo pongo todo por si fuera necesario para avanzar):

list_content.php

Código:
<form method="post" action="index.admin.php?page=list_process">
    <div id="sub_menu">
        <h4>Enlaces rapidos:</h4>
        <ul>
        <li><input type="image" name="action" value="publish" src="styles/images/publish.icon.png" title="Publicar" /></li>
        <li> | </li>
        <li><input type="image" name="action" value="unpublish" src="styles/images/unpublish.icon.png" title="No Publicar"/></a></li>
        <li> | </li>
        <li><input type="image" name="action" value="delete" src="styles/images/trash.icon.png" class="deletebutton" title="Eliminar" /></li>
        <li> | </li>
        <li><input type="image" name="action" value="edit" src="styles/images/edit.icon.png" title="Editar" /></a></li>
        <li> | </li>
        <li><a href="index.admin.php?page=add_content" title="Crear"><img src="styles/images/create.icon.png" /></a></li>
        </ul>
    </div>

......................

<table class="border">
                <thead>
                <tr>
                    <th scope="col" width="15">Id</td>
                    <th scope="col" width="25"><input type="checkbox" name="select_all" class="chkdAll" value=""></th>
                    <th scope="col">Titulo</th>
                    <th scope="col">Publicado</th>
                    <th scope="col">Sección</th>
                    <th scope="col">Categoría</th>
                    <th scope="col" width="40">Autor</th>
                    <th scope="col" width="60">Fecha</th>
                </tr>
                </thead>
                    <tbody>
                        <?php
                            while($row = mysql_fetch_assoc($entries)) {    
                                
                                echo "
                                <tr>
                                    <td>".$row['id']."</td> 
                                    <td><input type='checkbox' class='chkId' name='items[]' value='".$row['id']."'></th>
                                    <td class='title'><a href='index.admin.php?page=list_content&id=".$row['id']."' class='";
                                    
                                    if($row['reviewed'] == 1)
                                        echo "review";
                                    
                                    echo "'>".$row['title']."</a></td>
                                    <td>";
                                    
                                    if($row['published'] == 1) {
                                        echo "<img src='styles/images/publish.icon.png' width='25' height='25' />";
                                    }
                                    else {
                                        echo "<img src='styles/images/unpublish.icon.png' width='25' height='25' />";
                                    } 
                                    echo "</td>
                                    <td>".$row['section']."</td>
                                    <td>".$row['category']."</td>
                                    <td>".$row['author']."</td>
                                    <td>".$row['fechasp']."</td>
                                </tr>
                                ";
                            }
                        ?>
                        <br>
                    </tbody>
                </table>
list_process.php

Código:
$items = $_POST['items'];

function trash($items) {

    if($items == 0)
    {
        echo "No has seleccionado ningun elemento. Debes seleccionar almenos uno!";    
    }
    else
    {
        // Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
        $list_selected=implode(',',$_POST['items']);
        
        mysql_query("DELETE FROM content WHERE id IN(".$list_selected.")");
        echo "Las entradas seleccionadas se han eliminado satisfactóriamente";       
    }
}

function publish($items) {

    if($items == 0)
    {
        echo "No has seleccionado ningun elemento. Debes seleccionar almenos uno!";    
    }
    else
    {
        // Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
        $list_selected=implode(',',$_POST['items']);
        
        mysql_query("UPDATE content SET published=1 WHERE id IN(".$list_selected.")");
        echo "Las entradas seleccionadas se han publicado satisfactóriamente";       
    }
} 

function unpublish($items) {

    if($items == 0)
    {
        echo "No has seleccionado ningun elemento. Debes seleccionar almenos uno!";    
    }
    else
    {
        // Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
        $list_selected=implode(',',$_POST['items']);
        
        mysql_query("UPDATE content SET published=0 WHERE id IN(".$list_selected.")");
        echo "Las entradas seleccionadas se han despublicado satisfactóriamente";       
    }
}

if($_POST['action']) {

    //Según la acción escojemos el script correspondiente
    switch ($_POST['action']) {
        case "delete":
        trash($_POST['items']);
        break;

        case "publish":
        publish($_POST['items']);
        break;

        case "unpublish":
        unpublish($_POST['items']);
        break;
        
        default:
        echo "Error en la página.Por favor, vuelve a internarlo";
        exit();
    }

}
else {
//se ha accedido a esta página directamente, sin someter ningún formulario. Aquí puedes mostrar un mensaje, redireccionar la página, finalizar el script con exit(),...
echo "No debes estar aqui!! Vuelve por donde has venido jaja";
}
Pues bien, ahora me funciona correctamente. El problema que tengo es que cuando envio el formulario me va a la página list_process.php y a mi lo que me gustaria es que me informara en la misma página del proceso, refrescando la página directamente.

Por lo poco que sé creo que con javascript y/o Ajax se puede realizar esto pero no se por donde empezar. Alguien me podría orientar o enlazar una página donde puedo encontrar algo como lo que busco?

Gracias!!