Tengo problemas para recibir el valor $ _GET, lo necesito como ID para actualizar mi tabla. Estoy usando <a href='includes/edit_section.php?id=$id'>Change</a>. La variable $ id se obtiene correctamente y funciona, cuando hago clic en este enlace (porque está en la tabla) muestra el valor correcto. Pero el problema está en la siguiente parte, cuando lo recibo con $ _GET. Intenté hacer variable ($ id = $ _GET ['id']) pero no hay ningún cambio. Cuando ejecuto esto, nada se actualiza, cuando reemplazo $ _GET con número funciona perfectamente.

Mi mesa se ve así Table(ID,Title,Paragraph,Image)

Este es mi código:

<?php

if(isset($_POST['submit'])) {
    $title  = $_POST['title'];
    $paragraph  = $_POST['paragraph'];

    $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$_GET['id']}' ";
    $c= mysqli_query($connection, $query);
}

Esta es mi forma

<form action="edit_section.php" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">
        <label for="paragraph">Paragraph</label>
        <input type="text" class="form-control" name="paragraph">
     </div>

    <div class="form-group">
         <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
     </div>
</form>
0
Paxon 8 sep. 2018 a las 22:43

4 respuestas

La mejor respuesta

El problema es que necesita enviar el id cuando envía el formulario, una forma tradicional de hacerlo es utilizando una entrada de tipo oculto, por ejemplo <input type="hidden" name="id" value="<?= $id ?>"> Y, por supuesto, es necesario pasar la identificación a la vista donde se representa el formulario

Entonces podrías probar esto

<form action="edit_section.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="id" value="<?= $id ?>">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">
     </div>

     <div class="form-group">
         <label for="paragraph">Paragraph</label>
         <input type="text" class="form-control" name="paragraph">
     </div>

    <div class="form-group">
         <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
     </div>
</form>

Y al procesar el formulario

<?php

if(isset($_POST['submit'])) {
    $id = $_POST['id'];
    $title  = $_POST['title'];
    $paragraph  = $_POST['paragraph'];

    $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$id}' ";
    $c= mysqli_query($connection, $query);
}

Separé en su respectivo grupo de formas las entradas de título y párrafo

0
user615274 8 sep. 2018 a las 20:12

En la parte superior, agregue

 $id = $_GET['id'];

Entonces

Básicamente el problema está en

    <form action="edit_section.php" 

Debe ser

    <form action="edit_section.php?id=<?php echo $id;?>"

Además, en su consulta de actualización, el ID debe ser ID (mayúscula) ... también verifique si hay otros nombres de columna para distinguir mayúsculas y minúsculas

0
Dr J Manish 8 sep. 2018 a las 19:48

Agregue "id" como una variable oculta en su formulario.

Editado: se perdió una comilla doble adjunta para el valor 'id' oculto en el formulario.

<form action="edit_section.php" method="post" enctype="multipart/form-data">  
    <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">  
                                        <div class="form-group">
                                            <label for="title">Title</label>
                                            <input type="text" class="form-control" name="title">
                                            <label for="paragraph">Paragraph</label>
                                            <input type="text" class="form-control" name="paragraph">
                                         </div>

                                        <div class="form-group">
                                             <input class="btn btn-primary" type="submit" name="submit" value="cHANGE">
                                         </div>
                                    </form>

Realice los siguientes cambios en su script PHP

<?php
if(isset($_POST['submit'])) {
    $title  = $_POST['title'];
    $id = $_POST['id'];
    $paragraph  = $_POST['paragraph'];

      $query = "UPDATE table SET title = '{$title}', paragraph = '{$paragraph}' WHERE id = '{$id}' ";    

      $c= mysqli_query($connection, $query);  
   }  
   ?>
0
Venkat D 8 sep. 2018 a las 20:23

Cambiar la acción del formulario en HTML como este

<form action="edit_section.php?<?=$_GET['id']?>" method="post" enctype="multipart/form-data">   
0
ham999dy 8 sep. 2018 a las 19:50