Visualizzazione risultati 1 fino 9 di 9

Discussione: Sapere quanti elementi sono in tavola

  1. #1
    Guest

    Cool Sapere quanti elementi sono in tavola

    Ciao a tutti. Avevo postato una discussione qualche settimana fa e ne approfitto per ringraziare chi mi aveva risposto, comunque alla fine ho trovato la soluzione.

    Comunque oggi chiedo alcune cose riguardo a MySql che dovrebbero essere semplicisemplici ma non riesco a trovare:

    1. esiste un comando che mi restituisce il numero di righe o dati in una tavola? 2. esiste un comando che mi dice se in una colonna di una tavola esiste un dato valore?
    3. quando cancello un dato da una tabella e ne inserisco uno nuovo il contatore delle id continua come se non avessi cancellato nulla. è normale?
    4. se è normale che sia così come si fa a cancellare un dato e fare spostare tutti gli altri dati verso l'alto (ad es. se in questa lista cancellassi la domanda 3 questa diventerebbe a sua volta la domanda 3: c'è qualcosa che funziona in modo simile in MySql?)

    Grazie in anticipo.

    ah dimenticavo: qual'è il modo più veloce di trasportare tutta una tabella in un array?
    Ultima modifica di Fuligginoso : 12-02-2007 alle ore 20.18.20

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per "tavola" intendi "tabella"?

    Citazione Originalmente inviato da Fuligginoso
    1. esiste un comando che mi restituisce il numero di righe o dati in una tavola?
    Codice PHP:
    $risultato=mysql_query("SELECT * FROM tabella");
    echo
    mysql_num_rows($risultato);
    Oppure:
    Codice PHP:
    $risultato=mysql_query("SELECT COUNT(nomediuncampo) AS numero FROM tabella");
    $valore=mysql_fetch_array($risultato);
    echo
    $valore['numero'];
    Citazione Originalmente inviato da Fuligginoso
    2. esiste un comando che mi dice se in una colonna di una tavola esiste un dato valore?
    Codice PHP:
    $risultato=mysql_query("SELECT * FROM tabella WHERE nomecampo='valore'");
    if (
    mysql_num_rows($risultato)>=1)
    echo
    "Il valore è presente.";
    else
    echo
    "Il valore non è presente.";
    Citazione Originalmente inviato da Fuligginoso
    3. quando cancello un dato da una tabella e ne inserisco uno nuovo il contatore delle id continua come se non avessi cancellato nulla. è normale?
    Sì, è normale.

    Citazione Originalmente inviato da Fuligginoso
    4. se è normale che sia così come si fa a cancellare un dato e fare spostare tutti gli altri dati verso l'alto (ad es. se in questa lista cancellassi la domanda 3 questa diventerebbe a sua volta la domanda 3: c'è qualcosa che funziona in modo simile in MySql?)
    Qualcosa appositamente creato non credo esista.

    Citazione Originalmente inviato da Fuligginoso
    ah dimenticavo: qual'è il modo più veloce di trasportare tutta una tabella in un array?
    Puoi usare due funzioni: mysql_fetch_array oppure mysql_fetch_row.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Mamma che velocità! Vado subito a provare... GRAZIE!

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prego! Naturalmente devi inserire anche la parte di codice per connetterti al database, prima di effettuare quelle operazioni.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Aggiungo questo:
    Citazione Originalmente inviato da Fuligginoso
    ... ah dimenticavo: qual'è il modo più veloce di trasportare tutta una tabella in un array?
    Devi realizzarti una funzione apposita, ecco come:
    Codice PHP:
    function db_to_array ($result)
    {
    $res_array = array();
    for (
    $count=0; $line = mysql_fetch_array($result); $count++)
    $res_array[$count] = $line;
    return
    $res_array;
    }
    Questa funzione va inserita nei file PHP che la utilizzano, un esempio di utilizzo è il seguente:
    Codice PHP:
    $query = "SELECT ..."; // la query da eseguire
    $result = mysql_query ($query, $db);
    $res_array = db_to_array ($result);

    // per accedere ai campi usa la notazione $res_array[nr_riga]['nome_campo'];
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Aggiungo questo:Devi realizzarti una funzione apposita, ecco come:
    Codice PHP:
    function db_to_array ($result)
    {
    $res_array = array();
    for (
    $count=0; $line = mysql_fetch_array($result); $count++)
    $res_array[$count] = $line;
    return
    $res_array;
    }
    Questa funzione va inserita nei file PHP che la utilizzano, un esempio di utilizzo è il seguente:
    Codice PHP:
    $query = "SELECT ..."; // la query da eseguire
    $result = mysql_query ($query, $db);
    $res_array = db_to_array ($result);

    // per accedere ai campi usa la notazione $res_array[nr_riga]['nome_campo'];
    Stammi bene...
    La funzione che hai creato è quello che fa mysql_fetch_row.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da funcool
    La funzione che hai creato è quello che fa mysql_fetch_row.
    Ma quella funzione non estrae UNA SOLA RIGA dal risultato della query? La funzione che ho scritto sopra, invece, estrae tutti i record e li pone nella forma $res_array[numero_riga]['nome_chiave']... mi sembra sia diverso...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da Fuligginoso
    4. se è normale che sia così come si fa a cancellare un dato e fare spostare tutti gli altri dati verso l'alto (ad es. se in questa lista cancellassi la domanda 3 questa diventerebbe a sua volta la domanda 3: c'è qualcosa che funziona in modo simile in MySql?)
    Penso che questo problema comunemente non si ponga, perché metti caso che ogni riga della tua tabella corrisponda ad una domanda, chi si mette a definire le colonne della table eviterà di usare la colonna "id" come progressivo per le domande, bensì oltre ad id prevedrà una colonna apposita "numero" (sempre che ce ne fosse poi un concreto bisogno). Almeno io farei così. Anche perché nel caso di dover gestire PIU' questionari.. che fai crei una tabella per ogni questionario??
    Quindi le colonne per la tabella "domande", tipo:
    id, numero, id_questionario, testo_domanda, id_risposta.

    (che implica poi altre tabelle "questionario" e "risposte" a meno che la risposta non sia una colonna stessa della tabella "domande").


    Edit: dimenticavo, leggendo il titolo pensavo fosse una domanda di "galateo", del tipo quali e quanti bicchieri, come mettere le posate in tavola
    Ultima modifica di heracleum : 13-02-2007 alle ore 21.00.27
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Ma quella funzione non estrae UNA SOLA RIGA dal risultato della query? La funzione che ho scritto sopra, invece, estrae tutti i record e li pone nella forma $res_array[numero_riga]['nome_chiave']... mi sembra sia diverso...
    Sì, scusa hai ragione. Avevo capito male.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

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