Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23

    Problema SWITCH e funzione personalizzata

    Salve a tutti, non riesco a risolvere questo problema:
    ho una pagina che punta ad un'altra dove c'è uno "switch" per cambiare il contenuto di un div, e fin qui tutto bene. Uno dei "case", il primo per esattezza, contiene una variabile (che è il contenuto del div stesso) che è definita utlizzando il formato

    Codice PHP:
    $nomevariabile = <<<HTML
    tutto il codice necessario
    HTML; 
    All'interno di "tutto il codice necessario" c'è la definizione di un form, e per alcuni motivi (che adesso tralascio...), ho necessità di usare una mia funzione per popolare una select.

    Questo è parte del codice:

    Codice PHP:

    switch ($opt){
    case 
    1:        //Atleta.NEW
    $gestione = <<<HTML
    \n  <form method="post" action="fnz.php" style="text-align:center; font-family:Courier;">
       <table width="98%" align="center" style="text-align:center;">
        <tr>
         <td colspan="6" style="text-align:center; font-size:2em; font-family:Verdana, Geneva, sans-serif; background-color:rgba(51,51,51,1);">
           INSERIMENTO NUOVI ATLETI
         </td>
        </tr>
        <tr>
         <td><label>Cognome<br><input type="text" required placeholder="COGNOME" name="cognome" size="30%"></label></td>
         <td><label>Nome<br><input type="text" required placeholder="NOME" name="nome" size="30%"></label></td>
         <td>
          <label>Sesso<br>
           <select name="sesso">
            <option>Uomo</option>
            <option>Donna</option>
           </select>
          </label>
         </td>
         <td>
          <label>Nato il<br>
           <select id="bd_d" name="bd_d">
            function bd_d(){
                for (
    $d1 = "1"; $d1 <= "31"; $d1++){
                    if (
    $d1 < 10){
                        echo "<option>0
    $d1</option><br>\n";
                    }
                    else{
                        echo "<option>
    $d1</option><br>\n";
                    }
                }
            }
            
    $bd_day = bd_d();
           </select>-<select id="bd_m" name="bd_m">
            function bd_m(){
                for (
    $m1 = "1"; $m1 <= "12"; $m1++){
                    if (
    $m1 < 10){
                        echo "<option>0
    $m1</option><br>";
                    }
                    else{
                        echo "<option>
    $m1</option><br>";
                    }
                }
            }
            
    $bd_month = bd_m();
           </select>-<select id="bd_y" name="bd_y">
            function bd_y(){
                 for (
    $y1 = "1960"; $y1 <= "2020"; $y1++){
                     echo "<option>
    $y1</option><br>";
                 }
             }
             
    $bd_year = bd_y();
           </select>
          </label>
         </td>
    //tanto altro codice 
    Le tre funzioni inserite qui non funzionano e non so come poterle richiamare o come mettere in una sola variabile l'output della variabile (se la metto in cima alla pagina me la scrive li......)

    Qualcuno può indicarmi un metodo? Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Già mancano i tag <?php e ?>. Non puoi mescolare del html e del php senza i tag. Ma siccome stai mettendo del codice html e del php in una variabile anche se li mettessi non funzionerebbe.

    Comunque fosse in te rivedrei tutto in quanto quello che stai facendo è troppo complesso.

    Potresti già mettere delle funzioni al posto di tutto quel codice. Esempio :

    Codice PHP:
    switch ($opt){
    case 
    1:        //Atleta.NEW
      
    atletaNew();
    ... 
    poi ti crei una funzione atletaNew nella quale metti il codice. Com'è adesso non funzionerà ma il codice sarà più leggibile.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    Complessità a parte, quello che dici non è del tutto esatto, all'interno dei delimitatori <<<HTML e HTML; posso (già l'ho fatto in altre pagine e so che funziona) mischiare html e $nomevariabile prima definita senza i tag classici <?php e ?> , in ogni caso ho provato a metterceli ma non funziona. Sicuramente è proprio per via dei particolari delimitatori con cui definisco la variabile, non so come ovviare.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da Rikk73 Visualizza il messaggio
    Complessità a parte, quello che dici non è del tutto esatto, all'interno dei delimitatori <<<HTML e HTML; posso (già l'ho fatto in altre pagine e so che funziona) mischiare html e $nomevariabile prima definita senza i tag classici <?php e ?> , in ogni caso ho provato a metterceli ma non funziona. Sicuramente è proprio per via dei particolari delimitatori con cui definisco la variabile, non so come ovviare.
    L'hai scritto tu "mischiare html e $nomevariabile" mica funzioni o richiami di funzioni php.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Comunque puoi usare ob_start() ob_get_contents() ob_end_clean() etc...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Codice PHP:
    <?php
    function bd_d(){
                for (
    $d1 "1"$d1 <= "31"$d1++){
                    if (
    $d1 10){
                        echo 
    "<option>0$d1</option><br>\n";
                    }
                    else{
                        echo 
    "<option>$d1</option><br>\n";
                    }
                }
            }
    function 
    bd_m(){
                for (
    $m1 "1"$m1 <= "12"$m1++){
                    if (
    $m1 10){
                        echo 
    "<option>0$m1</option><br>";
                    }
                    else{
                        echo 
    "<option>$m1</option><br>";
                    }
                }
            }
    function 
    bd_y(){
                 for (
    $y1 "1960"$y1 <= "2020"$y1++){
                     echo 
    "<option>$y1</option><br>";
                 }
             }
    ob_start()?>
      <form method="post" action="fnz.php" style="text-align:center; font-family:Courier;">
       <table width="98%" align="center" style="text-align:center;">
        <tr>
         <td colspan="6" style="text-align:center; font-size:2em; font-family:Verdana, Geneva, sans-serif; background-color:rgba(51,51,51,1);">
           INSERIMENTO NUOVI ATLETI
         </td>
        </tr>
        <tr>
         <td><label>Cognome<br><input type="text" required placeholder="COGNOME" name="cognome" size="30%"></label></td>
         <td><label>Nome<br><input type="text" required placeholder="NOME" name="nome" size="30%"></label></td>
         <td>
          <label>Sesso<br>
           <select name="sesso">
            <option>Uomo</option>
            <option>Donna</option>
           </select>
          </label>
         </td>
         <td>
          <label>Nato il<br>
           <select id="bd_d" name="bd_d">
            <?php $bd_day bd_d();?>
           </select>-<select id="bd_m" name="bd_m">
            
            <?php $bd_month bd_m();?>
           </select>-<select id="bd_y" name="bd_y">
            
             <?php $bd_year bd_y();?>
           </select>
          </label>
         </td>
    <?php 
    $gestione 
    ob_get_contents();
    ob_end_clean();
    print 
    $gestione;
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    Si in effetti non è detto che funzioni "mischiare", cioè se inserisco delle variabili e basta va alla grande, ci ho praticamente improntato un sito, il problema è nato con una funzione, e sicuramente ci sarà anche con cose un po' più complesse di una semplice variabile già definita prima.
    Adesso provo il sistema che mi hai suggerito, sinceramente non conoscevo queste funzioni, non sono un grande esperto e credo siintuisca anche, questo per me è divertimento e pratica, ed il bello è che si impara sempre qualcosa di nuovo!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    PERFETTO! Grazie mille funziona alla grande!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.