come usare il metodo GET

ymod

Utente Attivo
14 Dic 2020
21
0
1
Sto creando un blog, dove all'interno l'utente può creare dei post. Nel mio database (phpmyadmin), io ho una tabella chiamata POST dove ho l'attributo IDpost. Nella pagina blog.php creo il post e lo visualizzo. Quello che vorrei fare è dare la possibilità all'utente di eliminare il post. Per questo mi servirebbe passare con una GET l'IDpost dalla pagina blog.php alla pagina eliminapost.php per poter fare una query DELETE FROM post WHERE IDpost = '$idPost'.

Come si usa la GET?
 
nel caso dell'esempio, tra le parentesi quadre devi mettere "colore", e il valore di $idpos diventerà "verde"
 
nel caso dell'esempio, tra le parentesi quadre devi mettere "colore", e il valore di $idpos diventerà "verde"
però forse non mi sono spiegata bene io. Io dovrei fare una DELETE del post. DELETE FROM post WHERE IDpost = $idpost'..questo valore devo passarlo per GET e non so come fare. Perchè io creo il post nella pagina blog.php, e poi lo elimino nella pagina eliminapost.php. Devo passare il valore dell ID
 
Nella pagina blog.php metti un link a eliminapost.php?id=$idpost, poi nella pagina eliminapost lo recuperi così:
PHP:
$idpost = $_GET['id'];
$query = "DELETE FROM ...";
...
 
Nella pagina blog.php metti un link a eliminapost.php?id=$idpost, poi nella pagina eliminapost lo recuperi così:
PHP:
$idpost = $_GET['id'];
$query = "DELETE FROM ...";
...
però io l'ID non ce l'ho nel mio codice html, ma è solo un attributo nel database. Quindi nel link quando faccio eliminapost.php?IDpost = $idPost, non prende nessuna variabile. Come faccio?
 
Quindi il problema non è su come usare GET, ma su come prendere un dato dal database?
Ora si, ho anche questo problema. Perchè ho provato a farlo cosi:
nella pagina blog.php io ho il pulsante elimina post, e l'ho scritto così
HTML:
<a><?php  echo "<a href=\"eliminapost.php?IDpost=$idPost\">";?> <input type="submit" name = "eliminapost" id = "eliminapost" value="Elimina Post"></a>

dove IDpost è il nome dell'attributo all'interno del database, e $idPost è il nome che voglio dare io alla variabile. Poi nella pagina eliminapost.php ho invece inserito

PHP:
$idPost=$_GET["IDpost"];
$query = "DELETE FROM post WHERE IDpost = '$idPost'";

Non mi da nessun errore, ma non mi elimina niente.
 
Il link ti indirizza all'url giusto? Cioè al posto di $idPost nella barra dell'url vedi l'id giusto?
 
Il link ti indirizza all'url giusto? Cioè al posto di $idPost nella barra dell'url vedi l'id giusto?
Si, va al link giusto. In questa pagina eliminapost c'è scritto "sei sicuro di voler eliminare il post?" e poi ci sono due pulsanti 'ok' e 'annulla'.
Ho notato che, se elimino il primo post che vedo, me lo elimina correttamente. Se invece voglio eliminare gli altri post che non sono i primi, allora non mi elimina niente.
 
