Tengo de que la gente puede agregar los nombres de los equipos a mi tabla MySQL. Ahora quiero editar. He intentado con varios tutoriales pero no puedo averiguar. Me gusta saber lo que estoy haciendo mal.

Este es mi admin.php:

<?php
    $username = "root";
    $password = "";
    $hostname = "localhost";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Could not connect to database");

    $selected = mysql_select_db("login", $dbhandle);



        if(isset($_POST['team'])){
            $team = $_POST['team'];
            $ID = $_POST['id'];         

            $query = mysql_query("SELECT * FROM e2teams WHERE Team='$team' and ID='$ID'");
            if(mysql_num_rows($query) > 0 ) { //check if there is already an entry for that username
                echo "$team bestaat al!";
            }
            else{
                mysql_query("INSERT INTO e2teams (Team) VALUES ('$team')");
                header("location:e2admin.php");
            }
    }

    mysql_close();
?>

<html>
    <body>
        <h1>Add teams</h1>
            <form action="e2admin.php" method="POST">
                <input type="text" name="team" placeholder="Team naam" /><br>
                <input type="submit" value="Toevoegen" />
            </form>

            <?php
                $table = "e2teams";
                $sql = "SELECT * FROM e2teams";
                $result = mysql_query($sql, $dbhandle);
                if(mysql_num_rows($result) > 0){
                    while($row = mysql_fetch_array($result)) {
                        echo $row['Team']. "<a href='edit.php?edit=$row[1]'>Bewerk</a><br>";
                    }
                }
            ?>
    </body>
</html>

El complemento a los equipos de obras. pero el botón de edición todavía no funciona. Si hago clic en editar voy a la edit.php la página; aquí quiero agregar el nuevo nombre y la necesidad de que el Equipo de cambio en el MySQL fila.

Este es mi edit.php:

<?php
    $username = "root";
    $password = "";
    $hostname = "localhost";

    $dbhandle = mysql_connect($hostname, $username, $password) or die("Could not connect to database");

    $selected = mysql_select_db("login", $dbhandle);

    if( isset($_GET['edit'])) {
        $id = $_GET['edit'];
        $res = mysql_query("SELECT * FROM e2teams");
        $row= mysql_fetch_array($res);
    }

    if (isset ($_POST['nieuwenaam'])) {
        $newname = $_POST['nieuwenaam'];
        $id = $_POST['id'];
        $sql = "UPDATE e2teams SET Team='$newname' WHERE id='$id'";
        $res = mysql_query($sql) or die ("Fout bij updaten".mysql_error());
        echo "<meta http-equiv='refresh' content='0;url=edit.php'>";
    }
?>      


<html>
<body>       


            <form action="edit.php" method="POST">
                <input type="text" name="nieuwenaam" placeholer="test" /><br>
                <input type="hidden" name="id" placeholder="idnaam" value"s" /><br>
                <input type="submit" value="Update" />
            </form>
</body>
</html>

También me gustaría saber cómo eliminar los nombres de los equipos, pero esto es tal vez para la siguiente pregunta.

  • Usted puede elaborar en doesn't work? ¿Recibe algún tipo de mensaje de error, o no pasa nada? Por favor, compartir más detalles de tu problema.
  • Si usted está luchando para encontrar la causa del problema, ya que no hay errores están sucediendo, palo de un montón de ecos de las variables en el código, para asegurarse de que todo está llegando a través de como se debe.
  • Su placeholer atributo se escribe erróneamente, por cierto.
  • Tenga en cuenta que el código de arriba es vulnerable a ataques de inyección de SQL. También la mysql extensión se ha depreciado; usted debe usar PDO o mysqli en su lugar.
  • No sé cómo usar PDO o mysqli? es fácil hacer esto en PDO o mysqli
InformationsquelleAutor AlexanderFT | 2014-03-05

