Vai al contenuto

[Risolto] Script Php E Mysql


mapa3n

Messaggi raccomandati

Ho creato uno script PHP che dovrebbe estrarre tutti i prefissi telefonici mondiali recuperandoli da una tabella MySQL e inserirli in un tag option che poi inserisco dinamicamente in una pagina HTML (tra i tag select) tramite <?php echo $option ?>: il problema è che, quando visualizzo la pagina HTML, tra i tag option non visualizzo tutti i record presenti nella tabella MySQL (debuggando l'array $cac, proveniente da database.php, contiene solo 111 array mentre la tabella MySQL contiene 222 record).

Posto il codice del file create.php:

<?php    require 'database.php';
    $sql = "SELECT * FROM dialing_codes";
    $execute = array();
    $fetch = FALSE;
    $fetch_array = TRUE;
    $exe = new Database();
    $exe->crud($sql, $execute, $fetch, $fetch_array);
    $option = NULL;
    for($i = 0; $i < count($cac); $i++) {
       $codes = $cac[$i]['Code'];
       $countries = $cac[$i]['Country'];
       $option .= "<option value=\"$codes\">$countries</option>";
    }

    if (!empty($_POST)) {
        // keep track validation errors
        $nameError = null;
        $emailError = null;
        $mobileError = null;

        // keep track post values
        $name = htmlentities($_POST['name']);
        $email = htmlentities($_POST['email']);
        $prefix = $_POST['prefix'];
        $mobile = htmlentities($_POST['mobile']);

        // validate input
        $valid = true;
        if (empty($name)) {
            $nameError = 'Please enter Name';
            $valid = false;
        }

        if (empty($email)) {
            $emailError = 'Please enter Email Address';
            $valid = false;
        } else if (!filter_var($email,FILTER_VALIDATE_EMAIL) ) {
            $emailError = 'Field contains a sintax error. Please enter a valid Email Address';
            $valid = false;
        }

        if (empty($mobile)) {
            $mobileError = 'Please enter Mobile Number';
            $valid = false;
        } else if (!ctype_digit($mobile)) {
                $mobileError = 'Field don\'t contains only nubers. Please enter a valid Mobile Number';
            $valid = false;
        }

        $prefixMobile = "$prefix$mobile";
        $sql = "SELECT * FROM php_crud_grid_db WHERE email = '".$email."' OR mobile = '".$prefixMobile."'";
        $execute = array();
        $fetch = TRUE;
        $exe = new Database();
        $exe->crud($sql, $execute, $fetch, FALSE);
        $e = $data['email'];
        $m = $data['mobile'];
        // insert data
        if ($valid) {
            if ($email != $e && $prefixMobile != $m) {
                $sql = "INSERT INTO php_crud_grid_db (name, email, mobile) values(?, ?, ?)";
                $execute = (array($name, $email, $prefixMobile));
                $exe = new Database();
                $exe->crud($sql, $execute, FALSE, FALSE);
                header("Location:grid.php");
            } else {
                echo '<script>alert("Email address and/or Mobile number already exist!")</script>';
            }
        }
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link   href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
</head>

<body>
    <div class="container">
                <div class="span10 offset1">
                    <div class="row">
                        <h3>Create a Customer</h3>
                    </div>
                    <form class="form-horizontal" action="create.php" method="post">
                       <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
                          <label class="control-label">Name</label>
                        <div class="controls">
                            <input name="name" type="text"  placeholder="Name" value="<?php echo !empty($name)?$name:'';?>">
                            <?php if (!empty($nameError)): ?>
                                <span class="help-inline"><?php echo $nameError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($emailError)?'error':'';?>">
                          <label class="control-label">Email Address</label>
                        <div class="controls">
                            <input name="email" type="text" placeholder="Email Address" value="<?php echo !empty($email)?$email:'';?>">
                            <?php if (!empty($emailError)): ?>
                                <span class="help-inline"><?php echo $emailError;?></span>
                            <?php endif;?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($mobileError)?'error':'';?>">
                          <label class="control-label">Mobile Number</label>
                        <div class="controls">
                            <select name="prefix">
                                <?php echo $option ?>
                            </select>
                            <input name="mobile" type="text"  placeholder="Mobile Number" value="<?php echo !empty($mobile)?$mobile:'';?>">
                            <?php if (!empty($mobileError)): ?>
                                <span class="help-inline"><?php echo $mobileError;?></span>
                            <?php endif;?>
                        </div>
                      </div>
                        <div class="form-actions">
                          <button type="submit" class="btn btn-success">Create</button>
                          <a class="btn" href="grid.php">Back</a>
                        </div>
                    </form>
                </div>
    </div>
</body>
</html>

e il file database.php:

<?phpclass Database
{
    private static $dbName = 'test' ;
    private static $dbHost = 'localhost' ;
    private static $dbUsername = 'root';
    private static $dbUserPassword = '';
    
    private static $cont  = null;
    
    public function __construct() {
        if (connection_status() != CONNECTION_NORMAL) {
            die('Init fuction is not allowed');
        }
    }
    
    public function connect()
    {
       // One connection through whole application
       if ( null == self::$cont )
       {    
        try
        {
          self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".
                  self::$dbName, self::$dbUsername, self::$dbUserPassword);
        }
        catch(PDOException $e)
        {
          die($e->getMessage());
        }
       }
       return self::$cont;
    }
    
    public function disconnect()
    {
        self::$cont = null;
    }

    public function crud/*execute*/($sql, $execute, $fetch, $fetch_array) {
        try {
        $exe = new Database();
        $pdo = $exe->connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql;
        $q = $pdo->prepare($sql);
        $q->execute($execute);
        if ($fetch) {
            global $data;
            $data = $q->fetch(PDO::FETCH_ASSOC);
        }
        if ($fetch_array) {
            global $cac;
            while ($data = $q->fetch(PDO::FETCH_ASSOC)) {
                $cac[] = $q->fetch(PDO::FETCH_ASSOC); //errore, corretto $cac[] = $data;
            }
        }
        $exe->disconnect();
        } catch (PDOException $e) {
            error_log($e->getMessage());
        }
    }
}
?>

Ps La seconda query del file create.php funziona correttamente...

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...