Visualizzazione risultati 1 fino 11 di 11

Discussione: Come ottenere nomi delle tabelle in un database e ciclarli

  1. #1
    Guest

    Predefinito Come ottenere nomi delle tabelle in un database e ciclarli

    Salve a tutti!
    Ho questo problema che mi sta facendo impazzire in quanto non riesco ad arrivare ad una soluzione dopo aver provato svariate vie.

    Il mio problema è ottenere i nomi di tutte le tabelle presenti in un database e all'interno di un ciclo (che è lo stesso con cui ottengo le tabelle) andare a crearmi una query che selezioni il numero di righe all'interno di ogni tabella per poi stamparle a video.

    Questo è il codice:
    Codice PHP:
    $sql = "SHOW TABLES FROM my_database";
    $result = mysql_query($sql);

    //Qui non l'ho scritto ma effettuo un controllo sulla query $result e poi:

    while($row = mysql_fetch_row($result)) {
    $tabella = $row[0];
    $risultato = mysql_query("SELECT * FROM $tabella") or die(mysql_error());
    $conta = mysql_fetch_row($risultato) or die(mysql_error());
    echo
    "$conta<br>";
    }
    Il problema è che mi da errore nella query $risultato...non so come fare!
    Non so se il problema sia legato alla query tabella...infatti avevo provato ad usare una variabile per incrementarla ma non funzionava comunque!

    Qualcuno ha qualche suggerimento?

  2. #2
    Guest

    Predefinito

    Prova così:
    Codice PHP:
    $risultato = mysql_query("SELECT * FROM ".$tabella."");
    Ultima modifica di mathis : 04-04-2014 alle ore 19.52.23

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mathis Visualizza messaggio
    Prova così:
    Codice PHP:
    $risultato = mysql_query("SELECT * FROM ".$tabella."");
    Non va, l'avevo già provato e restituisce questo avvertimento: "Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Autogestione\prova.php on line 44"

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

    Predefinito

    Allora probabilmente sbagli qualcosa nel codice dopo, tipo il parametro che passi alla mysql_fetch_row().

    Ciao!

  5. #5
    Guest

    Predefinito

    Eppure quelle funzioni le utilizzo in un'altra pagina e funziona tutto..
    Il fatto è che se ciclo la visualizzazione dei nomi delle tabelle senza creare query mi funziona tutto, se utilizzo le funzioni per ottenere il numero di righe senza visualizzare i nomi delle tabelle mi funziona...

    Hai qualche idea?
    Mi esce anche No database selected, ma il database è selezionato

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

    Predefinito

    Citazione Originalmente inviato da classe1cmcurie Visualizza messaggio
    Il fatto è che se ciclo la visualizzazione dei nomi delle tabelle senza creare query mi funziona tutto
    È impossibile interfacciarsi al database senza creare query.

    Citazione Originalmente inviato da classe1cmcurie Visualizza messaggio
    Mi esce anche No database selected, ma il database è selezionato
    Non è un dettaglio: probabilmente c'é qualcosa che non va. Se mostri il codice possiamo tentare di darti una mano.

    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    È impossibile interfacciarsi al database senza creare query.
    Ho scritto male, volevo dire che il ciclo che visualizza i nomi delle tabelle funziona se non inserisco le query per contare le righe delle tabelle

    Il codice completo è questo, non c'è molta differenza da quello che ho postato:
    Codice PHP:
    $dbname = 'autogestione';

    if (!
    mysql_connect('localhost', 'root', '')) {
    echo
    "Non posso connettermi!";
    exit;
    }

    $sql = "SHOW TABLES FROM $dbname";
    $result = mysql_query($sql);

    if(
    $result) {
    while(
    $row = mysql_fetch_row($result)) {
    $tabella = $row[0];
    echo
    "$tabella<br>";
    $risultato = mysql_query("SELECT * FROM ".$tabella."") or die(mysql_error());;
    $conta = mysql_fetch_row($risultato) or die(mysql_error());
    }

    } else {
    echo
    "Database error! Non posso mostrare le tabelle!\n";
    echo
    "MySQL Error: " . mysql_error();
    exit;
    }
    Saluti

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

    Predefinito

    Devi usare anche la mysql_select_db.
    Ma il database è quello di altervista? Perché in tal caso, i parametri di connessione mi sembrano errati.

    Ciao!
    Ultima modifica di alemoppo : 04-04-2014 alle ore 20.49.54

  9. #9
    Guest

    Predefinito

    Ecco!! Onestamente non l'avevo incluso perché in questa pagina di prova non avevo incluso il mio file di connessione e avevo creato una connessione veloce senza pensare. Adesso sto lavorando il locale, per la connessione non c'è problema, ho un altro file.

    Comunque adesso mi trova il database ma mi da ancora errori il mysql_fetch_row....non so...dovrei utilzzare un array dove metto la query e poi uso mysql_fetch_array per visualizzare il risultato?

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

    Predefinito

    Perché mysql_fetch_array ?
    mysql_fetch_array crea un array numerico e associativo.

    In effetti il codice mi sembra corretto.
    Prova come immagino volevi spiegare: salvare le varie tabelle in un array, per poi, per ogni voce, fare una query per ogni tabella.

    Ciao!

  11. #11
    Guest

    Predefinito

    Yeah!!! Ho risolto!

    Sono un cretino, nel fare tutte le mie varie prove alla fine al posto di inserire mysql_num_rows avevo scritto mysql_fetch_row che è per gli array...

    Codice finale del ciclo:
    Codice PHP:
    while($row = mysql_fetch_row($result)) {
    $tabella = $row[0];
    echo
    "$tabella<br>";
    $risultato = mysql_query("SELECT * FROM `$tabella`");
    $conta = mysql_num_rows($risultato);
    echo
    "$conta<br>";
    }
    Grazie per l'aiuto!

Regole di scrittura

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