Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema foreach in una classe

    Salve, premetto che è il mio avvicinamento con le classi, non le ho mai ritenute importanti sinceramente.. Comunque, dovrei crearne una dove, specificando i nomi degli input, ne preleva il contenuto, poi li inserisce in un array (strutturato $nomeInput => $valueInput) e crea una funzione dove se tutti gli input sono pieni ritorna true, altrimenti false. Per ora ho scritto questo, ma mi dà errore nel primo foreach (Parse error: syntax error, unexpected T_FOREACH, expecting T_FUNCTION):

    Codice PHP:
    <?php
    class InputCheck {
        function 
    Clear($var) {
            return 
    htmlspecialchars(addslashes(trim($var)));
        }
        public 
    $c = array(); // Verranno specificati gli input da prelevare
        
    public $valori = array(); // Array strutturato $nomeInput => $valueInput
        
    foreach($c as $campo) { // Per ogni input nell' array $c, ne preleviamo il contenuto e lo inseriamo in $valori
            
    $contenuto = (Clear($_POST[$campo])!='') ? (Clear($_POST[$campo])) : false;
            
    $valori[] = $campo => $contenuto
        }
        public function 
    Controllo() {
            
    $err 0;
            foreach(
    $valori as $key => $value) {
                if(empty(
    $value)) {
                    
    $err++;
                }
            }
            if(
    $err 0) {
                return 
    false;
            } else {
                return 
    true;
            }
        }
    }

    if(isset(
    $_POST['submit'])) {
        
    $miaC = new InputCheck();
        
    $miaC->c[] = "PrimoInput";
        if(
    $miaC->Controllo()) {
        echo 
    'Campi prelevati con successo';
        echo 
    $miaC->valori['PrimoInput'];
        } else {
        echo 
    'Errore';
        }
    }
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="text" name="PrimoInput" />
    <input type="submit" name="submit" value="Submit" /></form>
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Si utilizza $this per richiamare variabili non statiche all'interno di una classe, poi il foreach
    non lo puoi mettere nel nulla, devi creare una funzione e richiamarla

  3. #3

    Re: Problema foreach in una classe

    Originariamente inviato da 0-c00l
    (Parse error: syntax error, unexpected T_FOREACH, expecting T_FUNCTION):
    L'errore mi sembra più che esplicativo. Non puoi mettere codice al di fuori di una function a meno che non siano dichiarazioni di attributi.

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

  4. #4
    Ok, ho aggiornato il codice nel seguente modo, però non mi stampa il contenuto dell' input (tramite $key dell' array $valori):

    Codice PHP:
    <?php
    function Clear($var) {
            return 
    htmlspecialchars(addslashes(trim($var)));
    }
    class 
    InputCheck {
        public 
    $c = array();
        public 
    $valori = array();
        public function 
    preleva() {
            foreach(
    $this->as $campo) {
                
    $contenuto = (Clear($_POST[$campo])!='') ? (Clear($_POST[$campo])) : false;
                
    $valori[$campo] = $this->contenuto
            }
        }
        public function 
    Controllo() {
            
    $err 0;
            foreach(
    $this->valori as $key => $value) {
                if(empty(
    $value)) {
                    
    $err++;
                }
            }
            if(
    $err 0) {
                return 
    false;
            } else {
                return 
    true;
            }
        }
    }

    if(isset(
    $_POST['submit'])) {
        
    $miaC = new InputCheck();
        
    $miaC->c[] = "PrimoInput";
        
    $miaC->preleva();
        if(
    $miaC->Controllo()) {
        echo 
    'Campi prelevati con successo';
        echo 
    $miaC->valori['PrimoInput'];
        } else {
        echo 
    'Errore';
        }
    }
    ?>
    <form action="" method="POST">
    <input type="text" name="PrimoInput" />
    <input type="submit" name="submit" value="Submit" /></form>
    Devo usare $this anche per $campo (in: $contenuto = (Clear($_POST[$campo])!='') ? (Clear($_POST[$campo])) : false; ) e per $value nel foreach? Con un print_r($miaC->valori) appare un array vuoto
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da 0-c00l
    Ok, ho aggiornato il codice nel seguente modo, però non mi stampa il contenuto dell' input (tramite $key dell' array $valori):

    Codice PHP:
    <?php
    function Clear($var) {
            return 
    htmlspecialchars(addslashes(trim($var)));
    }
    class 
    InputCheck {
        public 
    $c = array();
        public 
    $valori = array();
        public function 
    preleva() {
            foreach(
    $this->as $campo) {
                
    $contenuto = (Clear($_POST[$campo])!='') ? (Clear($_POST[$campo])) : false;
                
    $valori[$campo] = $this->contenuto
            }
        }
        public function 
    Controllo() {
            
    $err 0;
            foreach(
    $this->valori as $key => $value) {
                if(empty(
    $value)) {
                    
    $err++;
                }
            }
            if(
    $err 0) {
                return 
    false;
            } else {
                return 
    true;
            }
        }
    }

    if(isset(
    $_POST['submit'])) {
        
    $miaC = new InputCheck();
        
    $miaC->c[] = "PrimoInput";
        
    $miaC->preleva();
        if(
    $miaC->Controllo()) {
        echo 
    'Campi prelevati con successo';
        echo 
    $miaC->valori['PrimoInput'];
        } else {
        echo 
    'Errore';
        }
    }
    ?>
    <form action="" method="POST">
    <input type="text" name="PrimoInput" />
    <input type="submit" name="submit" value="Submit" /></form>
    Devo usare $this anche per $campo (in: $contenuto = (Clear($_POST[$campo])!='') ? (Clear($_POST[$campo])) : false; ) e per $value nel foreach? Con un print_r($miaC->valori) appare un array vuoto
    No, devi usarlo qui $this, $this->valori[$campo] = $contenuto; sennò non viene
    memorizzato nell'oggetto ma in un'altra variabile creata nella funzione

  6. #6
    Adottare il paradigma OOP non significa semplicemente racchiudere il codice in metodi e raggruppare tutti i metodi in una classe
    Ti consiglio di continuare ad utilizzare la programmazione procedurale
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da satifal
    Adottare il paradigma OOP non significa semplicemente racchiudere il codice in metodi e raggruppare tutti i metodi in una classe
    Ti consiglio di continuare ad utilizzare la programmazione procedurale
    In questo caso faceva prima con qualche global e 2 funzioni normali

  8. #8
    Più che altro è un semplice esercizio per avvicinarmi alle classi, non tanto un qualcosa perché mi serve. Di solito utilizzo tutte function
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

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.