• User Attivo

    info array

    Buongiorno a tutti,

    una domanda:

    ho una tabella:

    [PHP]

    CATEGORIE
    ID | NOME | TITLE | DESCRIPTION | KEYWORDS | DESCRIZIONE
    1 | nome1 | title1 | description1 | keywords1 | descrizione1
    2 | nome2 | title2 | description2 | keywords2 | descrizione2
    3 | nome3 | title3 | description3 | keywords3 | descrizione3
    4 | nome4 | title4 | description4 | keywords4 | descrizione4

    [/PHP]

    estraggo i dati e li metto in 6 array:

    [PHP]

    <?php
    $sql = "SELECT * FROM categorie";
    $ret = mysqli_query( $db, $sql );
    while ($row = mysqli_fetch_array($ret)){
    $id_categoria[] = $row['id'];
    $nome_categoria[] = $row['nome'];
    $title_categoria[] = $row['title'];
    $description_categoria[] = $row['description'];
    $keywords_categoria[] = $row['keywords'];
    $descrizione_categoria[] = $row['descrizione'];
    }?>
    [/PHP]

    il mio output:

    [PHP]

    <?php echo $id_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo $title_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo $description_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo $keywords_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[0] ?>
    <?php echo "<br />"; ?>
    <?php echo "<br />"; ?>
    <?php echo $id_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo $title_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo $description_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo $keywords_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[1] ?>
    <?php echo "<br />"; ?>
    <?php echo "<br />"; ?>
    <?php echo $id_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo $title_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo $description_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo $keywords_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[2] ?>
    <?php echo "<br />"; ?>
    <?php echo "<br />"; ?>
    <?php echo $id_categoria[3] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[3] ?>
    <?php echo "<br />"; ?>
    <?php echo $title_categoria[3] ?>
    <?php echo "<br />"; ?>
    <?php echo $description_categoria[3] ?>
    <?php echo "<br />"; ?>
    <?php echo $keywords_categoria[3] ?>
    <?php echo "<br />"; ?>
    <?php echo $nome_categoria[3] ?>
    [/PHP]

    c'è un sistema per ottenere lo stesso output ma con meno codice?
    un ciclo tipo foreach?

    grazie 1000 a tutti e buona giornata


  • User Attivo

    Puoi usare un ciclo for, conosci il numero di record disponibili con mysql_num_rows() oppure con un semplice count($unarrayqualsiasidiquellicreati).

    [PHP]$ripetizioni = count($id_categoria);
    for($i = 0, $i < $ripetizioni, ++$i) {
    echo $id_categoria* . "<br />" ;
    echo $nome_categoria* . "<br />";
    echo $title_categoria* . "<br />";
    echo $description_categoria* . "<br />";
    echo $keywords_categoria* . "<br />";
    echo $nome_categoria* . "<br /><br />";
    }[/PHP]

    Due domande:
    Ripeti due volte il "nome", è giusto così?
    Perché a volte usi l'italiano (nome) e altre l'inglese (title, description, ecc..)?


  • User Attivo

    Ciao Gigi,

    grazie mille per la risposta, in verità ho messo 2 volte il nome per errore;

    in verità sarebbe così:

    [PHP]
    <?php
    $sql = "SELECT * FROM articoli";
    $ret = mysqli_query( $db, $sql );
    while ($row = mysqli_fetch_array($ret)){
    $id_articolo[] = $row['id'];
    $title_articolo[] = $row['title'];
    $description_articolo[] = $row['description'];
    $keywords_articolo[] = $row['keywords'];
    $data_articolo[] = $row['data'];
    $h1_articolo[] = $row['h1'];
    $h2_articolo[] = $row['h2'];
    $testo_articolo[] = $row['testo'];
    $visibile_articolo[] = $row['visibile'];
    }?>

    <?php
    $ripetizioni = count(4);
    for($i = 0, $i < $ripetizioni, ++$i) {
    echo $id_articolo* . "<br />" ;
    echo $title_articolo* . "<br />";
    echo $description_articolo* . "<br />";
    echo $keywords_articolo* . "<br />";
    echo $data_articolo* . "<br />";
    echo $h1_articolo* . "<br />";
    echo $h2_articolo* . "<br />";
    echo $testo_articolo* . "<br />";
    echo $visibile_articolo* . "<br />";
    }
    ?>
    [/PHP]

    però non funziona, non capisco, sembra tutto corretto :arrabbiato:

    grazie mille ancora e buona pasqua


  • User Attivo

    L'errore è nella istruzione FOR. I vari parametri vanno separati con il punto e virgola anzichè la sola virgola.
    [PHP]for($i = 0; $i < $ripetizioni; ++$i)[/PHP]
    Ma perchè non usi un semplice ciclo così?
    [PHP]
    <?php
    $sql = "SELECT * FROM articoli";
    $ret = mysqli_query( $db, $sql );

    while ($row = mysqli_fetch_array($ret)){
        echo $row['id'] . '<br />' ;
        echo $row['title'] . '<br />';
        echo $row['description'] . '<br />';
        echo $row['keywords'] . '<br />';
        echo $row['data'] . '<br />';
        echo $row['h1'] . '<br />';
        echo $row['h2'] . '<br />';
        echo $row['testo'] . '<br />';
        echo $row['visibile'] . '<br />';
    }
    

    ?>
    [/PHP]

    Buona Pasqua anche a te.


  • User Attivo

    Mi sembra che ci sia un errore anche in questa istruzione:

    @enricocarli said:

     $ripetizioni = count(4);
    

    Essa assegnerà tautologicamente

    [PHP]$ripetizioni = 1;[/PHP]

    di conseguenza ciclerà al massimo una sola volta.


  • User Attivo

    ciao Oslino! tempestivo come al solito :wink3:

    il codiche funzionante se servisse a qualcuno è questo:

    [PHP]
    <?php
    $sql = "SELECT * FROM articoli";
    $ret = mysqli_query( $db, $sql );
    while ($row = mysqli_fetch_array($ret)){
    $id_articolo[] = $row['id'];
    $title_articolo[] = $row['title'];
    $description_articolo[] = $row['description'];
    $keywords_articolo[] = $row['keywords'];
    $data_articolo[] = $row['data'];
    $h1_articolo[] = $row['h1'];
    $h2_articolo[] = $row['h2'];
    $testo_articolo[] = $row['testo'];
    $visibile_articolo[] = $row['visibile'];
    }?>

    <?php
    $ripetizioni = count($id_articolo);
    for($i = 0; $i < $ripetizioni; ++$i) {
    echo $id_articolo* . "<br />" ;
    echo $title_articolo* . "<br />";
    echo $description_articolo* . "<br />";
    echo $keywords_articolo* . "<br />";
    echo $data_articolo* . "<br />";
    echo $h1_articolo* . "<br />";
    echo $h2_articolo* . "<br />";
    echo $testo_articolo* . "<br />";
    echo $visibile_articolo* . "<br />";
    }
    ?>
    [/PHP]

    Oslino, ho fatto in questo modo perchè; dimmi se sbaglio, molto probabilmente è una cosa sciocca, ma volevo separare le query dall'html, per cui il primo pezzo lo metterei in un file e il secondo pezzo in un altro; non è + corretto secondo te? ho letto un po' di cose sull'mvc e ho provato un po' (molto superficialmente) codeigniter, che usa appunto l'mvc, mi sembra più leggibile il codice ecco...

    grazie a tutti per le delucidazioni
    saluti!