3 Comentarios

  1. 2

    Esto debería funcionar:

    <?php
    $username = "root";
    $password = "";
    $hostname = "localhost";
    
    $dbhandle = mysql_connect($hostname, $username, $password) or die("Could not connect to database");
    
    $selected = mysql_select_db("login", $dbhandle);
    
    $id = intval($_GET['edit']);
    if($id > 0) {
        $res = mysql_query("SELECT * FROM e2teams WHERE `id` = $id");
        $row= mysql_fetch_array($res);
    
        $newname = mysql_real_escape_string($_POST['nieuwenaam']);
        if (!empty($newname)) {
            $sql = "UPDATE e2teams SET Team='$newname' WHERE id=$id";
            $res = mysql_query($sql) or die ("Fout bij updaten".mysql_error());
            echo "<meta http-equiv='refresh' content='0;url=edit.php?edit=$id'>";
        }
    
    }
    ?>
    
    
    <form action="edit.php?edit=<?= $id; ?>" method="POST">
    <input type="text" name="nieuwenaam" placeholer="test" /><br>
    <input type="submit" value="Update" />
    </form>
    </body>
    </html>

    Editar: También, acerca de la intval() y mysql_real_escape_string(). Ya que estaban usando $_GET sin ningún tipo de filtro, he añadido intval() función en él. Sin filtrado $id que podría haber sido fácilmente atacados por algún tipo de, por ejemplo, la Inyección de SQL. Mismo con mysql_real_escape_string(). Usted puede leer acerca de esta función de filtro en el manual de php. Para estudio adicional recomiendo cambiar las funciones mysql_ PDO o mysqli declaraciones preparadas. Feliz codificación!

    • Valdría la pena mencionar explícitamente en este tipo de respuesta a los pasos que hemos tomado para proteger contra ataques de inyección SQL, especialmente desde que el OP es vulnerable. Cosas buenas, aunque!
    • Hola, gracias por su reacción. Pero si hago esto todavía no funciona. No tengo un error, pero si hago clic en el botón actualizar, se actualiza la página para: ejemplo: editar.php?edit=0. Pero el nombre no cambia
    • Bien. Esto se debe esta línea en el admin.php: echo $row['Team']. "<a href='edit.php?edit=$row[1]'>Bewerk</a><br>"; asegúrese de cambiar $row[1] a $row['ID'];
    • No puedo cambiar a $fila[‘ID’] tengo un error de sintaxis, entonces este: Parse error: syntax error inesperado » (T_ENCAPSED_AND_WHITESPACE), esperando identificador (T_STRING) o variable (T_VARIABLE) o número (T_NUM_STRING) en C:\xampp\htdocs\mysqllogin\admin\E2\e2admin.php en la línea 43 Esto es lo que tengo ahora admin.php: echo $fila [«Equipo»]. «<a href=’editar.php?edit=$fila[‘ID’]>Bewerk</a>
    • Ah, sí, la sintaxis. echo $row['Team']. '<a href="edit.php?edit='.$row['ID'].'">Bewerk</a><br>'; También, leer mi nota como ya he editado el post.
    • La función de edición de obras que ahora puedo editar el nombre del equipo! sólo que todavía da un error en edit.php: Notice: Undefined index: nieuwenaam en C:\xampp\htdocs\mysqllogin\admin\E2\edit.php en la línea 15 no entiendo este error porque nieuwenaam es sólo el nombre de mi rellene el formulario
    • Solo es un aviso. Debido a su $_POST[‘nieuwenaam’] se inicializa sólo cuando debe enviar el POST. Usted puede utilizar error_reporting(E_ALL ^ E_NOTICE); en el principio de la edit.php archivo después de <?php para ocultarlo. También, marque la respuesta correcta para ayudar a los demás también. Gracias!
    • Gracias por su ayuda!

  2. 0

    Revise su formulario de edición. Tienes que poner el valor del atributo como este valor=»s» como no hay valor». Yo creo que eso es todo.

  3. 0

    Asumo que cuando se haga clic en el enlace editar es pasar el id de la equipo por lo que el edit.php select debería ser algo así como:

    $id = (int)$_GET['edit'];
    if (!empty($id))
    {
        $sql = "SELECT * FROM e2teams WHERE id='$id'";
        $result = mysqli_query($sql);
        $row = mysql_fetch_assoc($res);
    }
    //... keep the rest of code as is

    Ahora lo que necesita para cambiar el formulario HTML para:

    <form action="edit.php?edit=<?php echo $row['id'] ?>" method="POST">
       <input type="text" name="nieuwenaam" placeholer="test" value="<?php echo $row['Team'] ?>" /><br>
       <input type="hidden" name="id" placeholder="idnaam" value"<?php echo $row['id'] ?>" /><br>
       <input type="submit" value="Update" />
    </form>
    • Hola he usado el código. Pero cuando llego en la edit.php; valor=»<?php echo $fila [«Equipo»] ? >» /> siempre muestra el primer nombre en mi mesa no es el nombre que se hace clic sobre. también cuando hago clic en Actualizar este error aparece: Notice: Undefined index: editar en C:\xampp\htdocs\mysqllogin\admin\E2\edit.php en la línea 10 y también este error se muestra debajo: Notice: Undefined variable: fila en C:\xampp\htdocs\mysqllogin\admin\E2\edit.php en la línea 40 » />_
    • Con Base en el error significa que no están pasando el id del equipo a través de la cadena de consulta. var_dump su $_GET y ver lo que el nombre de índice se utiliza para que o asegúrese de que en el <a href="edit.php?edit=<?php echo $row[1]">something</a> tiene un valor

Dejar respuesta

Please enter your comment!
Please enter your name here