Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Script PHP con MySQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    249

    Script PHP con MySQL

    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:
    codice:
    <?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);
            /*$pdo = Database::connect();
            $sql = "SELECT * FROM php_crud_grid_db WHERE email = '".$email."' OR mobile = '".$mobile."'";
            $q = $pdo->prepare($sql);
            $q->execute();
            $data = $q->fetch(PDO::FETCH_ASSOC);
            Database::disconnect();*/
            $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);
                    /*$pdo = Database::connect();
                    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    $sql = "INSERT INTO php_crud_grid_db (name, email, mobile) values(?, ?, ?)";
                    $q = $pdo->prepare($sql);
                    $q->execute(array($name, $email, $mobile));
                    Database::disconnect();*/
                    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:
    codice:
    <?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);
                }
            }
            $exe->disconnect();
            } catch (PDOException $e) {
                error_log($e->getMessage());
            }
        }
    }
    ?>
    Ps La seconda query del file create.php funziona correttamente...
    Ultima modifica di mapa3n; 18-01-2016 a 13:19

  2. #2
    Codice PHP:
    ...
    while (
    $data $q->fetch(PDO::FETCH_ASSOC)) {
        
    $cac[] = $q->fetch(PDO::FETCH_ASSOC);
    }
    ... 

    Così perdi il primo risultato.

    P.S.
    Non capisco come mai implementi una classe per la connessione al DB e poi utilizzi quell'obbrobrio del global!!!
    Alla faccia della OOP
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    249
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Codice PHP:
    ...
    while (
    $data $q->fetch(PDO::FETCH_ASSOC)) {
        
    $cac[] = $q->fetch(PDO::FETCH_ASSOC);
    }
    ... 

    Così perdi il primo risultato.

    P.S.
    Non capisco come mai implementi una classe per la connessione al DB e poi utilizzi quell'obbrobrio del global!!!
    Alla faccia della OOP
    ...hai ragione quel global lo devo rimuovere...comunque grazie, ero convinto di aver scritto
    codice:
    ...
    while ($data = $q->fetch(PDO::FETCH_ASSOC)) {
        $cac[] = $data;
    }
    ...
    e con la fretta non riuscivo a trovare l'errore...

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.