Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    controllo su due tabelle nel db

    ciao a tutti, ho due tabelle:
    - newusers
    (composta da 3 campi: nome - cognome - data di nascita)
    - oldusers
    (composta da 3 campi: nome - cognome - data di nascita)

    tramite form l'utente invia nome , cognome , data di nascita a elabora.php che deve controllare che non ci siano corrispondenze prima nella tab oldusers e poi nella tab newusers.
    se non trova gli stessi valori allora inserisce un nuovo record nella tab newusers con ovviamente i 3 dati.

    la mia domanda è:
    si puo' fare (essendo uguali i nomi dei campi delle tab) un controllo unico du 2 tabelle?
    se si mi fate un esempio?
    grazie.

  2. #2

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Avrei proprio bisogno di un aiutino ...qualcuno puo' aiutarmi?
    grazie

  5. #5
    certo...a baste fare una inner join sulle due tabelle legandole per il nome contando i risultati estratti

    mysql_query("SELECT COUNT(*) AS numrec FROM oldusers AS ou INNER JOIN newusers AS nu ON nu.nome = ou.nome WHERE ou.nome = '{$_POST['nome']}'");

    poi estrai il valore numrec usando fetch...se questo è maggiore di zero vuoldire che ha trovato qualcosa e quindi non deve far nulla ^^

    la query non è complicata per le left\inner join vai a guardare sul sito di mysql...ovviamente anche per count

    PS: sul campo nome metti una chiave primairia o comununque una chiave unica

  6. #6
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    ok ora ci provo...

    sulla tabella new users ho il campo ID (auto_increment) come chiave primaria, ma nella tab oldusers no. cosa faccio?

  7. #7
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    oltretutto così controllo solo il nome ($_POST['name'])
    devo farlo per tutti e 3 i campi?
    è corretto come punto di partenza?
    Codice PHP:
    $query "SELECT COUNT(*) AS numrec FROM oldusers AS ou INNER JOIN newusers AS nu ON nu.name = ou.name WHERE ou.name = '$name'";
    $dati mysql_db_query($_CONFIG['dbname'], $query$conn)
    or die(
    'Errore della query - Errore MySQL: '.mysql_error());
    if (
    mysql_num_rows($dati)!=0) {
    echo 
    "
    NON PUOI ISCRIVERTI!"
    ;

    non funzia! mi da sempre NON PUOI ISCRIVERTI! anche se nel form metto un nome inesistente nelle 2 tab.

  8. #8
    normalissimo

    ti ho detto di estrarre il risultato non di contare i record...perché i record già li conta COUNT!

    inoltre mysql_db_query è deprecato! devi usare mysql_select_db a inizio script e poi mysql_query per eseguire la query

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    ok chiaro ora
    grazie. provo e vediamo che succede.

    ti avevo chiesto inoltre che, in questo caso, mi sembra di capire che il controllo sia solo sul campo 'name' comune alle due tabelle...

    io avrei bisogno invece di controllare 3 campi comuni: name, surname e datan (nome congnome e data di nascita) informazioni necessarie che identificano, nel caso dello script che devo realizzare, una persona unica.

    cosa faccio quindi? faccio 3 volte la query e controllo il risultato di numrec + numrec2(query2) + numrec3(query3) quando è maggiore di 3?

    grazie.

    un ultima cosa, dove posso trovare info sulle chiavi uniche, chiavi primarie ecc.. vorrei capire queste caratteristiche. scusa la GRAN FAGIANITA' e grazie.

  10. #10
    non c'è bisogno di 3 query...basta che ON invece di farlo solo su una chiave lo fai su tutte e tre cmq a questo punto ti conviene fare una unica grande chiave primaria

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 © 2024 vBulletin Solutions, Inc. All rights reserved.