• Consiglio Direttivo

    Troppo compilato non dovrebbe essere.

    Se creassi le checkbox così:
    [PHP]// estrai id e name dalla tabella utenti e poi cicli il risultato

    echo $row['name']." - <input type="checkbox" name="id_utente[]" value="".$row['id_utente']."" />";[/PHP]

    Facendo il submit recuperi $_POST['id_utente'], che sarà un array contenente gli id_utente checkati....ti basta fare un insert con l'id_file che hai ed il contenuto dell'array. 😉


  • User Newbie

    OK, ci ho provato. 😄

    [PHP]<?php

    // connessione e selezione del database
    mysql_connect('localhost', 'root', 'pwd')
    or die('Connessione non riuscita: ' . mysql_error());

    if(!mysql_select_db('nomedb'))
    die('Selezione database fallita!');

    echo " <form method="post" action="recuperocheckbox.php"> ";

    //seleziona la tabella e visualizza gli username in ordine alfabetico

    $query = "SELECT * FROM qls3_users ORDER BY username";
    $result = mysql_query($query);

    //prendi tutto il contenuto
    while($r=mysql_fetch_array($result))
    {

    $username=$r["username"];
    $id=$r["id"];

    // estrai il risultato

    echo " <input type="checkbox" name="username[]" value="$id" /> $username " ;

    }

    echo " <input type="submit" value="invia form" />
    </form>";

    ?> [/PHP]

    Così può andare?

    E ora come associo l'username al file che ho uppato? :mmm:

    Un altro aiutino? 😄


  • Consiglio Direttivo

    Hai una tabella dove associ path del file a id del file?

    Se no...creala. 😄

    A upload effettuato recuperi l'id del file tramite la funzione mysql_insert_id(); il risultato è l'id dell'ultimo inserimento effettuato.
    Metti il valore dell'id in un campo hidden e quando fai il submit del form ti recuperi sia l'array degli id utente che l'id del file.
    Poi cicli l'array ed inserisci l'associazione id_utente - id_file. 😉


  • User Newbie

    L'associazione dovrebbe esserci già nella tabella del mio primo post, no? :mmm:

    Nel database, l'id del file è nella colonna id_file. Per recuperare l'ultimo, basta che uso:

    [PHP]$ultimo_id=mysql_insert_id();[/PHP]

    poi nel campo hidden lo recupero:

    [PHP]<input type="hidden" name="ultimofile" value="$ultimo_id">[/PHP]

    giusto?

    ma nel submit non so come si recuperano entrambi i valori... 😞

    Anche perchè, ho usato alcune istruzioni in mySQLi (che mi hanno consigliato) nella parte dell'upload.

    Nella scelta dell'utente invece ho usato le istruzioni in mySQL.

    Siccome non sono espertissimo in materia (ma mi ritengo uno smanettone nato), dici che mi conviene integrarle in un'unica pagina? è fattibile o vanno in conflitto? Perchè vorrei evitare un redirect, visto che l'upload me lo fa tutto in background senza caricamenti della pagina.

    Ti devo una cassa di birra per la pazienza (non scherzo eh)! 😄


  • Consiglio Direttivo

    @d4ve said:

    L'associazione dovrebbe esserci già nella tabella del mio primo post, no? :mmm:
    Si hai ragione. 😄

    Nel database, l'id del file è nella colonna id_file. Per recuperare l'ultimo, basta che uso:

    [php]$ultimo_id=mysql_insert_id();[/php]Si, devi richiamare la funzione dopo l'inserimento nella tabella.

    poi nel campo hidden lo recupero:

    [php]<input type="hidden" name="ultimofile" value="$ultimo_id">[/php]giusto?
    Ok. 🙂

    ma nel submit non so come si recuperano entrambi i valori... 😞
    [php]$id_file=$_POST['ultimofile']; //contiene l'id del file
    $id_user=$_POST['id_utente']; //contiene un array degli id user selezionati
    [/php]> Siccome non sono espertissimo in materia (ma mi ritengo uno smanettone nato), dici che mi conviene integrarle in un'unica pagina? è fattibile o vanno in conflitto? Perchè vorrei evitare un redirect, visto che l'upload me lo fa tutto in background senza caricamenti della pagina.
    Come preferisci. Personalmente utilizzerei una pagina a se stante o una funzione ad hoc. 😉

    Ti devo una cassa di birra per la pazienza (non scherzo eh)! :DLa birra non si rifiuta mai. :fumato:


  • User Newbie

    "Piccolo" problema però...

    Devo passare i valori dalla pagina di upload a quella di selezione degli utenti, giusto?

    Ma come?

    Se inserisco "member_select.php" nell'action dell'upload, effettua il redirect alla pagina di selezione, ma non mi memorizza l'immagine nel database. Cosa sbaglio? :mmm:


  • Consiglio Direttivo

    Non hai bisogno di passare nulla alla pagina di selezione degli utenti.
    L'id_file lo recuperi tramite la funzione e gli utenti tramite una SELECT...come vedi non hai bisogno di passare valori. 😉


  • User Newbie

    Aaah, ottimo!

    Quindi mi basta mettere un link sotto il form di upload che mi rimandi alla pagina di selezione dell'utente?

    ...ricapitolando:

    Nella pagine di selezione utente, oltre alle checkbox, inserisco la funzione per recuperare l'ultimo id inserito nel database.

    Poi, l'action mi porta alla pagina "recuperocheckbox.php".

    E quest'ultima conterrà:

    [PHP]$id_file=$_POST['ultimofile']; //contiene l'id del file
    $id_user=$_POST['username']; //contiene un array degli id user selezionati [/PHP]

    Ho provato a ciclare l'array ma se ci aggiungo un echo non mi restituisce gli id degli utenti, per cui sbaglio sicuramente. Un aiuto? 😞

    E soprattutto, ad associare l'id del file all'id dell'utente? come si fa?

    Tieni conto che i file e gli utenti sono in due tabelle separate per tenere più ordinato il database, sì possono ugualmente collegare tra loro?

    Grazie ancora Samyorn!


  • Consiglio Direttivo

    Prova a vedere l'HTML della pagina con le checkbox, dovrebbero essere:

    <input type="checkbox" name="username[]" value="1" />

    nel value ovviamente troverai tutti gli id utente.

    Per fare l'associazione crei una nuova tabella con due campi: id_file - id_user

    Ciclando l'array inserirai tutti gli id_user contenuti in esso e l'id_file sarà uguale per tutti. 😉


  • User Newbie

    Ok, ci ho provato!

    La tabella che mi associa l'user ai file l'ho creata...

    ...e se ho capito bene, il resto dovrebbe essere più o meno così, correggimi se sbaglio (non l'ho ancora testato):

    [PHP]
    $id_file=$_POST['ultimofile']; //contiene l'id del file
    $id_user=$_POST['username']; //contiene un array degli id user selezionati

    $query_file="INSERT INTO associazione_utenti_file (id_file) VALUES ('$id_file')";

    if (!mysql_query($query_file,$connessione))
    {
    die('Errore! ' . mysql_error());
    }

    for ($i = 1; $i <= sizeof($id_user); $i++) {
    $query_user = "INSERT INTO associazione_utenti_file (id_user) VALUES ('$id_user*') ";
    $result = mysql_query($query_user, $connessione) or die("Errore...");
    echo "I dati inseriti sono <br> - ID FILE: ".$id_file."<br>ID USER: ".$id_user;

    }
    [/PHP]

    Può andare?
    Pardon, lo so che ho delle enormi lacune! 😄


  • Consiglio Direttivo

    @d4ve said:

    Ok, ci ho provato!
    😉

    correggimi se sbaglio (non l'ho ancora testato):
    Si, così non va bene, eseguendo così gli insert otterrai un record con il solo id_file e tanti record con il solo id_user.
    Pensa alla tabella di un database come ad un file excel (scusa l'esempio banale, ma rende l'idea):

    • le colonne (campi) sono: Nome - Cognome
    • le righe (record) sono il contenuto: Mario - Rossi

    Per inserire il primo nominativo scriverai nella riga 1 -colonna 1 "Mario" e nella cella accanto (riga 1 - colonna 2) "Rossi".
    Ogni volta che fai un INSERT tu crei un record (una riga nell'esempio del file excel), quindi devi valorizzare contemporaneamente sia il campo Nome che il campo Cognome:

    [php]//metti ovviamente il require del file di connessione
    $id_file=$_POST['ultimofile']; //contiene l'id del file
    $id_user=$_POST['username']; //contiene un array degli id user selezionati

    for ($i = 0; $i <= sizeof($id_user); $i++) {
    $query_user = "INSERT INTO associazione_utenti_file (id_file,id_user) VALUES ('$id_file','".$id_user*."')";
    $result = mysql_query($query_user, $connessione) or die ("Errore...");
    echo "I dati inseriti sono <br> - ID FILE: ".$id_file."<br>ID USER: ".$id_user;

    }
    [/php]
    Altra cosa da considerare è che gli array numerici partono sempre da 0 e non da 1. 😉

    Pardon, lo so che ho delle enormi lacune! 😄
    Pian piano vedrai che ti verrà tutto più semplice, smanettare serve a molto... moltissimo. 😄