Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73

    [problema]Database auto aggiornato

    Ciao a tutti, cerco di spiegarvi in poche parole la mia applicazione web in php.
    Ho una pagina che da un lato ha dei tag input per inserire dei dati(ammettiamo libro e autore), e sotto questi tag vi è l'intero database che contiene un tutti i dati inseriti(tutti i libri e autori).
    Il problema è che vorrei che il database si aggiornasse in automatico ogni tot secondi. Per fare questo, carico la pagina, almeno all'inizio, tramite il comando jQuery $(#id).load(reload.php). Il file reload.php contiene tutta la stampa del database tramite <table>

    Ok, il fatto è che nel file reload.php richiamo delle funzioni javascript sull'evento onClick per delle checkbox in modo tale che quando seleziono una chackbox appaia un pulsante Elimina per eliminare la riga corrispondente a quel record nel database. Allora, se il contenuto del file reload.php è all'interno della pagina principale funziona tutto, se però esiste il file reload.php ed uso il metodo load(reload.php), nel momento in cui seleziono una checkbox, non appare nessun pulsante,

    Questo è un esempio:

    Codice PHP:
    print("<td><input type='checkbox' name='checkbox[]' id='$check' value='$rowSPESA[0]' onclick='add_delete()'/></td>\n"); 
    Quando sul client seleziono la checkbox la funzione add_delete() non viene richiamata. Come mai?
    Aspetto una vostra risposta, vi ringrazio anticipatamente.

  2. #2
    Devi usare il .live(), in quanto in pratica ricarichi la pagina e crei quindi nuovi elementi.
    Fai così:
    Codice PHP:
    $(".class_dei_checkbox").live('click', function(){
        ... 
    tutto ciò che vuoi...
    }); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    Innanzitutto ti ringrazio per la risposta. Ma non ho capito dove devo andare ad inserire il .live() . In pratica nel file javascript la funzione add_delete è fatta cosi:

    Codice PHP:
    $('input[id*="check"]').bind('click',add_delete); 
    tu dici di cambiare .bind in .live? E cosa combierebbe?

  4. #4
    Come non detto, se usi jquery >= v. 1.7, il live è deprecato. Leggi qua http://api.jquery.com/live/

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    Ok, quindi avrei due possibilità: usera .On() se uso jQuery >= 1.7 oppure usare .delegate().
    Vero?
    Comunuque, è sensato sostituire .bind con .On()/.delegate()?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    niente da fare, ho provato anche a fare in modo di far aparire il pulsante con il metodo On() di jQuery, ma il risultato non cambia in quanto selezionando la checkbox è come se la funzione add_delete non partisse

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    Ragazzi, potete aiutarmi, non so veramente come venirne a capo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    Allora ragazzi, forse è meglio se vi posto un po' di codice. Allora, ho un file che si chiama matrice.php che al suo interno ha:

    codice:
    <script type="text/javascript" language="JavaScript"> 			 			
    var array_ids = []; 			
    var http2 = ReturnObject();
    
    $('document').ready(function(){
    $('#id_NOshared').bind('click',mostra); 				
    $('#id_shared').bind('click',nascondi); 				$('input[id*="check"]').bind('click',add_delete); 				
    $('#dropDB').bind('click', drop); 				
    $('#editDB').bind('click', edit);
    
    $('#id_div').load(reload.php)
    }

    Questo vuol dire che quando hgo caricato tutto il documento, identifico lìelemento il cui id è id_div e ci inserisco il contenuto del file reload.php.

    nel file reload.php tra le varie operazioni, ci sono delle checkbox così dichiarate:

    Codice PHP:
    print("<td><input type='checkbox' name='checkbox[]' id='$check' value='$rowSPESA[0]' onclick='add_delete()'/></td>\n"); 
    Questo vuol dire che al click sulla checkbox scatta la funzione javascript add_delete() dichiarata nel file matrice.php

    Ecco, il problema è proprio questo, se lascio il codice così com'è scritto qui, quando clicco sulla checkbox, la funzione add_delete non viene invocata per nulla, anche se è presente nel file matrice.php. Perchè?Come mai?

  9. #9
    Io non la vedo la funzione add_delete, dov'è?
    Così come non vedo le funzioni "mostra", "nascondi", "drop", "edit" che vengono richiamate via jquery...

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    73
    Ok, scusa. Eccole.

    [B]add_delete[/B
    codice:
    function add_delete(){ 					
    var id = this.value; 					 					if($(this).is(':checked')){ 						
    array_ids.push(id); 						
    $("#dropDB").show(); 						$("#editDB").show(); 					 					
    }else{ 						
    var index = array_ids.indexOf(id); 						 						array_ids.splice(index, 1); 						
    if(array_ids.length == 0){ 							
    $("#dropDB").hide(); 							
    $("#editDB").hide(); 						
    } 					
    } 				
    }
    ]

    mostra
    codice:
    function mostra(){ 				
    	$('#box').show(); 			
    }
    nascondi
    codice:
    function nascondi(){
    					
    	$('#box').hide();
    	//elimina tutti i figli dell'elemento new_table
    	var cell = document.getElementById('new_table');
    	if (cell.hasChildNodes()){
    	    while (cell.childNodes.length >= 1 ){
    	        cell.removeChild(cell.firstChild );       
    	    } 
    	}
    }
    La funzione drop non fa altro che inviare una richiesta Ajax per eliminare righe dal database, ed edit permette la modifica di una riga della tabella

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.