Visualizzazione dei risultati da 1 a 4 su 4

Discussione: PHP/PDO

  1. #1

    PHP/PDO

    Ciao a tutti
    ho seguito questo tutorial
    https://www.html.it/pag/66042/dettag...-di-un-record/

    funziona tutto, ma quando arrivo a modificare o cambiare i dati del form la funzione salva non sembra funzionare.

    Questo è il mio esempio

    Codice PHP:

    $azioniAmmesse 
    = array('lista','dettaglio','form','salva','elimina');
    $azione='';
    if(isset(
    $_REQUEST['azione'])) {
        
    $azione $_REQUEST['azione'];
        if(!
    in_array($azione$azioniAmmesse)){
            
    $azione='';
        }
    }
    switch (
    $azione) {
        case 
    "salva":
            
    salva();
            
    $contenuto=lista();
            break;
        case 
    "elimina":
            
    elimina();
            
    $contenuto=lista();
            break;
        case 
    'lista':
            
    $contenuto lista();
            break;
        case 
    'form':
            
    $contenuto form();
            break;
        case 
    'dettaglio':
            
    $contenuto dettaglio();
            break;
        default:
            
    $contenuto lista();
            break;
        }

    function 
    form() {
        global 
    $conn;
        
    $id $_GET['id']; 
        
    $sql "SELECT * FROM siti1 WHERE id=:id";
        
    $stmt $conn->prepare($sql);
        
    $stmt->bindParam(':id',$id,PDO::PARAM_INT);
        
    $stmt->execute();
        
    $row $stmt->fetch(PDO::FETCH_ASSOC);
        
    $out='';
        
    $out.='<form name="info" action="?" method="post">';
        
    $out.='<input type="hidden" id="azione" name="azione" value="salva">';
        
    $out.='<input type="hidden" id="id" name="id" value="'.$id.'">';
        
    $out.='<label for="name">Nome</label><br  /><input type="text" id="name" name="name"  value="'.$row['name'].'"><br />';
        
    $out.='<label for="crono">Crono</label><br  /><input type="text" id="crono" name="crono"  value="'.$row['crono'].'"><br />';
        
    $out.='<label for="tipo">Tipo</label><br  /><input type="text" id="tipo" name="tipo"  value="'.$row['tipo'].'"><br />';
        
    $out.='<input type="submit" class="btn btn-success" value="salvataggio">' ;
        
    $out.='</form>';
        return(
    $out);
        }
        
        
        function 
    salva() {
        global 
    $conn;
        
    $id $_GET['id']; 
        
    $name=$_REQUEST["name"];
        
    $crono=$_REQUEST["crono"];
        
    $tipo=$_REQUEST["tipo"];
        if(
    $id==0){
            
    $sql 'INSERT INTO siti1 (name, crono, tipo) VALUES(:name, :crono, :tipo)';
            
    $stmt $conn->prepare($sql);
            
    $stmt->bindParam(':name',$name,PDO::PARAM_STR);
            
    $stmt->bindParam(':crono',$crono,PDO::PARAM_STR);
            
    $stmt->bindParam(':tipo',$tipo,PDO::PARAM_STR);
            
    $stmt->execute();
            }
        else{
            
    $sql='UPDATE siti1 SET name=:name, crono=:crono, tipo=:tipo WHERE id=:id LIMIT 1  ';
            
    $stmt $conn->prepare($sql);
            
    $stmt->bindParam(':id',$id,PDO::PARAM_INT);
            
    $stmt->bindParam(':name',$name,PDO::PARAM_STR);
            
    $stmt->bindParam(':crono',$crono,PDO::PARAM_STR);
            
    $stmt->bindParam(':tipo',$tipo,PDO::PARAM_STR);
            
    $stmt->execute();
            }
        } 

    Il form visualizza i campi del db, quindi la query funziona, ma se provo a modificare i dati non cambia e non aggiunge come se non leggesse la funzione salva.

    Grazie per eventuali suggerimenti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    perchè hai usato $_GET per ottenere l'id nella funzione salva
    dovresti usare $_POST o $_REQUEST come hai fatto per gli altri campi del form

  3. #3
    Un refuso...
    cmq ho messo il codice per vedere gli errori e quello che mi restituisce è questo

    Fatal error: Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7 ERRORE: errore di sintassi a o presso "LIMIT" LINE 1:

  4. #4
    ok togliendo LIMIT la query funziona.
    Lo stesso problema con LIMIT c'è anche nella funzione lista
    Ma da cosa dipende? COme DB uso Postgres.

    Aggiornamento -- Risolto
    Per chi avesse bisogno e usa Postgres, nel tutorial nella funzione lista la sintassi di LIMIT è questa LIMIT '.$perpage.' OFFSET '.$primo.'';
    Ultima modifica di Kassandraxxx; 02-02-2020 a 18:52

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.