Php con numerazione progressiva

Discussione in 'PHP' iniziata da Peppe83, 25 Ottobre 2017.

  1. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Ciao a tutti, vorrei creare un file php, da inserire su un sito, come modulo d'iscrizione ma vorrei inserire ad ogni modulo un numero progressivo automatico come numero di tessera, secondo voi è possibile?
     
  2. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao

    Fai un'iscrizione quindi hai un database giusto? Se è cosi prima di far registrare vai ad eseguire una query e vedi quale è l'ultimo ID e incrementi di 1.

    Ma tutta questa scomodità la potresti evitare facendo direttamente un' ID Autoincrement.

    Se hai bisogno spiega meglio cosa vorresti fare e vediamo di risolvere;).
     
  3. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    ciao, allora si lavoro su database , ti allego la schermata del database e anche quella del foglio che utilizzo per l'inserimento dei dati, io vorrei che la casella Numero di Terssera si numeri da sola ad ogni inserimento di dati e non inserirla io, scusami se forse non sono stato abbastanza chiaro ma non sono molto pratico ancora di codici ecc ecc quindi per favore se puoi aiutarmi spiegandomi passo passo come fare
     

    Files Allegati:

  4. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Buongiorno,
    Cosa è id_anagrafe?

    Allora io ti consigliere di aggiungere una colonna alla tabella prima di "ntessera" e chiamarla id e dare autoincrement dal database e li ci sarà l'incremento automatico.
     
    Ultima modifica: 31 Ottobre 2017
  5. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    non so cosa sia l'id_anagrafe, ma facendo come dici tu nella casella numero di tessera si incrementa il numero o lo fa solo nella tabella del database? Ti Allego il codice php della pagina che gestisce l'iscrizione cosi vedi se riesci a capire come gestire quella casella...

    PHP:
    session_start();
    $user = $_SESSION['utente'];
    $langanagrins = $_SESSION['lingua'];
    $paginaanagrins = "insanagrins.inc";
    $linguaanagrins = ($langanagrins.$paginaanagrins);
    include($linguaanagrins);

    if ($user == 'admin') {

    include('./top.inc');
    include('./menu.inc');

        include ('./dati_db.inc');
        mysql_connect("$host", "$username", "$password")or die("cannot connect");
        mysql_select_db("$db_name")or die("cannot select DB");

    ?>

          <center><h2><? echo $Lpresentazioneangrins; ?></h2>
    <small><? echo $Lsuggerimento; ?></small></center>
    <br>
    <!--Visualizza il numero di tessere -->
    <table><tr><td>
    <form action='./stampa_soci.php' method='POST' target='_blank'>
    <button name='ordine' type='submit' value="ntessera"><? echo $Ltessere; ?></button>
    </form></td>
    <td><form action='./Scheda_regioni.php' method='POST'>
    <button name='Regioni' type='submit' value="regioni">Regioni</button></form></td>
    <td><form action='./Scheda_province.php' method='POST'>
    <button name='Province' type='submit' value="Province">Province</button></form></td>
    <td><form action='./Scheda_comuni.php' method='POST'>
    <button name='Comuni' type='submit' value="comuni">Comuni</button></form></td></tr>
    </table>

          <form action='./conf_dati_ins.php' method='POST' enctype="multipart/form-data">
            <table align='center' border='0' width='60%'>
              <tbody>
                <tr>
                    <td width='150'><font color="red"><? echo $Lntessera; ?></td>
                  <td><input name='ntessera' size='5' type='text' required='required'>
                   <br><small><sub><i><? echo $Listntessera; ?></small></i></sub></td>
                </tr>
    <?php include('./DatiComuni.inc'); ?>
                <tr>
                  <td width='150'><font color="red"><?echo $Ltipoassociato; ?> *:</td>
                  <td><select name="materia" >
       <option value="" selected="selected"><? echo $Ltipoassociato; ?> </option>

    <?php
    $query 
    "SELECT materia FROM tb_materia";
     
    $rs=mysql_query($query)
    or die(
    "<b>Errore:</b> Impossibile eseguire la query della Combo");

    while (
    $row=mysql_fetch_row($rs))
    {
    echo 
    "<option>" .$row["0"]. "</option>";

    }
    mysql_close();
    ?>

      </select></td>
                </tr>
                <tr>
                  <td colspan='2' align='center'>
                  <input value=<? echo $Linvia; ?> type='submit' <? echo($limit); ?>></td>
                </tr>
              </tbody>
            </table>
            <br>
          </form>
    <?php
    include('./menusx.inc');
    echo 
    $Lhelpanagrins;
    include(
    './botton.inc');
    } else {
    header('Location: Rip_database.php');
    }
    ?>
     
  6. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao
    Dalla tua riposta
    , deduco che non hai fatto tu questo codice e DB.

    Molto probabilmente id_anagrafe è già autoincrement (significa che ogni volta che farai una query per un nuovo tesserato quel numero incrementerà di uno in automatico 1, 2, 3, 4 ecc...)

    prima di andare ad aggiungere un nuovo tesserato vai a fare una query di controllo, vedi quale è l'ultimo id_anagrafe e da quello farai a sua volta il ntessera.


    Fammi sapere se non mi sono spiegato bene.

    Ciao
     
  7. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Ciao si hai intuito bene è un programma per associazioni che si installa su db già con file php, ho fatto la prova che mi hai chiesto ed è come immaginavi, l'id_anagrafe aumenta ad ogni inserimento, come faccio quindi ad inserire questo sistema anche sulla casella del numero di tessera in modo tale da avere sempre il nuovo numero di tessera ad ogni inserimento? Mi serve ciò perchè non sono l'unico a dover inserire questi dati e quindi almeno non si farebbe confusione con i numeri di tessera
     
    Ultima modifica: 1 Novembre 2017
  8. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao
    Se il numero di tessera è solo numerico ti consiglio di usare il campo id_anagrafe già funzionante.

    In alternativa se il tuo numero tessera deve diventare esempio: A001B.

    Fai una query SELECT e vai a recuperare l'ultimo id creato e una volta che vai a fare un nuovo tesserato incrementi di 1 e vai ad aggiungere
    PHP:
    "A".$numeroestratto."B"
    Fammi sapere
     
  9. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    ciao dopo qualche mese ho ripreso questo progetto, allora ho modificato le due voci e utilizzato l'id_anagrafe al posto del numero di tessera, è nella lista delle registrazioni funziona perfettamente, ma non c'è un modo per poter visualizzare il numero di id nella casella del form?
     
  10. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao
    per riempire in automatico il campo del form devi andare a fare questo passaggio.
    Fai una query, vai a recuperare l'ultimo id_anagrafe ed incrementi di 1.

    Es.:
    PHP:
    $query_ultimo_id "SELECT id_anagrafe FROM clienti ORDER BY id DESC LIMIT 1";
    $query mysqli_query($conn$query_ultimo_id);
    $row mysqli_fetch_array($query);
    $ultimo =  $row['id_anagrafe']+1;

    poi il campo nr.tessera del form andrai a farlo tipo in questo modo

    HTML:
    <input type="text" name="nrtessera" value="<?php echo $ultimo; ?>" readonly />

    Con readonly come dice la parola permetti la visualizzazione (che magari può tornarti utile) ma non puoi modificarlo.


    Fammi sapere
     
  11. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    questa query devo farla sul database o devo copiarla nel file php?

    questa invece io non ho un file html che gestisci il tutto ma solo file php
     
  12. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Tutto deve andare nella pagina interessata.
    prima del form fai la query e dopo richiami l'id_anagrafe appena recuperato
     
  13. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    perdonami ho fatto come mi hai detto ma nn sono riuscito a farlo funzionare, non mi visualizza nessun numero nella casella, ti allego i codici originali:
    PHP:
    <?php
    session_start
    ();
    $user $_SESSION['utente'];
    $langanagrins $_SESSION['lingua'];
    $paginaanagrins "insanagrins.inc";
    $linguaanagrins = ($langanagrins.$paginaanagrins);
    include(
    $linguaanagrins);

    if (
    $user == 'admin') {

    include(
    './top.inc');
    include(
    './menu.inc');

        include (
    './dati_db.inc');
        
    mysql_connect("$host""$username""$password")or die("cannot connect");
        
    mysql_select_db("$db_name")or die("cannot select DB");

    ?>

          <center><h2><? echo $Lpresentazioneangrins; ?></h2>
    <small><? echo $Lsuggerimento; ?></small></center>
    <br>
    <!--Visualizza il numero di tessere -->
    <table><tr><td>
    <form action='./stampa_soci.php' method='POST' target='_blank'>
    <button name='ordine' type='submit' value="ntessera"><? echo $Ltessere; ?></button>
    </form></td>
    <td><form action='./Scheda_regioni.php' method='POST'>
    <button name='Regioni' type='submit' value="regioni">Regioni</button></form></td>
    <td><form action='./Scheda_province.php' method='POST'>
    <button name='Province' type='submit' value="Province">Province</button></form></td>
    <td><form action='./Scheda_comuni.php' method='POST'>
    <button name='Comuni' type='submit' value="comuni">Comuni</button></form></td></tr>
    </table>

          <form action='./conf_dati_ins.php' method='POST' enctype="multipart/form-data">
            <table align='center' border='0' width='60%'>
              <tbody>
                <tr>
                    <td width='150'><font color="red"><? echo $Lntessera; ?></td>
                  <td><name='ntessera' size='5' type='text' required='not'>
                   <br><small><sub><i><? echo $Listntessera; ?></small></i></sub></td>
                </tr>
    <?php include('./DatiComuni.inc'); ?>
                <tr>
                  <td width='150'><font color="red"><?echo $Ltipoassociato; ?> *:</td>
                  <td><select name="materia" >
       <option value="" selected="selected"><? echo $Ltipoassociato; ?> </option>

    <?php
    $query 
    "SELECT materia FROM tb_materia";
     
    $rs=mysql_query($query)
    or die(
    "<b>Errore:</b> Impossibile eseguire la query della Combo");

    while (
    $row=mysql_fetch_row($rs))
    {
    echo 
    "<option>" .$row["0"]. "</option>";

    }
    mysql_close();
    ?>

      </select></td>
                </tr>
                <tr>
                  <td colspan='2' align='center'>
                  <input value=<? echo $Linvia; ?> type='submit' <? echo($limit); ?>></td>
                </tr>
              </tbody>
            </table>
            <br>
          </form>
    <?php
    include('./menusx.inc');
    echo 
    $Lhelpanagrins;
    include(
    './botton.inc');
    } else {
    header('Location: Rip_database.php');
    }
    ?>
    questo è il codice della pagina del form ma come puoi notare fà riferimento ad un altra pagina che è questa:
    PHP:
    <?php
      session_start
    ();

    $user $_SESSION['utente'];
    if (
    $user) {
        
    $ntessera $_POST['ntessera'];
        
    $nnome $_POST['nome'];
        
    $ncognome $_POST['cognome'];
        
    $nindirizzo $_POST['indirizzo'];
        
    $cap $_POST['comuni'];
        
    $ncitta $_POST['regioni'];
        
    $nprovincia $_POST['provincie'];
        
    $ntel $_POST['tel'];
        
    $ntel2 $_POST['tel2'];
        
    $ndatangg $_POST['datangg'];
        
    $ndatanmm $_POST['datanmm'];
        
    $ndatanaaaa $_POST['datanaaaa'];
        
    $materia $_POST['materia'];
        
    $nnomerif $_POST['nomerif']; //Codice fiscale
        
    $email $_POST['email'];
        
    $nnote $_POST['note'];
       

    $ndatan = ($ndatangg."-".$ndatanmm."-".$ndatanaaaa);

    //escape html
    $nome htmlspecialchars($nnomeENT_NOQUOTES"UTF-8");
    $tessera htmlspecialchars($ntesseraENT_NOQUOTES"UTF-8");
    $cognome htmlspecialchars($ncognomeENT_NOQUOTES"UTF-8");
    $indirizzo htmlspecialchars($nindirizzoENT_NOQUOTES"UTF-8");
    $citta htmlspecialchars($ncittaENT_NOQUOTES"UTF-8");
    $provincia htmlspecialchars($nprovinciaENT_NOQUOTES"UTF-8");
    $tel htmlspecialchars($ntelENT_NOQUOTES"UTF-8");
    $tel2 htmlspecialchars($ntel2ENT_NOQUOTES"UTF-8");
    $datan htmlspecialchars($ndatanENT_NOQUOTES"UTF-8");
    $nomerif htmlspecialchars($nnomerifENT_NOQUOTES"UTF-8");
    $note htmlspecialchars($nnoteENT_NOQUOTES"UTF-8");


    //Se L'associato è attivo
    $checkbox = isset($_POST["check"]);
    if (
    $checkbox) {
    $associato "si";
    } else { 
    $associato "no";}

    //Funzione per il redirect
    function redirect($url,$tempo FALSE ){
     if(!
    headers_sent() && $tempo == FALSE ){
      
    header('Location:' $url);
     }elseif(!
    headers_sent() && $tempo != FALSE ){
      
    header('Refresh:' $tempo ';' $url);
     }else{
      if(
    $tempo == FALSE ){
        
    $tempo 0;
      }
      echo 
    "<meta http-equiv=\"refresh\" content=\"" $tempo ";" $url "\">";
      }
    }

    //Controllo campi compilati
            
    if ($nome == "")
             {
               echo 
    "<center><b>Il campo nome &egrave obbligatorio</b></center>";
               
    redirect('./InsAnagrIns.php' ,2);
            
    // break;
    die ("");
            }
            if (
    $materia == "")
             {
               echo 
    "<center><b>Il campo Tipo associato &egrave obbligatorio</b></center>";
               
    redirect('./InsAnagrIns.php' ,2);
            
    // break;
    die ("");
            }

           

    // *** GESTIONE DELL'IMMAGINE ***
    $upload_dir "./Immagini/Utenti";
    if(@
    is_uploaded_file($_FILES["immagine"]["tmp_name"])) {
    $file_name $_FILES["immagine"]["name"];
    @
    move_uploaded_file($_FILES["immagine"]["tmp_name"], "$upload_dir/$file_name")
    or die(
    "Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

    } else {

    $file_name "personal.gif";
    @
    move_uploaded_file($_FILES["immagine"]["tmp_name"], "$upload_dir/$file_name");

    }
    // *** FINE MODULO GESTIONE IMMAGINE ***

        
    include ('./dati_db.inc');
        
    $connect mysqli_connect("$host""$username""$password""$db_name"$port ) or die("cannot connect DB");

    $tb_anagrafe = ('tb_anagrafe(ntessera, nome, cognome, indirizzo, cap, citta, provincia, tel, tel2, datan, classe, nomerif, materia, mansione, email, tipologia, note, immagine, associato)');
        if (
    $nome){
            
    $sql="insert into $tb_anagrafe values('$tessera','$nome', '$cognome', '$indirizzo', '$cap', '$citta', '$provincia', '$tel', '$tel2', '$datan', '', '$nomerif', '$materia', '', '$email', 'Ins', '$note', '$file_name', '$associato')"//inserisco i valori nel database
            
    $result=mysqli_query($connect$sql);
            
    header('location: ./conferma.php?rif=InsAnagrStud'); //Vado alla pagina di conferma
        
    }else{
            
    header('location: ./errore.php?rif=InsAnagrStud'); //Vado alla pagina di errore
            
    }
    mysqli_close($connect);
    } else {
    header("Location: ./index.php");
    ?>
    mi puoi indicare tu come fare per favore?
     
  14. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    ok c'è lo fatta, adesso mi mostra il numero di ID nel form, ma in cima mi mostra questo errore:

    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\inetpub\webs\fapsiciliait\Sinx\InsAnagrIns.php on line 35

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\inetpub\webs\fapsiciliait\Sinx\InsAnagrIns.php on line 36
    a cosa è dovuto e come posso risolvere?
     
  15. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Bene.
    L'errore probabilmente è dovuto dal fatto che ti ho passato il php con mysqli.
    Per risolvere modifica il php (anche se per farlo pulito e giusto dovresti adattare il tuo a mysqli)
    PHP:
    $query_ultimo_id "SELECT id_anagrafe FROM clienti ORDER BY id DESC LIMIT 1";
    $query mysql_query($query_ultimo_id);
    $row mysql_fetch_array($query);
    $ultimo =  $row['id_anagrafe']+1;
    Fammi sapre
     
  16. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Lo avevo notato anch'io questo Problema ma lo avevo già modificato infatti nell'errore è riportato senza la i
     
  17. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    scrivimi le righe dalla 33 alla 38 del file InsAnagrIns.php ??
     
  18. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    PHP:
    include ('./dati_db.inc');
        
    mysql_connect("$host""$username""$password")or die("cannot connect");
        
    mysql_select_db("$db_name")or die("cannot select DB");
        
    $connect mysqli_connect("$host""$username""$password""$db_name"$port ) or die("cannot connect DB");
     
    $query_ultimo_id "SELECT ntessera FROM tb_anagrafe ORDER BY id DESC LIMIT 1";
    $query mysqli_query($connect$query_ultimo_id);
    $row mysqli_fetch_array($query);
    $ultimo =  $row['ntessera']+1;
    ho inserito la riga $connect = mysqli_connect("$host", "$username", "$password", "$db_name", $port ) or die("cannot connect DB"); ed ora l'unico errore che mi dà è: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in D:\inetpub\webs\fapsiciliait\Sinx\InsAnagrIns.phpon line 37

    allora ho inserito

    if(@$query->num_row > 0) dopo $query = mysqli_query($connect, $query_ultimo_id);
    l'errore è scomparso ma quando vado a fare le registrazioni il numero tessera mi rimane invariato ad 1, non si aggiorna, e neanche il database si aggiorna
     
    Ultima modifica: 17 Gennaio 2018
  19. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    318
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Cavoli cosi non capisco dovrei fare dei test
    prova cosi e vedi che errore ti da.
    or die ("Errore: ".mysql_error());
     
  20. Peppe83

    Peppe83 Nuovo Utente

    Registrato:
    3 Febbraio 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    dove dovrei aggiungerlo?
    ho scoperto (non so se può tornare utile) che sei io inserisco un contatto mi dà come numero tessera 1, se io ne inserisco un altro non me lo salva nel database nonostante non mi dia nessun errore, ma se io il contatto nel database lo vado a rinonimare con numero 2 e inserisco un contatto dal form allora me lo inserisce assegnandogli il numero 1

    apposto ho risolto...il problema era nel codice "SELECT ntessera FROM tb_anagrafe ORDER BY ntessera DESC LIMIT 1" che dopo by avevo lasciato "id"
     
    Ultima modifica: 17 Gennaio 2018
Sto caricando...

Condividi questa Pagina