[PHP] Creare un menu a tendina con pdo

Discussione in 'PHP' iniziata da Max61, 25 Gennaio 2019.

  1. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Salve, andando avanti nella conversione da PHP 5 A PHP 7, mi sorgono altri problemi che da solo anche con esempi presi in rete non ce la faccio.
    PHP:
    $sql "SELECT *

    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;
    $result mysql_query($sql);

    echo 
    "<select name='Anno'>";
    while (
    $row mysql_fetch_array($result)) {
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>";
    Ho provato questo codice ma da questo errore
    Fatal error: Uncaught Error: Call to undefined function mysql_query()
    in questa riga
    PHP:
    $result mysql_query($sql);
    come posso risolvere?
    Grazie
    Max61
     
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    prova così
    PHP:
    $sql "SELECT *
    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;

    $result $db->query($sql)->fetchAll();

    echo 
    "<select name='Anno'>";
    while (
    $result as $row)
    {
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>"
     
  3. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Provato...mi da questo errore
    Parse error: syntax error, unexpected 'as' (T_AS)
    in questa riga
    PHP:
    while ($result as $row)
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    La sintassi da utilizzare con "as" è foreach o foreachelse , quest'ultima è disponibile solo se utilizzi un template engine.
    In definitiva non si usa il while in questo modo!
    Il while si aspetta un confronto, non assegna nulla nè per riferimento nè per valore!
    PHP:
    while (expr):
       
    statement
       
    ...
    endwhile;
    http://php.net/manual/en/control-structures.while.php

    Sintassi corretta con l'utilizzo di "as"
    PHP:
    foreach($result as row){
    }
    Altra sintassi
    PHP:
    for($i=0;$i<count($result);$i++){
        echo 
    $result[$i]['Dato'];
    }
    Sintassi con while
    PHP:
    $i=0;
    while(
    $i<count($result)){

    echo 
    $result[$i]['Dato'];
    $i++;
    }
    Se vuoi la ricorsione:
    PHP:
    $test=range('a','z');
    function 
    print_my_data(&$i,$data){
       if((
    $i<=>count($data)-1)<=0){
          echo 
    $data[$i];
          
    $i++;
          return 
    print_my_data($i,$data);
       }
    }
    $i=0;
    print_my_data($i,$test);
     
    Ultima modifica: 25 Gennaio 2019
  5. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Ciao, ho provato ma mi da errore sulle parentesi, ho provato a seguirlo ma... niente
    PHP:
    $sql "SELECT *
    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;

    $result $db->query($sql)->fetchAll();

    echo 
    "<select name='Anno'>";
    foreach(
    $result as row){
    }
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>"
    errore qua
    PHP:
    foreach($result as row){
    Parse error: syntax error, unexpected ')', expecting '[' in
     
  6. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    hai chiuso prima!!!!!!!!!
    Aperta { metti codice chiudi }..
    PHP:
    foreach($result as row){
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
     
  7. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    oK..questa è la query completa
    PHP:
    $sql "SELECT *
    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;

    $result $db->query($sql)->fetchAll();

    echo 
    "<select name='Anno'>";
    foreach(
    $result as row){
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    stesso riga, stessa errore
    Parse error: syntax error, unexpected ')', expecting '[' in
    dove sbaglio?
     
  8. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Sorry colpa mia... copiando e incollando mi sono perso un pezzo....
    PHP:
    //qui manca l'ass variabile "$row"
    foreach($result as $row){
        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
     
  9. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Ho provato così, ma ora da errore alla riga 245
    PHP:
    $sql "SELECT *
    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;

    $result $db->query($sql)->fetchAll();

    echo 
    "<select name='Anno'>";
    foreach(
    $result as $row){

        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>";
    riga 245
    PHP:
    $result $db->query($sql)->fetchAll();
    Fatal error: Uncaught Error: Call to a member function query()
     
  10. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    PHP-MYSQL è installato e/o abilitato?
    1-Server di sviluppo?
    2-Software?
     
  11. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    installato e abilitato, la versione è:
    • Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1
     
  12. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    PHP:
    $db=new mysqli($host,$user,$pass,$database);

    $db->query(......etc)
     
  13. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    query completa
    PHP:
    require('Connessione.php');

        try {
      
    // stringa di connessione al DBMS
      
    $connessione = new PDO("mysql:host=$host;dbname=$db"$user$password);
      
    // imposto dell'attributo necessario per ottenere il report degli errori
      
    $connessione->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
      
    // selezione e visualizzazione dei dati estratti
      
    $sql "SELECT *
    FROM tblanagrafica
    WHERE Anno <> 0
    GROUP BY Anno
    ORDER BY Anno"
    ;

    $result $db->query($sql)->fetchAll();

    echo 
    "<select name='Anno'>";
    foreach(
    $result as $row){

        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>";

      
    // chiusura della connessione
      
    $connessione null;
    }
    catch(
    PDOException $e)
    {
      
    // notifica in caso di errore nel tentativo di connessione
      
    echo $e->getMessage();
    }
     
  14. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    PHP:
    $result=$connessione->query($sql)->fatchAll()
    $db non è definita.... devi usare $connessione!!!!!
     
  15. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    fatto, adessso
    Fatal error: Uncaught Error: Call to undefined method PDOStatement::fatchAll()
     
  16. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    FUNZIONAAAAAAA
    GRAZIEEEEEEEEE
     
  17. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    scusate, ma se io volessi un valore vuoto nella tendina tipo
    echo "<option value =''>seleziona</option>";//valore vuoto
    prima dei dati?
     
  18. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    882
    Mi Piace Ricevuti:
    49
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    PHP:
    echo "<select name='Anno'>";
    echo 
    "<option value=''>Seleziona Anno</option>";
    foreach(
    $result as $row){

        echo 
    "<option value='" $row['Anno'] ."'>" $row['Anno'] ."</option>";
    }
    echo 
    "</select>";
     
  19. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    593
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    PERFETTO!!!
     
Sto caricando...

Condividi questa Pagina