<a><?php echo "<a href=\"eliminapost.php?IDpost=$idPost\">";?> <input type="submit" name = "eliminapost" id = "eliminapost" value="Elimina Post"></a>
Qua è sbagliato... non devi mettere un link con dentro un input submit (e tra l'altro il link php non ha neanche il tag di chiusura). Devi cambiare così:
PHP:
<?php echo "<a href=\"eliminapost.php?IDpost=$idPost\">Elimina</a>";?>
Tutto il resto cancellalo
 
Qua è sbagliato... non devi mettere un link con dentro un input submit (e tra l'altro il link php non ha neanche il tag di chiusura). Devi cambiare così:
PHP:
<?php echo "<a href=\"eliminapost.php?IDpost=$idPost\">Elimina</a>";?>
Tutto il resto cancellalo
ho sostituito il pulsante elimina con quello che mi hai scritto tu, ma non è cambiato niente. Non credo sia questo il problema.
 
Manda il codice completo.
PHP:
<?php
session_start();
include("Connessione.php");

if (isset ($_SESSION['loggato'])){
    $nomeutente= $_SESSION['loggato'];
    

    if(isset($_GET["blog"])){
    $blog = $_GET['blog'];
    setcookie ("cookieblog", $blog, time()+3600, "/");
    } else {
        $blog = $_COOKIE["cookieblog"];
    }
    
    $query = "SELECT * FROM post WHERE titoloBlog = '$blog'";
    $result = mysqli_query($mysqli, $query);
    
    $row= mysqli_fetch_assoc($result);
    $titoloblog = $row["titoloBlog"];
    $titolopost=$row["titoloPost"];
    $testopost=$row["testo"];
    $datapost=$row["data"];
    $orapost=$row["ora"];
    
}

if (isset($_POST["ok"])){
    
    $idPost=$_GET["IDpost"];
    $query = "DELETE FROM post WHERE IDpost = '$idPost' AND titoloPost = '$titolopost' AND testo = '$testopost' AND data = '$datapost' AND ora = '$orapost'";
           $result = mysqli_query($mysqli, $query);
            
            if(!$result){
                echo "Errore nella query $query: ", mysqli_error($mysqli);
            } else {
                header("Location: blog.php?blog=$titoloblog");
            }
  
}

if (isset($_POST["annulla"])){
    header("Location: blog.php?blog=$titoloblog");
    
}

    
?>
 


<!DOCTYPE html>
<html>
 <head>
  <meta charset = "utf-8">
  <title> Elimina Post </title>
  <link rel = "stylesheet" href = "blog.css">
  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
  </script>
 </head>
 
 <body>
 
  <h3 id = "sicuro"> Sei sicuro di eliminare il post? </h3>
  <form method = "post">
  <input type = "submit" id = "ok" name = "ok" value = "Ok" />
  <input type = "submit" id = "annulla" name = "annulla" value = "Annulla" />
  </form>
 </body>
</html>

 
<?php
mysqli_close($mysqli);
?>
 
La logica di sto codice mi convince poco.. Comunque manda anche blog.php così magari capisco meglio
 
La logica di sto codice mi convince poco.. Comunque manda anche blog.php così magari capisco meglio
PHP:
<?php
session_start();
include("Connessione.php");

    if (isset ($_SESSION['loggato'])){
    $nomeutente = $_SESSION['loggato'];
    }
    
    if(isset($_GET["blog"])){
    $blog = $_GET['blog'];
    setcookie ("cookieblog", $blog, time()+3600, "/");
    } else {
        $blog = $_COOKIE["cookieblog"];
    }
    
    $error="";
    
    $query = "SELECT * FROM `blog` WHERE titoloBlog = '$blog'";
    $result = mysqli_query($mysqli, $query);
    
    $row= mysqli_fetch_assoc($result);
    $autoreblog = $row["nomeUtente"];
    
    if(isset ($_POST['creapost'])){
    $uploadDir = __DIR__.'\immagini';
    
    $allowedextension = array("png", "jpg", "jpeg", "gif" );
        if  (!empty($_FILES)){
            foreach ($_FILES as $file) {
                if (UPLOAD_ERR_OK === $file['error']) {
                    $fileName = basename($blog.$file['name']);
                    // prendo l'estensione del file
                    $fileextension = pathinfo($fileName, PATHINFO_EXTENSION);
                    if (! in_array($fileextension, $allowedextension)) {
                        $error= "il file che hai caricato non ha un' estensione valida!<br>Per favore, seleziona un immagine in formato png, jpg, jpeg o una gif"  ;
                        $fileName= "";
                    }
                    else{
                        move_uploaded_file($file['tmp_name'], $uploadDir.DIRECTORY_SEPARATOR.$fileName);
                    }
                }
                else{
                    if ($file['error']==4){
                        $fileName= NULL;
                    }
                    else{
                    $error=" errore nel caricamento del file";
                    }
                }
            }
        }
        else{
            $fileName= NULL;
        }
    
    if (($fileName != "") or (is_null($fileName))){
    $titolopost = $_POST['titolopost'];
    $testo = $_POST['areapost'];
    $img = $_POST['img'];
    
    
    $query2 = "INSERT INTO post(titoloPost,data,ora,testo,nomeUtente,titoloBlog,img) VALUES ('$titolopost', SYSDATE(), NOW(), '$testo',(SELECT nomeUtente FROM utentiregistrati WHERE nomeUtente = '$nomeutente'),(SELECT titoloBlog FROM blog WHERE titoloBlog = '$blog'),'$img')";
    $result2 = mysqli_query($mysqli, $query2);
    
    if(!$result2){
    echo 'errore';
    } 
    }
}
    
    if(isset($_COOKIE['cookiesfondo'])) {
    $sfondo = $_COOKIE['cookiesfondo'];

    switch ($sfondo) {
        case '1':
            $class = 'uno';
            break;
        case '2':
            $class = 'due';
            break;
        case '3':
            $class = 'tre';
            break;
        case '4':
            $class = 'quattro';
            break;
        default:
            $class = 'default';
            break;
    }
}
    
?>

<!DOCTYPE html>
<html>
 <head>
 
  <meta charset = "utf-8">
  <title> Blog </title>
  <link rel = "stylesheet" href = "blog.css">
  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
  </script>
    
<style type="text/css">
  
    .uno {
        background-color: red;
    }
    .due {
        background-color: yellow;
    }

    .tre {
        background-color: white;
    }

    .quattro {
        background-color: black;
    }

    .default {
        background-color: pink;
    }


</style>   
 </head>
 
 <script>
 
     <?php if ($autoreblog == $nomeutente){ ?>
    
     $(document).ready(function(){
         $("#post").show();
     });
     <?php } ?>
          
    
 </script>
 
 <body class="<?php echo $class; ?>">
 <input type="checkbox" id="nav-toggle" hidden />
        <nav class="nav">
            <label for="nav-toggle" class="nav-toggle" onclick></label>
            <ul>
                <li class = "" ><a href="home.html"> Home </a> </li>
                <li class ="" ><a href="tuttiiblog.php">Tutti i blog</a> </li>
            </ul>
        </nav>
 
    <p id = "nomeutente"> Autore Blog: <?php echo $autoreblog ?></p>
    <h1 style = "color:black"> <?php echo $blog ?> </h1>
    
    
    <form method = "post" action = "blog.php">
        <div id = "post" style = "display:none">
            <input type = "text" placeholder="Scegli un titolo" id = "titolopost" name = "titolopost"/> <br />
            
            <label for "immagine">Inserisci un'immagine (GIF, JPEG, JPG, PNG): </label>
                <input type="file" value="scegli immagine" name="img" />
        
            <input type = "text" placeholder="Scrivi un post" id = "areapost" name = "areapost"/> <br />
            <br />
            
            <input type = "submit" value = "Crea Post" id = "creapost" name = "creapost" />
        
        </div>
    </form>
    <?php

    $query3 = "SELECT * FROM post WHERE titoloBlog = '$blog'";
    $result3 = mysqli_query($mysqli, $query3);
    
    while($row3= mysqli_fetch_assoc($result3)){
    $postdititolo = $row3["titoloPost"];
    $testopost = $row3["testo"];
    $imgpost = $row3["img"];
    $datapost = $row3["data"];
    $orapost = $row3["ora"];
    $idPost = $row3["IDpost"];

    ?>
    
    <div id ='visualizzapost'>
    
        <p id = "dataora"> <?php echo $datapost ?> - <?php echo $orapost?> </p>
        <h3 id = "Tpost"> <?php echo $postdititolo ?> </h3>
        
        <?php
            if (empty($imgpost)){ ?>
                <script>
                    $(document).ready(function(){
                        $('#img<?php echo $idPost; ?>').hide();
                    });
                </script>
            <?php } else{ ?>
                <script>
                     $(document).ready(function(){
                        $('#img<?php echo $idPost; ?>').show();
                    });
                </script>
            <?php }; ?>
            <img  id="img<?php echo $idPost; ?>" src="immagini/<?php echo $imgpost ?>" style="display:block; margin:10% auto; text-align:center;  width:40%; ">
            </img>
            
        
        <p id = "Testopost"> <?php echo $testopost ?> </p>
        <a><?php  echo "<a href=\"modificapost.php\">";?> <input type="submit" name = "modificapost" id = "modificapost" value="Modifica Post"></a>&ensp;
        <!--<a><?php  echo "<a href=\"eliminapost.php?IDpost=$idPost\">";?> <input type="submit" name = "eliminapost" id = "eliminapost" value="Elimina Post"></a> -->
        
        <?php echo "<a href=\"eliminapost.php?IDpost=$idPost\">Elimina</a>";?>
        
    
    </div>
    <?php }    ?>
    


    <p><a href="personalizzablog.php">Personalizza Blog</a> </p>
 </body>
</html>


<?php
mysqli_close($mysqli);

?>
 
ho notato, però, che usi ancora le veccihie, e oramai deprecate, funzioni mysql; ti consiglio invece di passare alle nuove e più performanti mysqli, quella che ti ho scritto l'ho 'estrapolata' da una funzione mysqli. Io la uso abitualmente ed ha sempre funzionato. Buon Natale
 
Ultima modifica:

Discussioni simili