Visualizzazione risultati 1 fino 15 di 15

Discussione: gestire tabelle multiple

  1. #1
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito gestire tabelle multiple

    Buonasera ,

    ho realizzato due tabelle in "relazione" tra loro con I due campi campo_1 e campo_2 relazionati,uno solo di tipo INT è l' altro INT e AUTO_INCREMENT
    i valori delle tabelle vengono inserite dalla pagina web tramite "form",

    il problema è che i dati rimangono in stagnazione nel server , e non compaiono in output !!!!

    1 Ho riscontrato che la causa è uno dei due campi relazionati che rimane con un valore fermo su "0" nel server phpmyadmin,nonostante il crescere dei records
    2 solo dopo aver riempito il campo in esame, riesco ad ottenere i dati in output relazionati !
    3 se non dichiaro la condizione WHERE nella SELECT che mette in relazione le TABELLE, i dati appaiono cmq relazionati in output , ma secondo una logica immagino di default e cmq non richiesta!!!

    la query che realizzo è la seguente
    $query = "SELECT valore_1, valore_2 From $tb_name_a, $tb_name_b WHERE tb_name_a.campounomalfunzionante = tb_name_b.campo2";
    Ultima modifica di Aforismadelgiorno : 23-12-2013 alle ore 20.46.38

  2. #2
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    vabbuo...
    Buone feste a tutti!!!

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

    Predefinito

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    1 Ho riscontrato che la causa è uno dei due campi relazionati che rimane con un valore fermo su "0" nel server phpmyadmin,nonostante il crescere dei records
    Quale, l'auto_increment o l'altro?
    Nel caso sia l'altro, controlla bene la query di INSERT e se i dati dal form vengono letti/salvati correttamente.
    Ciao!

  4. #4
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    è l altro!!!! credo sia un problema di query di INSERT, perchè I dati vengono letti e salvati tranquillamente

    //query d'inserimento dei dati
    ho due tabelle, tabella1 con 3 campi, e tabella2 con 2 campi, vorrei realizzare relazione -molti (Tabella1) a uno (tabella2), come realizzo la query d inserimento
    Codice PHP:
    //query d'inserimento dei dati
    $query_a ="INSERT INTO $tb_name_a (valore_1, valore_2, valore_3)
    VALUES ('
    $val1', '$val2', '$val3, '')";
    $query_b = "INSERT INTO $tb_name_b (valore_1,valore_2)
    VALUES('
    $val1,$val2);
    mysql_query(
    $query_a)and @mysql_query($query_b);
    ????????
    ho decisamente difficoltà in questa maniera, chiedo consigli!!!!!
    Ultima modifica di alemoppo : 26-12-2013 alle ore 22.53.32 Motivo: +tag [php]

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

    Predefinito

    Occhio: nella query 2 ti sei dimenticato di chiudere la stringa con i doppi apici (magari l'hai riportato male nel forum, ma nel tuo script è corretto).

    Comunque, elimina la chiocciola "@" prima di mysql_query, altrimenti non mostrerà eventuali errori.
    Poi, fai l'echo di entrambe le query per vedere se i valori $val1, $val2, $val3 e le query stesse sono corrette.

    Non sarebbe male inserire all'inizio l'istruzione "error_reporting(E_ALL);" per visualizzare tutti gli errori e avvisi (eventuali).

    p.s: le funzioni mysql_* sono obsolete. Dovresti passare alla nuova libreria mysqli_* che è molto simile ma non è obsoleta (ciò non toglie che le funzioni obsolete non debbano funzionare correttamente, per ora).

    Ciao!
    Ultima modifica di alemoppo : 26-12-2013 alle ore 23.04.20

  6. #6
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    mysql_query($query_a)and @mysql_query($query_b); e qui il grande dubbio? come raffinare la ricerca? sto facendo una miriade di tentativi riesco ad ottenere I risultati associate in output solo se elimino la condizione WHERE , e naturalmente la logica con cui si associano I dati delle colonne è un mistero!
    Ultima modifica di Aforismadelgiorno : 26-12-2013 alle ore 23.08.22

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

    Predefinito

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    mysql_query($query_a)and @mysql_query($query_b); e qui il grande dubbio? come raffinare la ricerca?
    Quale ricerca? Quelle due query sono due insert... Hai fatto come ti ho detto?

    Mi sembrava che il problema fosse quello che avevi scritto in rosso nel primo post, quindi è un problema delle insert...

    Ciao!

  8. #8
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    Ciao Alemoppo , con le poche funzioni di MySQL dovrebbe funzionare il tutto, il problema basilare rimane quello in rosso che ho esposto all inizio , è una mia ipotesi che esso dipenda dalle INSERT!!!
    PER RAFFINANERE LARICERCA INTENDO AVERE IN OUTPUT I RECORD UNITI BENE
    Codice:
    $query = "SELECT valore_1, valore_2 From $tb_name_a, $tb_name_b WHERE tb_name_a.campounomalfunzionante = tb_name_b.campo2";
    CON LO SCRIPT DI ADESSO HO IN OUTPUT I VALORI UNITI MALE http://aforismadelgiorno.altervista....aconstampa.php ;) !!Tutto qua!
    Ultima modifica di alemoppo : 30-12-2013 alle ore 02.30.55 Motivo: +tag [code]

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

    Predefinito

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    il problema basilare rimane quello in rosso che ho esposto all inizio , è una mia ipotesi che esso dipenda dalle INSERT!!!
    Appunto: quel campo si deve incrementare? se sì, ma nella tabella rimangono sempre 0, significa che la insert non funziona correttamente, quindi controlla la query INSERT, quindi:
    Citazione Originalmente inviato da alemoppo
    Poi, fai l'echo di entrambe le query per vedere se i valori $val1, $val2, $val3 e le query stesse sono corrette.
    Ah, non so se ne sei a conoscenza, ma per visualizzare i campi nel database, oltre che con PHP, puoi interagire con phpMyAdmin.


    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    PER RAFFINANERE LARICERCA INTENDO AVERE IN OUTPUT I RECORD UNITI BENE
    Codice:
    $query = "SELECT valore_1, valore_2 From $tb_name_a, $tb_name_b WHERE tb_name_a.campounomalfunzionante = tb_name_b.campo2";
    CON LO SCRIPT DI ADESSO HO IN OUTPUT I VALORI UNITI MALE
    La SELECT "mi sembra" corretta.

    p.s: non fare up!

    Ciao!
    Ultima modifica di alemoppo : 30-12-2013 alle ore 02.55.43

  10. #10
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    $Nick = $_POST['Nick'];
    $email = $_POST['email'];
    //query d'inserimento dei dati
    $query_a = "INSERT INTO $tb_name_a (email)
    VALUES ('$email')";
    $query_b = "INSERT INTO $tb_name_b (Nick)
    VALUES('$Nick')";


    mysql_query($query_a);
    mysql_query($query_b);

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

    Predefinito

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    ho realizzato due tabelle in "relazione" tra loro con I due campi campo_1 e campo_2 relazionati,uno solo di tipo INT è l' altro INT e AUTO_INCREMENT
    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    $query_a = "INSERT INTO $tb_name_a (email)

    $query_b = "INSERT INTO $tb_name_b (Nick)
    VALUES('$Nick')";
    Se $tab_name_a ha l'id AUTO_INCREMENT, mentre $tb_name_b non ha l'id AUTO_INCREMENT, l'id di $table_name_b non si incrementerà in automatico!
    Dovresti recuperare l'id inserito nella $tb_name_a, con mysql_insert_id()

    Una cosa del tipo:

    Codice PHP:
    $Nick = $_POST['Nick'];
    $email = $_POST['email'];
    //query d'inserimento dei dati
    $query_a = "INSERT INTO $tb_name_a (email)
    VALUES ('
    $email')";
    $query_b = "INSERT INTO $tb_name_b (id, Nick)
    VALUES("
    .mysql_insert_id().", '$Nick')";


    mysql_query($query_a);
    mysql_query($query_b);
    Ma stai tentando di salvar gli utenti, no? Perché non metti tutto in un'unica tabella?

    Ciao!
    Ultima modifica di alemoppo : 31-12-2013 alle ore 13.35.56 Motivo: nel codice avevo messo la funzione per sqlite...

  12. #12
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    faccio gli esercizi sui database relazionali qua su AV, è una buona palestra!!!
    metto due tabelle perchè ci sono utenti che hanno più e-mail, se è troppo complicate torno ad una tabella
    stasera provo la nuova funzione...ciao e Buon anno!!

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

    Predefinito

    Ah ok: se un utente può aver più indirizzi email, allora ha senso.

    Dimenticavo che devi proteggerti da sql injection, con la mysql_real_escape_string(). Se stai imparando, perché non utilizzi direttamente mysqli per interagire con il database? Se il tuo scopo è soltanto imparare a gestire un database, ok: l'sql è sempre quello , ma con mysqli almeno impari a gestire mysql da php in modo non obsoleto.

    Ciao!

  14. #14
    Data registrazione
    03-09-2013
    Residenza
    Los Angeles
    Messaggi
    191

    Predefinito

    Sinceramente pensavo bastasse la condizione WHERE o il join per unire le tabelle
    in ogni caso I dati precisi sono
    tabella_a POSTAELETTRONICA (postaelettronicaid, e-mail, Nickeid)
    tabella_b AFFILIATI (ID, Nick)

    la $result = mysql_query('select postaelettronicaid, Nick, email from postaelettronica, affiliati where postaelettronica.nickeid= affiliati.ID' ) or die ("Impossibile vedere secondo tentativo");

    Ho provato mysql_insert_id() come esposto nello script ma pare non funzioni *nickeid è sempre 0 !!!!


    * nickeid non è auto_increment
    Ultima modifica di Aforismadelgiorno : 03-01-2014 alle ore 13.51.04

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

    Predefinito

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    Sinceramente pensavo bastasse la condizione WHERE o il join per unire le tabelle
    Sì, ma questo quando vai a leggere, e quindi quando fai delle SELECT.
    Il problema che sembra, invece:

    Citazione Originalmente inviato da Aforismadelgiorno Visualizza messaggio
    Ho provato mysql_insert_id() come esposto nello script ma pare non funzioni *nickeid è sempre 0 !!!!
    Per "dire" al database i collegamenti tra le tabelle, devi usare FOREIGN KEY, ma questo non esclude che tu debba manualmente inserire il riferimento "a mano", tramite PHP, quindi nel tuo caso co n la funzione mysql_insert_id().

    Riguardando meglio:
    Codice PHP:
    $query_a = "INSERT INTO $tb_name_a (email)
    VALUES ('
    $email')";
    $query_b = "INSERT INTO $tb_name_b (id, Nick)
    VALUES("
    .mysql_insert_id().", '$Nick')";
    In effetti, prima devi inserire la seconda query, ovvero i nick. Poi, conoscendo il nick dell'utente appena inserito puoi usare la mysql_insert_id() per vedere che id ha quell'utente, e quindi associargli tutte le email che vuoi con quell'id.

    Ciao!

Regole di scrittura

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