Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Passaggio Php/Html

  1. #1

    Passaggio Php/Html

    Salve ragazzi non mi è ben chiara una cosa nel seguente codice:

    <?php

    if ($_POST['submit'] == 'Add') {
    echo '<h1>Add ' . ucfirst($_POST['type']) . '</h1>';
    ?>
    <form action="form4b.php" method="post">
    <input type="hidden" name="type" value="<?php echo $_POST['type']; ?>"/>
    <table>
    <tr>
    <td>Name</td>
    <td>
    <?php echo $_POST['name']; ?>
    <input type="hidden" name="name" value="<?php echo $_POST['name']; ?>"/>
    </td>
    </tr>
    <?php
    if ($_POST['type'] == 'movie') {
    ?>
    <tr>
    <td>Movie Type</td>
    <td>
    <?php echo $_POST['movie_type']; ?>
    <input type="hidden" name="movie_type"
    value="<?php echo $_POST['movie_type']; ?>"/>
    </td>
    </tr><tr>
    <td>Year</td>
    <td><input type="text" name="year" /></td>
    </tr><tr>
    <td>Movie Description</td>
    <?php
    } else {
    echo '<tr><td>Biography</td>';
    }
    ?>
    <td><textarea name="extra" rows="5" cols="60"></textarea></td>
    </tr><tr>
    <td colspan="2" style="text-align: center;">
    <?php
    if (isset($_POST['debug'])) {
    echo '<input type="hidden" name="debug" value="on" />';
    }
    ?>
    <input type="submit" name="submit" value="Add" />
    </td>
    </tr>
    </table>
    </form>
    <?php
    // The user is just searching for something
    } else if ($_POST['submit'] == 'Search') {
    echo '<h1>Search for ' . ucfirst($_POST['type']) . '</h1>';
    echo '

    Searching for ' . $_POST['name'] . '...</p>';
    }

    if (isset($_POST['debug'])) {
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    }
    ?>
    </body>
    </html>

    In pratica non mi è ben chiaro il "meccanismo" di passaggio tra Php ed Html. Nelle prime righe di codice è scritto:

    <?php

    if ($_POST['submit'] == 'Add') {
    echo '<h1>Add ' . ucfirst($_POST['type']) . '</h1>';
    ?>

    Ora la parentesi graffa non dovrebbe chiudersi all'interno dei due tag di apertura e chiusura di Php? Cioè così:

    <?php

    if ($_POST['submit'] == 'Add') {
    echo '<h1>Add ' . ucfirst($_POST['type']) . '</h1>';
    }
    ?>

    Infatti se in netbeans scrivo solo:
    <?php
    if($_POST['type']=='Add'){
    ?>

    senza altro codice mi segnala il pallino rosso di errore al fianco di ?>

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non e' sbagliato, nell'if ci metti quello che vuoi basta che poi lo chiudi correttamente.
    Quell IF si chiude qui:

    // The user is just searching for something
    ....} else if ($_POST['submit'] == 'Search') {....
    quindi e' chiuso.

  3. #3
    Questa cosa mi confonde le idee. Come fa a sapere Php dove si chiude l'if?

    In genere si dovrebbe scrivere:

    <?php
    if($_POST['movie]=='Add){

    Codice............

    }
    ?>

    Però se io chiudo prima php

    <?php
    if($_POST['movie]=='Add){

    ?>

    non dovrebbe andar bene. Infatti come fa PHp ad individuare dove finisce l'if?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Per php è indifferente se tu fai

    <?php if ($var == 'value') {
    bla
    bla
    bla
    } ?>

    oppure

    <?php if ($var == 'value') { ?>
    bla bla bla
    <php } ?> (vedi? l'importante è chiudere la parentesi, non è necessario che sia tutto nel blocco di php.

    oppure

    <?php if ($var == 'value') : ?>
    blabla
    bla
    <?php endif; ?>

  5. #5
    E' proprio questo che mi sembra strano!!

    Comunque. Da quanto ho capito quando il motore Php legge il codice la prima cosa che fa,è leggere tutte le righe Php. Quindi anche se si entra ed esce da php in pratica è come se ci si trovasse di fronte ad una unica riga. In pratica:

    <?php if ($var == 'value') { ?>
    bla bla bla
    <php } ?> (vedi? l'importante è chiudere la parentesi, non è necessario che sia tutto nel blocco di php.

    PHP legge tutto come una sola riga:

    <?php
    if($var=='value'){
    }
    >?

    Anche se ci sono altre righe in cui si entra ed esce da PHP, Php quando legge vede tutto come una sola riga è giusto??

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Si e' giusto, lo script viene eseguito dall'altro verso il basso diciamo se c'e' un errore si ferma(poi dipende da che tipo d'errore)

  7. #7
    Ok grazie vedrò di fare qualche prova. Ultima cosa...ma invece di mettere insieme PHP ed HTML non sarebbe meglio separare le due cose?

    Per la grafica usare solo un file HTMl e per i calcoli file PHP. Poi i due file andrebbero collegati in qualche maniera. Così il codice è più ordinato

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ovvio si.. di solito si fanno le cose piu' ordinate poi dipende dall esperienza che hai per farlo, da cosa usi.
    Se usi un linguaggio template per l html tipo Smarty Template o semplicemente potresti creare dei blocci di codice da includere per non vedere tutto insieme.

    Esempio menu.php qui dentro ci metti il solo html/php per creare il menu
    Nella pagina dove ti serve lo includi con require_once('menu.php');
    Molto banale ma per rendere l'idea

  9. #9
    Ultima cosa. Il codice di prima il Php quando lo legge lo legge così:

    <?php

    if ($_POST['submit'] == 'Add') {
    echo '<h1>Add ' . ucfirst($_POST['type']) . '</h1>';

    php echo $_POST['type'];

    echo $_POST['name'];

    if ($_POST['type'] == 'movie') {

    echo $_POST['movie_type'];
    echo $_POST['movie_type'];
    } else {
    echo '<tr><td>Biography</td>';
    }


    if (isset($_POST['debug'])) {
    echo '<input type="hidden" name="debug" value="on" />';
    }


    } else if ($_POST['submit'] == 'Search') {
    echo '<h1>Search for ' . ucfirst($_POST['type']) . '</h1>';
    echo '

    Searching for ' . $_POST['name'] . '...</p>';
    }

    if (isset($_POST['debug'])) {
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    }
    ?>

    Cioè lo legge come un unico blocco di codice. Poi torna indietro legge anche l'html e rimanda tutto al browser. E' giusto?

  10. #10
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    No legge tutto insieme e viene generato quel che deve generare se non ci sono errori.

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.