Visualizzazione risultati 1 fino 18 di 18

Discussione: numero progressivo autoincrement su form php

  1. #1
    Guest

    Predefinito numero progressivo autoincrement su form php

    Salve a tutti, ho un form php dove vado a registrare dei contatti con nome cognome via ecc ecc, in una casella vado a inserire anche un numero di tessera, tramite database mysql sono riuscito a collegare questa casella ad un campo della tabella che è impostata come autoincrement, e tramite una query ho fatto si che in quella casella mi visualizzi il numero id, solo che mi visualizza il numero 1 e non si aggiorna in automatico e in più inserisco il primo contatto e me lo salva sul database con il numero 1 ma se ne inserisco altri la procedura mi va a buonfine ma nel database non aggiunge niente a meno che non cambio il numero id 1 e allora me ne fa inserire un altro. Il codice query che ho usato è questo:
    Codice PHP:
    $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;
    il form lo richiamato con
    Codice HTML:
    <input name="ntessera" type="text" value="<?php echo $ultimo; ?>" size="4" maxlength="4" readonly />
    ma sulla pagina del form in più mi da questo errore: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in D:\inetpub\webs\fapsiciliait\Sinx\InsAnagrIns.php on line 37.
    come posso risolvere il tutto?

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    La variabile $connect è stata prima assegnata tramite la mysqli_connect()?

    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    La variabile $connect è stata prima assegnata tramite la mysqli_connect()?

    Ciao!
    si certo
    Codice HTML:
    $connect = mysqli_connect("$host", "$username", "$password", "$db_name", $port ) or die("cannot connect DB");

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Dopo la riga della "mysqli_query()", inserisci:
    Codice PHP:
    if($query === FALSE)
    die(
    mysqli_error($connect));
    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Dopo la riga della "mysqli_query()", inserisci:
    Codice PHP:
    if($query === FALSE)
    die(
    mysqli_error($connect));
    Ciao!
    mi riporta quest'errore: Unknown column 'id' in 'order clause'

  6. #6
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Ok,quindi nella tabella del database non esiste la colonna "id" e tu vorresti ordinarle per id (che non esiste):
    Codice:
    ...  ORDER BY id
    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Ok,quindi nella tabella del database non esiste la colonna "id" e tu vorresti ordinarle per id (che non esiste):
    Codice:
    ...  ORDER BY id
    Ciao!
    ho sistemato tutto il codice in ogni sua parte e proprio quello mi è sfuggito, grazie mille adesso funziona, un altra cosa... è possibile fare la numerazione a 3 cifre? tipo 001?

  8. #8
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Puoi usare str_pad()
    Vedi anche qui: https://stackoverflow.com/questions/...refixes-in-php

    Oppure printf() (o sprintf() se invece che mostrare il contenuto vuoi salvarlo in un'altra variabile) in questo modo:
    Codice:
    printf("%03d",$numero);
    Ciao!
    Ultima modifica di alemoppo : 17-01-2018 alle ore 21.25.24

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Puoi usare str_pad()
    Vedi anche qui: https://stackoverflow.com/questions/...refixes-in-php

    Oppure printf() (o sprintf() se invece che mostrare il contenuto vuoi salvarlo in un'altra variabile) in questo modo:
    Codice:
    printf("%03d",$numero);
    Ciao!
    E dove devo aggiungerlo? Scusami ma sono ancora all'inizio nell'uso del php

  10. #10
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Invece di
    Codice PHP:
    <?php echo $ultimo; ?>
    Puoi scrivere ad esempio:
    Codice PHP:
    <?php printf("%03d", $ultimo); ?>
    Ciao!

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Invece di
    Codice PHP:
    <?php echo $ultimo; ?>
    Puoi scrivere ad esempio:
    Codice PHP:
    <?php printf("%03d", $ultimo); ?>
    Ciao!
    ok grazie funziona perfettamente, un altra domanda, perchè nel file php e nel database mi risulta un campo "cognome" ma nel form non si vede?come faccio a richiamarlo?

  12. #12
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    I dati che vuoi recuperare sono presenti nella query che specifichi SELECT campo1, campo2 (recupera due campi) o SELECT * (recupera tutti i campi) mentre con ORDER BY id DESC LIMIT 1 mentre cosi riordini i dati (l'ultimo diventa il primo) ed hai solo un valore imposto da LIMIT
    Ultima modifica di darbula : 18-01-2018 alle ore 11.46.07

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    I dati che vuoi recuperare sono presenti nella query che specifichi SELECT campo1, campo2 (recupera due campi) o SELECT * (recupera tutti i campi) mentre con ORDER BY id DESC LIMIT 1 mentre cosi riordini i dati (l'ultimo diventa il primo) ed hai solo un valore imposto da limit
    si si, è questa la cosa strana che è richiamato dappertutto ma nel form online non c'è

  14. #14
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Non mi è chiaro... Puoi postare il codice completo? (Senza i tuoi dati personali ovviamente) indica l'estensione dei file
    Ultima modifica di darbula : 18-01-2018 alle ore 11.55.31

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Non mi è chiaro... Puoi postare il codice completo? (Senza i tuoi dati personali ovviamente) indica l'estensione dei file
    allora questo è il codice php del form:
    Codice 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");
    $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);
    if(@mysqli_num_rows($query)!=0)
    {
    // risultato sotto forma di array numerico
    while($row = mysqli_fetch_array($query, MYSQLI_NUM))
    {
    echo $row[0] . "</option>";
    }
    $ultimo = $row['ntessera']+1;
    ?>

    <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 è la pagina a cui fa riferimento quella di sù
    Codice 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($nnome, ENT_NOQUOTES, "UTF-8");
    $tessera = htmlspecialchars($ntessera, ENT_NOQUOTES, "UTF-8");
    $cognome = htmlspecialchars($ncognome, ENT_NOQUOTES, "UTF-8");
    $indirizzo = htmlspecialchars($nindirizzo, ENT_NOQUOTES, "UTF-8");
    $citta = htmlspecialchars($ncitta, ENT_NOQUOTES, "UTF-8");
    $provincia = htmlspecialchars($nprovincia, ENT_NOQUOTES, "UTF-8");
    $tel = htmlspecialchars($ntel, ENT_NOQUOTES, "UTF-8");
    $tel2 = htmlspecialchars($ntel2, ENT_NOQUOTES, "UTF-8");
    $datan = htmlspecialchars($ndatan, ENT_NOQUOTES, "UTF-8");
    $nomerif = htmlspecialchars($nnomerif, ENT_NOQUOTES, "UTF-8");
    $note = htmlspecialchars($nnote, ENT_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");
    }
    ?>

  16. #16
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Non stai recuperando tutti i dati ma solo la colonna ntessera e con l'uso di MYSQLY_NUM imponi array numerici (non esisterà mai $row['ntessera'] ma $row[0]).. Cmq. stai mescolando mysql con mysqli e non va affatto bene... Effetua il port da mysql a mysqli (copia il nome della funzione , quando sei nel manuale php online scegli la corrispettiva mysqli) ma siccome usi anche la connessione mysqli ti basta semplicemente cancellare la connessione mysql..
    Vale la stessa regola di prima e cioè devi fare SELECT ntessera, cognome per recuperare anche il cognome....
    Inoltre se ntessera sarà sempre un intero sarà già questo il tuo id. (Ovviamente ntessera deve essere come int e non varchar in MySQL)..
    Ultima modifica di darbula : 18-01-2018 alle ore 14.23.38

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Non stai recuperando tutti i dati ma solo la colonna ntessera e con l'uso di MYSQLY_NUM imponi array numerici (non esisterà mai $row['ntessera'] ma $row[0]).. Cmq. stai mescolando mysql con mysqli e non va affatto bene... Effetua il port da mysql a mysqli (copia il nome della funzione , quando sei nel manuale php online scegli la corrispettiva mysqli) ma siccome usi anche la connessione mysqli ti basta semplicemente cancellare la connessione mysql..
    Vale la stessa regola di prima e cioè devi fare SELECT ntessera, cognome per recuperare anche il cognome....
    Inoltre se ntessera sarà sempre un intero sarà già questo il tuo id. (Ovviamente ntessera deve essere come int e non varchar in MySQL)..
    forse mi sono spiegato male, il numero tessera funziona perfettamente, la cosa che non funziona e che nonostante nel codice si parli del campo cognome, nel form però non si vede passa da nome ad'indirizzo saltando la compilazione dl cognome

  18. #18
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao ciò che ti ho indicato prima è sempre un errore che dovrai correggere..
    Eccoti come verrà creata la variabile $_POST con la chiave associativa dell'attributo name html http://php.net/manual/it/tutorial.forms.php
    Ultima modifica di darbula : 18-01-2018 alle ore 20.53.33

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •