mapa3n Inviato 18 Gennaio 2016 Segnala Condividi Inviato 18 Gennaio 2016 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 Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.