Php con numerazione progressiva

  • Creatore Discussione Creatore Discussione Peppe83
  • Data di inizio Data di inizio

Peppe83

Nuovo Utente
3 Feb 2016
22
0
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?
 
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;).
 
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;).

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
 

Allegati

  • 2017-10-31.jpg
    2017-10-31.jpg
    187,7 KB · Visite: 564
  • 2017-10-31 (1).jpg
    2017-10-31 (1).jpg
    162,5 KB · Visite: 508
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:
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.
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');
}
?>
 
Ciao
Dalla tua riposta
non so cosa sia l'id_anagrafe
, 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
 
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

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:
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
 
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
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?
 
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
 
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;
questa query devo farla sul database o devo copiarla nel file php?

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
questa invece io non ho un file html che gestisci il tutto ma solo file php
 
Tutto deve andare nella pagina interessata.
prima del form fai la query e dopo richiami l'id_anagrafe appena recuperato
 
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($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");
} ?>
mi puoi indicare tu come fare per favore?
 
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?
 
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
 
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
Lo avevo notato anch'io questo Problema ma lo avevo già modificato infatti nell'errore è riportato senza la i
 
scrivimi le righe dalla 33 alla 38 del file InsAnagrIns.php ??
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:
Cavoli cosi non capisco dovrei fare dei test
prova cosi e vedi che errore ti da.
or die ("Errore: ".mysql_error());
 
Cavoli cosi non capisco dovrei fare dei test
prova cosi e vedi che errore ti da.
or die ("Errore: ".mysql_error());
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:

Discussioni simili