Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [PHP] Inserimento record con lettura id

    Salve,
    mi scuso molto umilmente nel caso la mia ignoranza risultasse irritante a qualcuno, nel caso, si può sempre non rispondere.

    Ho il seguente problema: Inserisco i dati in un record di una tabella precedentemente creata in un database MySQL. Fin qui nessun problema. Provo adesso a stampare i risultati di un inserimento e qui avviene un fatto curioso (per me); invece di darmi il risultato aspettato tipo:

    Il record è stato inserito:

    ID:5
    Cognome: Pitagorico
    Nome: Archimede
    Azienda: Paperopoli
    Ruolo: Inventore
    Email: eccetera...
    ...Me ne da uno del genere:

    Il record è stato inserito:

    ID:15 <---numero alquanto spropositato, visto che ho inserito solo 5record
    Cognome: Pitagorico, Archimede, Paperopoli, Inventore, ...
    Nome: Archimede, Paperopoli, Inventore, ...
    Azienda: Paperopoli
    Ruolo: Inventore
    Email: eccetera... <--- Nell'ultimo dato segnala "undefined variable"
    Ora vi faccio vedere il listato (se siete deboli di cuore non proseguite oltre):

    Codice PHP:

    <?php

    $host
    ='localhost';
    $user='root';
    $password='';
    $database='rubrica';

    $db=mysql_connect($host$user$password)
    or die (
    "Impossibile connettersi al server $host");

    mysql_select_db($database$db)
    or die (
    "Impossibile connettersi al database $database");

    $query="insert into personale " .
    "(cognome, nome, azienda, ruolo, email, telefono, cellulare)" .

    "VALUES('" .
    $cognome=@$_REQUEST['cognome'] . "','" .
    $nome=@$_REQUEST['nome'] . "','" .
    $azienda=@$_REQUEST['azienda'] . "','" .
    $ruolo=@$_REQUEST['ruolo'] . "','" .
    $email=@$_REQUEST['email'] . "','" .
    $telefono=@$_REQUEST['telefono'] . "','" .
    $callulare=@$_REQUEST['cellulare'] . "')";

    if (!
    mysql_query($query,$db)) 
    {echo 
    mysql_error() ." attenzione, Impossibile inserire il record nel database";}
    elseif(@
    $_REQUEST==FALSE)
    {echo (
    "Inserisci i dati");}  
    else 
    {print 
    "Il record è stato inserito: 
    "
    ;
    print(
    "ID: " .mysql_insert_id($db). "
    "
    );
    print
    "Cognome: " .$cognome"
    "
    ;
    print
    "Nome: " .$nome"
    "
    ;
    print
    "Azienda: " .$azienda"
    "
    ;
    print
    "Ruolo: " .$ruolo"
    "
    ;
    print
    "eMail: " .$email"
    "
    ;
    print
    "Telefono: " .$telefono"
    "
    ;
    print
    "Cellulare: " .$cellulare"
    "
    ;
    }

    mysql_close($db);
    ?>

    Dove sto sbagliando? grazie.

    P.s
    L'id è stato impostato da me come "auto_increment".

  2. #2

    Re: [PHP] Inserimento record con lettura id

    id non corrisponde a quante righe hai nella tabella...

  3. #3

    Re: Re: [PHP] Inserimento record con lettura id

    Originariamente inviato da Friko85
    id non corrisponde a quante righe hai nella tabella...
    Ho dato un'occhiata: Risultano 26 righe. (Alcuni campi dal 7 al 13 addirittura me li da vuoti, ma questo è un fatto a parte) Ogni volta che faccio f5 nella pagina l'id me lo da diverso. Inoltre c'è l'altro problema che mi preme di più: in ogni campo mi stampa anche i dati degli altri: invece di,

    cognome: paolino
    nomeaperino
    azienda: paperopoli

    mi da,

    cognome paolino, paperino paperopoli
    nome paperino, paperopoli
    azienda undefined eccetera...

    Questo in particolare proprio non lo capisco.

    Domani rifaccio tutto con una nuova tabella, e vi faccio sapere.

  4. #4
    Allora, ho fatto una tabella più semplice, ed ho poi fatto una foto dove si vede il risultato dell'inserimento nel form, con affianco la finestra del prompt di mysql, in modo da avere una visione di insieme più chiara:



    Ora, come potete vedere io ho inserito una sola row, e gli viene assegnato id2, lasciando vuoto id1. Probabilmente sbaglio io qualcosa, forse in questo modo il form assegna un id a caso?

    Poi il secondo problema, che qui dovrebbe capirsi meglio: dovrebbe stampare solo il valore di $nome, invece stampa anche quello di $incarico. Per non parlare del fatto che compaiono apici e parentesi. Vi rimetto il listato, modificato per questa tabella:

    Codice PHP:
    <html>
    <head>
    <titleForm Inserimento Database</title>

    </head>
    <body>

    <form method="post" action="form_inserimento_database.php">
    Nome: <input type="text" name="nome" size="20" maxlength=50" />

    Incarico: <input type="text" name="incarico" size="20" maxlength=50" />

    <input type="submit" value="inserisci" />
    </form>


    <?php

    $host
    ='localhost';
    $user='root';
    $password='';
    $database='rubrica';

    $db=mysql_connect($host$user$password)
    or die (
    "Impossibile connettersi al server $host");

    mysql_select_db($database$db)
    or die (
    "Impossibile connettersi al database $database");

    $query="insert into politici " .
    "(nome, incarico)" .

    "VALUES('" .
    $nome=@$_REQUEST['nome'] . "','" .
    $incarico=@$_REQUEST['incarico'] . "')";

    if (!
    mysql_query($query,$db)) 
    {echo 
    mysql_error() ." attenzione, Impossibile inserire il record nel database";}
    elseif(@
    $_REQUEST==FALSE)
    {echo (
    "Inserisci i dati");}  
    else 
    {print 
    "Il record è stato inserito: 
    "
    ;
    print(
    "ID: " .mysql_insert_id($db). "
    "
    );
    print
    "Nome: " .$nome"
    "
    ;
    print
    "Incarico: " .$incarico"
    "
    ;
    }

    mysql_close($db);
    ?>

    </body>
    </html>
    Ho provato adesso anche modificando in questo modo:
    Codice PHP:
    print"Nome: $nome 
    "
    ;
    print
    "Incarico: $incarico 
    "

    Il risultato non cambia. Inserendo una nuova row, gli da id4; come se riempisse solo i campi pari. (sic!)

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Prima della riga if (!mysql_query($query,$db)) metti una riga con print "QUERY = $query
    ";
    così vedi cosa esattamente stai generando: ci sono problemi qui, infatti...

  6. #6
    Originariamente inviato da eiyen
    Prima della riga if (!mysql_query($query,$db)) metti una riga con print "QUERY = $query
    ";
    così vedi cosa esattamente stai generando: ci sono problemi qui, infatti...
    Mi compare di default questa scritta: QUERY = insert into politici (nome, incarico)VALUES('',''). Ora faccio un nuovo inserimento e ti dico.

    Mi da QUERY = insert into politici (nome, incarico)VALUES('Renato Schifani','Presidente del Senato')

    L'id è 6. Quindi sembra proprio che mi fa inserire solo gli id pari; e persiste anche il secondo problema.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dovresti proseguire fino a incontrare una query che ti da "errore" per vedere come viene generata

  8. #8
    Originariamente inviato da eiyen
    dovresti proseguire fino a incontrare una query che ti da "errore" per vedere come viene generata
    Allora, ho fatto due cose: prima di tutto ho risolto il secondo problema in questo modo;
    Codice PHP:
    "VALUES('" .
    @
    $_REQUEST['nome'] . "','" .
    @
    $_REQUEST['email'] . "')";

    $nome=@$_REQUEST['nome'];
    $email=@$_REQUEST['email']; 
    Adesso i dati inseriti me li stampa come si deve, senza concatenare niente. Poi ho rifatto la tabella segnando anche per l'id not null; ora il problema si restringe: mi salta solo la prima riga mentre le successive le fa in ordine, senza saltarne una.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non ho ben capito: il primo record che problema ti fa?

  10. #10
    Originariamente inviato da eiyen
    non ho ben capito: il primo record che problema ti fa?
    E' vuoto. Gli inserimenti vanno dal secondo in poi.

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.