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

    Recuperare ID e trasmetterlo ad altra tabella

    Ciao ragazzi,
    sto imparando PHP e pur ritenendo di avere preso un ottimo libro
    a volte non riesco a trovare le cose che (a me) sembrano proprio basilari.

    Avrei questo problema:

    Estrarre da una prima tbl compilata l'ID ( questo riesco a farlo con
    mysql_insert_id, ma fuori dalla query si perde)
    SALVARLO e PASSARLO ad un'altra tbl.

    Esempio,
    tbl_artista
    id_artista PRIMARY AI:
    artista

    tbl_album:
    id_album PRIMARY AI:
    id_artista
    album

    Vorrei che compilata la prima tabella, i valore id_artista venga inserito anche nel campo id_artista dell tabella tbl_album, la quale, al submit della prima si aprirà per essere completata.

    Mi sembrava una cosa facile, ma non mi riesce. Riesco a passare facilmente altri valori, ma non l'ID.

    Le uniche cose che ho capito sono che
    mysql_insert_id: restituisce il valore id autoincrement dell'ultimo record inserito, ma si perde alla chiusura della query
    LAST_INSERT_ID : dovrebbe non essere azzerato dalla chiusura della query e quindi essere più adatta.

    Ho provato cose del tipo:
    mysql_query('INSERT INTO
    tbl_album (id_artista)
    SELECT
    mysql_select_id($query)')

    if (mysql_query) {
    echo 'Valori inseriti correttamente';

    }
    Non mi inserisce niente purtroppo.

    Insomma, mi sto un po' perdendo attorno a questo...

    Grazie a chi vorrà darmi uno spunto per andare avanti

    Ed

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    provo a darti una mano, anche se magari scriverò una cosa banale..
    a parte che la query che hai postato è errata, nel tuo codice la query di inserimento va a buon fine?
    sistemata quella fai:
    $last_id = mysql_insert_id();
    echo $last_id; // per vedere se è ok!!
    poi $last_id te lo porti appresso come vuoi, sessione, cookie.. come vuoi..

  3. #3

    Recuperare ID e trasmetterlo ad altra tabella

    Originariamente inviato da telegio
    provo a darti una mano, anche se magari scriverò una cosa banale..
    a parte che la query che hai postato è errata, nel tuo codice la query di inserimento va a buon fine?
    sistemata quella fai:
    $last_id = mysql_insert_id();
    echo $last_id; // per vedere se è ok!!
    poi $last_id te lo porti appresso come vuoi, sessione, cookie.. come vuoi..

    Innanzitutto grazie dell'intervento; si la query di inserimento funziona alla grande.

    Ho provato la tua soluzione e succede una cosa strana. Ho lasciato anche printf per controllo :
    printf restituisce "L'ultimo recod inserito ha l'identificativo 45"
    $last_id restituisce "Il numero Id è 0"

    Ti posto il codice:
    $query = 'INSERT INTO
    titolo
    (artista_nm, artista_cgm, titolo_cd, anno, major)
    VALUES
    ("' .$_POST['artista_nm'] . '",
    "' .$_POST['artista_cgm'] . '",
    "' .$_POST['titolo_cd'] . '",
    "' .$_POST['anno'] . '",
    "' .$_POST['major'] . '")';
    $last_id= mysql_insert_id();
    if (mysql_query($query)) {
    echo 'Il numero Id è ' .$last_id;
    echo 'Valori inseriti correttamente';
    printf ("L'ultimo record inserito ha l'identificativo %d\n", mysql_insert_id());

    }else { ...etc etc...

    Cosa ne pensi ?

    Grazie mille e un saluto
    Ed

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    che devi fare solo questo:
    Codice PHP:
    $query 'INSERT INTO
    titolo
    (artista_nm, artista_cgm, titolo_cd, anno, major)
    VALUES
    ("' 
    .$_POST['artista_nm'] . '",
    "' 
    .$_POST['artista_cgm'] . '",
    "' 
    .$_POST['titolo_cd'] . '",
    "' 
    .$_POST['anno'] . '",
    "' 
    .$_POST['major'] . '")';
    $last_id mysql_insert_id();
    echo 
    $last_id
    questo cosa ti restituisce?

  5. #5
    Codice PHP:
    Ti posto il codice:
    $query 'INSERT INTO titolo 
    (artista_nm, artista_cgm, titolo_cd, anno, major) 
    VALUES
    ("' 
    .$_POST['artista_nm'] . '",
    "' 
    .$_POST['artista_cgm'] . '",
    "' 
    .$_POST['titolo_cd'] . '",
    "' 
    .$_POST['anno'] . '",
    "' 
    .$_POST['major'] . '")';

    if (
    mysql_query($query)) {

      
    // dopo che esegui la query di insert puoi recuperare l'ID non prima....
      
    $last_idmysql_insert_id(); 

      echo 
    'Il numero Id è ' .$last_id;
      echo 
    'Valori inseriti correttamente';
      print (
    "L'ultimo record inserito ha l'identificativo %d\n",  mysql_insert_id());

    }else { ...
    etc etc... 

  6. #6
    Originariamente inviato da robbi_gallo
    Codice PHP:
    Ti posto il codice:
    $query 'INSERT INTO titolo 
    (artista_nm, artista_cgm, titolo_cd, anno, major) 
    VALUES
    ("' 
    .$_POST['artista_nm'] . '",
    "' 
    .$_POST['artista_cgm'] . '",
    "' 
    .$_POST['titolo_cd'] . '",
    "' 
    .$_POST['anno'] . '",
    "' 
    .$_POST['major'] . '")';

    if (
    mysql_query($query)) {

      
    // dopo che esegui la query di insert puoi recuperare l'ID non prima....
      
    $last_idmysql_insert_id(); 

      echo 
    'Il numero Id è ' .$last_id;
      echo 
    'Valori inseriti correttamente';
      print (
    "L'ultimo record inserito ha l'identificativo %d\n",  mysql_insert_id());

    }else { ...
    etc etc... 

    ...minchiazza pupazza...come direbbe il mio amico Franco Battiato..c'avvete raggione!!!
    Confesso che ho passato qualche minuto a guardare il monitor e a chiedermi come possa aver fatto un errore così banale ...poi...ho capito, mannaggia a me , ho capito...
    In quel programma "di cui non si puo' fare il nome " , che comincia per A e finisce per CESS , ma anche in quello che comincia per V e finisce per ASIC ( quanto tempo perso) TUTTE, dico tutte le variabili vanno dichiarate all'inizio ( salvo rettifiche volanti) , prima ancora di qualsiasi istruzione...

    Mi avete dato entrambi la soluzione corretta, solo che Telegio si è dimenticato di inserire l'esecuzione della query.

    Ovviamente adesso funzia
    Grazie, mille grazie per l'aiuto ad entrambi. So che alle volte i problemi di chi inizia sembrano banali per chi è già oltre, ma vi assicuro che non è facile nè intuitivo soprattutto se si proviene da altri linguaggi , in particolare di casa MSoft.

    A proposito, mi trovo molto bene studiando sul libro "costruire applicazioni web con Php 6, mysql, Apache" , della Hoepli (è una traduzione del corrispettivo della Wrox) , ma mi sto rendendo conto che porta esempi tutti basati su INSERT e Join molto semplici e soprattutto su 4/5 record; danno quindi per scontato il facile inserimento " a manina" degli Id relazionali.
    Peccato che qualsiasi applicativo preveda Nmila numero di record !! E non c'è nulla riguardo alla automazione.

    Qualche libro, sito, documento da consigliarmi ?

    Tnx di tutto
    Buona giornata
    Ed

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    Originariamente inviato da senzaesclusiva
    Mi avete dato entrambi la soluzione corretta, solo che Telegio si è dimenticato di inserire l'esecuzione della query.
    hai ragionisssssima, siccome uso un'altra modalità per le insert, mi sono perso per strada quella parte.. l'ho proprio ignorata!
    Qualche libro, sito, documento da consigliarmi ?
    sito? questo, of course!! vediti le pillole e anche gli articoli su PHP.. nel forum trovi il resto..

  8. #8
    [b]
    sito? questo, of course!! vediti le pillole e anche gli articoli su PHP.. nel forum trovi il resto..
    Of course!!!

    Quindi adesso che la bella variabilina è funzionante e "conserva" l'ID del record, dovrei poterla
    utilizzare come valore da passare in un INSERT successivo...right?

  9. #9
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    puoi pure fare una cosa tipo:
    Codice PHP:
    $query 'INSERT INTO titolo
    (artista_nm, artista_cgm, titolo_cd, anno, major)
    VALUES
    ("' 
    .$_POST['artista_nm'] . '",
    "' 
    .$_POST['artista_cgm'] . '",
    "' 
    .$_POST['titolo_cd'] . '",
    "' 
    .$_POST['anno'] . '",
    "' 
    .$_POST['major'] . '")';

    if (
    mysql_query($query)) {

      
    // dopo che esegui la query di insert puoi recuperare l'ID non prima....
      
    $last_idmysql_insert_id();

      echo 
    'Hai inserito correttamente quello che dovevi. Per inserire un'altra cosa con questo idusa questo link: <a href=\"pagina.php?nuovoid=$last_id\">link</a> ';
    }else { ...etc etc... 
    così te lo ritrovi in GET, nella URL.
    in pagina.php avrai $_GET['nuovoid'] che è il tuo id della pagina precedente..

    p.s.: prova il link, che ho scritto di getto e non ho controllato

  10. #10
    [b]
    }else { ...etc etc...[/PHP]
    così te lo ritrovi in GET, nella URL.
    in pagina.php avrai $_GET['nuovoid'] che è il tuo id della pagina precedente..

    p.s.: prova il link, che ho scritto di getto e non ho controllato

    Eureka!!!

    Non volevo seguire la strada di $_GET (per non lasciare nessun dato nell'url) ma inserire direttamente
    nella tabella successiva dei dettagli l'ID che farà da Join.
    Quindi dopo il codice menzionato sopra ho inserito un'altra query INSERT giusto per prova:

    $query='INSERT INTO
    canzoni (id_artista,titolo_cd)
    VALUES
    ("' .$last_id . '",
    "' .$_POST['titolo_cd'] . '")';
    if (mysql_query($query)) {
    echo '
    ';
    echo 'L\'Id ' .$last_id . ' dell'ultimo record inserito è stato aggiornato correttamente' .'
    '
    .'anche nella tabella Canzoni';
    echo '
    ';
    }

    FUNZIONA!! Sono troppo contento. Adesso non mi resta che che creare i link "COMPLETA" "AGGIORNA" "CANCELLA" ..ma questo è veramente una stupidata.

    Grazie mille ragazzi . Spero di poter ricambiare, prima o poi

    Ed

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.