Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Estrazione dati db

  1. #1

    Estrazione dati db

    Nome Film----Anno Uscita----Regista Film----Attore Film
    Film1--------2005-------------Regista 1------Attore 1
    Film2--------2004-------------Regista 2------Attore 2
    Film3--------2005-------------Regista 3------Attore 3

    In una tabella ho i dati di cui sopra. Dopo aver fatto la query sul db, scrivo

    while($row=mysql_fetch_array($result){
    extract($row)
    }

    mysql_fecth_array($result) trasforma la riga di risulati in un array di nome $row. In pratica è come se avessi:
    $row=array(NomeFilm=>'Film1',Anno Uscita=>2005,Regista Film=>'Regista 1' Attore Film=>'Attore 1');

    Questo ovviamente si ripete per tutte e tre le righe della tabella.

    extract($row); serve per creare variabili con lo stesso nome dei campi e popolarle con i valori del reord corrente. In pratica:

    $nomeFilm="Film 1";
    $AnnoUscita=2005;
    $Regista Film='Regista1';
    $Attore Film='Attore 1';

    Il ciclo while prosegue fino a quanto $row diventa false.

    E' giusta la cosa?

  2. #2
    Concettualmente sì.
    Cosa faccia poi nello specifico (e come) la funzione extract mi è ignoto.

  3. #3
    extract($row) serve a creare variabili con lo stesso nome dei campi e popolarle con i valori del record corrente.

    Dopo l'istruzione

    while($row=mysql_fetch_array($result){
    extract($row)
    }

    è come se avessi:

    $row=array(NomeFilm=>'Film1',Anno Uscita=>2005,Regista Film=>'Regista 1' Attore Film=>'Attore 1');

    con extract($row) "trasformo" l'array precedente in variabili il cui nome è lo stesso del campo della tabella e il valore è quello del record corrente

    $nomeFilm="Film 1";
    $AnnoUscita=2005;
    $Regista Film='Regista1';
    $Attore Film='Attore 1';

  4. #4
    Mi posti il codice di quella funzione?

  5. #5
    Originariamente inviato da bismark2005
    extract($row) serve a creare variabili con lo stesso nome dei campi e popolarle con i valori del record corrente.

    Dopo l'istruzione

    while($row=mysql_fetch_array($result){
    extract($row)
    }

    è come se avessi:

    $row=array(NomeFilm=>'Film1',Anno Uscita=>2005,Regista Film=>'Regista 1' Attore Film=>'Attore 1');

    con extract($row) "trasformo" l'array precedente in variabili il cui nome è lo stesso del campo della tabella e il valore è quello del record corrente

    $nomeFilm="Film 1";
    $AnnoUscita=2005;
    $Regista Film='Regista1';
    $Attore Film='Attore 1';
    E a cosa servirebbe questa cosa? Perchè non fare semplicemente: $row['NomeFilm'], $row['AnnoUscita'], ecc.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Secondo me quella funzione che menziona lui fa proprio quello che dici te satifal.
    Anche io mi limiterei a $row['NomeFilm'], $row['AnnoUscita'], ecc

  7. #7
    Questo è il codice dell'esercizio:

    <?php
    //connect to MySQL
    $db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
    die ('Unable to connect. Check your connection parameters.');

    // make sure you're using the right database
    mysql_select_db('moviesite', $db) or die(mysql_error($db));

    // retrieve information
    $query = 'SELECT
    movie_name, movie_year, movie_director, movie_leadactor,
    movie_type
    FROM
    movie
    ORDER BY
    movie_name ASC,
    movie_year DESC';
    $result = mysql_query($query, $db) or die(mysql_error($db));

    // determine number of rows in returned result
    $num_movies = mysql_num_rows($result);
    ?>
    <div style="text-align: center;">
    <h2>Movie Review Database</h2>
    <table border="1" cellpadding="2" cellspacing="2"
    style="width: 70%; margin-left: auto; margin-right: auto;">
    <tr>
    <th>Movie Title</th>
    <th>Year of Release</th>
    <th>Movie Director</th>
    <th>Movie Lead Actor</th>
    <th>Movie Type</th>
    </tr>
    <?php
    // loop through the results
    while ($row = mysql_fetch_assoc($result)) {
    extract($row);
    echo '<tr>';
    echo '<td>' . $movie_name . '</td>';
    echo '<td>' . $movie_year . '</td>';
    echo '<td>' . $movie_director . '</td>';
    echo '<td>' . $movie_leadactor . '</td>';
    echo '<td>' . $movie_type . '</td>';
    echo '</tr>';
    }
    ?>
    </table>


    <?php echo $num_movies; ?> Movies</p>
    </div>

  8. #8
    Non hai postato il codice del metodo extract(). In ognio caso a meno di motivi particolari basterebbe fare:

    Codice PHP:
    ...
    while (
    $row mysql_fetch_assoc($result)) {
    extract($row);
    echo 
    '<tr>';
    echo 
    '<td>' $row['movie_name'] . '</td>';
    echo 
    '<td>' $row['movie_year'] . '</td>';
    echo 
    '<td>' $row['movie_director'] . '</td>';
    echo 
    '<td>' $row['movie_leadactor'] . '</td>';
    echo 
    '<td>' $row['movie_type'] . '</td>';
    echo 
    '</tr>';

    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    extract() è una funzione del php... non l'ha scritta lui

  10. #10
    Originariamente inviato da piesse78
    extract() è una funzione del php... non l'ha scritta lui
    Mai utilizzata e ne ignoravo perfino l'esistenza
    Non si finisce mai di imparare
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.