Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44

    Trasferire dati in altre tabelle

    Ciao a tutti!
    Ho creato una pagina con un form contenente una lista <option>, attraverso un form di registrazione invio i dati in una tabella generale che ho chiamato "utenti" del mio database.
    Vorrei che, a seconda dell'opzione scelta nel modulo <option>, i dati dell'utente vengano trasferiti (o copiati) in una seconda tabella che avrà come nome la scelta effettuata dall'utente con il modulo.
    Così che io possa catalogare, a seconda della scelta, i vari utenti. Inoltre vorrei dare un limite di contenimento alla seconda tabella facendo sì che appena viene raggiunto, ad esempio, il numero di 20 utenti l'opzione che si chiama come la tabella venga nascosta (o rimossa) dal modulo <option> e che così un utente potrà scegliere una delle opzioni rimanenti.

    Ho cercato in giro ma ho trovato niente, spero che qui qualcuno possa darmi qualche suggerimento.
    Spero di essermi spiegato bene!

    Saluti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per duplicare i dati in una seconda tabella basta che aggiungi una query come quella per la tabella "utenti", ma a cui cambi il nome della tabella target, per esempio
    Codice PHP:
    $query "INSERT INTO utenti (username, email, ....) VALUES ('pippo', 'pippo@isp.com', ... )";
    //esegui qeusta query

    $query "INSERT INTO ".$_POST['altra_tabella']." (username, email, ....) VALUES ('pippo', 'pippo@isp.com', ... );
    //esegui qeust'altra query in cui 
    $_POST['altra_tabella'] è il nome della tabella in cui copiare i dati
    //e che proviene dal menu <select> 
    Per il limite di elementi nelle tabelle potresti preparare un array con i nomi delle tabelle e lo popoli secondo l'attuale numero di elementi che contengono.
    Fai una query "count" su ogni tabella, se il risultato è minore del limite che hai deciso, allora metti il nome della tabella nell'array, altrimenti no.

    Lato frontend crei il menu select ciclando sull'array che genererà solo gli option contenenti le tabelle con spazio disponibile.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44
    Grazie mille per la prima risposta, ora funziona!
    Non ho capito molto bene invece la seconda, cioè potrei fare che ogni utente registrato incrementa la query count e poi verifico se il numero di utenti in una tabella è superiore a 20 non mostro l'opzione, altrimenti la mostro?
    Come potrei scrivere il ciclo per mostrare/nascondere il modulo?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    La query count non è altro che

    SELECT count(*) AS records FROM tabella

    così sai quanti record sono contenuti nella tabella in questione, ovviamente dovrai farne una per ogni tabella che vuoi controllare.
    Se il numero (records) che ti viene restituito è minore del limite che decidi tu, metti in un array il nome della tabella, altrimenti no.
    In questo modo nell'array ci saranno solo i nomi delle tabelle che hanno posti liberi ed usi l'array per creare gli option

    Codice PHP:
    foreach($tabelle as $tabella)
    {
        echo 
    '<option value="'.$tabella.'">'.$tabella.'</option>';


  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44
    Ok allora anche qui la prima parte l'ho capita e so come scriverla, ma di nuovo l'ultima parte non riesco a focalizzarla...
    Cioè prima verifico il numero degli utenti in tutte le tabelle e poi metto la condizione ma poi non riesco a metterle/toglierle automaticamente, perché mi viene in mente solo di scrivere caso per caso a seconda di quale tabella sia piena oppure no...come faccio a ciclarlo?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Te l'ho scritto il ciclo, se hai capito la prima parte, dentro l'array $tabelle ci saranno solo quelle in cui si possono inserire altri dati, quindi verranno creati i tag <option> solo per quelle tabelle, quelle piene non appariranno.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44
    Ok ho capito, non riuscivo a capire $tabelle...grazie mille per l'aiuto!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44
    Ho provato il tutto e mi funziona praticamente tutto a parte un controllo che proprio non riesco a far funzionare, quello per verificare se in una tabella c'è un numero superiore di utenti questa non viene visualizzata.
    Questo è il codice..cosa sbaglio? :S

    Codice PHP:
    //Conto le righe di ogni tabella
    $conta1 "SELECT count(*) FROM attività1";
    $conta2 "SELECT count(*) FROM attività2";
    $conta3 "SELECT count(*) FROM attività3";
    $conta4 "SELECT count(*) FROM attività4";
    $conta5 "SELECT count(*) FROM attività5";

    //Inizializzo array tabelle
    $array = array();

    //Controllo il numero di alunni nelle tabelle
    if($conta1 20) {     
    $array[] = 'attività1';

    if(
    $conta2 2) {     
    $array[] = 'attività2';

    if(
    $conta3 30) {     
    $array[] = 'attività3';

    if(
    $conta4 20) {     
    $array[] = 'attività4';

    if(
    $conta5 2) {     
    $array[] = 'attività5';

    Quando eseguo la pagina non mi da nessun errore ma mi visualizza tutte le opzioni quando, ad esempio, la tabella 5 è piena!

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Perché nelle variabili $contaX non c'è un numero, ma il risultato di una query, quindi devi eseguire il fetch prima

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    44
    mysql_query("....");

    questo?

Tag per questa discussione

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.