Jump to content
danielfpaiva

Problema com um botão no meio do formulário

Recommended Posts

danielfpaiva

Boa noite,

Precisava da vossa ajuda para acerca de um problema que estou a ter com a função funDeleteImage.

Eu sei que não deveria de estar a fazer as queries de PHP no meio do HTML (na próxima versão isto será remodelado).

O meu problema é o seguinte: Quando clico no botão Eliminar que está por debaixo de uma imagem eu queria que fosse chamada a funDeleteImage. No entanto o que e está acontecer é que "aperece" o formulário é submetido e abre a mesma página mostrando que o id que é passado no $_REQUEST não existe.

Será que alguém me pode ajudar?

Fica aqui o meu código (removi as partes do include do scripts e dos heads para não ficar demaxiado extenso):

<?php
   include_once('includes/globalVars.php');
   include_once('includes/bd/init.php');
   
   $atletaId = $_REQUEST['id'];
   
   foreach ($db->query("SELECT * FROM atletas WHERE id=$atletaId") as $atleta) {
       ?>
<!DOCTYPE html>
<html>
   <head>
      ...
   </head>
   <body class="hold-transition skin-blue sidebar-mini">
      <div class="wrapper">
         <?php include_once('header.php'); ?>
         <!-- Left side column. contains the logo and sidebar -->
         <aside class="main-sidebar">
            <!-- sidebar: style can be found in sidebar.less -->
            <section class="sidebar">
               <!-- sidebar menu: : style can be found in sidebar.less -->
               <?php include_once('menu.php'); ?>
            </section>
            <!-- /.sidebar -->
         </aside>
         <!-- Content Wrapper. Contains page content -->
         <div class="content-wrapper">
            <!-- Content Header (Page header) -->
            <section class="content-header">
               <h1>
                  Atletas
               </h1>
               <ol class="breadcrumb">
                  <li><a href="#"><i class="fa fa-dashboard"></i>Home</a></li>
                  <li><a href="#">Atletas</a></li>
                  <li class="active">Editar</li>
               </ol>
            </section>
            <!-- Main content -->
            <section class="content" id="main">
               <div class="row">
                  <div class="col-xs-12">
                     <div class="box box-primary">
                        <div class="box-header with-border">
                           <h3 class="box-title">Editar Atletas</h3>
                        </div>
                        <!-- /.box-header -->
                        <!-- form start -->
                        <form id="editar-atleta" role="form" enctype="multipart/form-data">
                           <div class="box-body">
                              <p style="font-weight: bold;">Identificação</p>
                              <div class="form-group col-xs-4">
                                 <label for="exampleInputPassword1">Escalão</label>
                                 <select class="form-control select2" name="escalao" id="escalao" required>
                                    <?php
                                       foreach ($db->query("SELECT * FROM escalao") as $escalao) {
                                           ?>
                                    <option
                                       value="<?php echo $escalao['id']; ?>" <?php if($escalao['id']== $atleta['idEscalao']) { echo "selected";} ?>><?php echo $escalao['nome']; ?></option>
                                    <?php
                                       }
                                       ?>
                                 </select>
                              </div>
                              ....
                              <div class="form-group col-xs-4">
                                 <label for="exampleInputPassword1">Contacto</label>
                                 <input type="text" class="form-control" id="contactoMae" nome="contactoMae" placeholder="Contacto" value="<?= $atleta['contactoMae'] ?>">
                              </div>
                              <div class="form-group col-xs-4">
                                 <label for="exampleInputPassword1">E-mail</label>
                                 <input type="email" class="form-control" id="emailMae" nome="emailMae" placeholder="E-mail" value="<?= $atleta['emailMae'] ?>">
                              </div>
                              <div class="form-group col-xs-12">
                                 <label for="fotografia">Fotografia</label>
                                 <input type="file" id="fotografia" name="fotografia">
                              </div>
                              <div class="form-group col-xs-4" id="image">
                                 <img class="img-responsive" style="padding-bottom: 5px" <?= "src='uploads/".$atleta['foto']."'"; ?>>
                                 <button class="btn btn-danger" style="max-height: 25px; vertical-align: middle; width: 100%; padding-bottom: 25px"  onclick="funDeleteImage(<?= $atletaId ?>, <?= $atleta['foto'] ?>)" >Eliminar</button>
                              </div>
                           </div>
                           <!-- /.box-body -->
                           <div class="box-footer">
                              <button type="submit" class="btn btn-primary">Editar</button>
                           </div>
                        </form>
                     </div>
                     <!-- /.box -->
                  </div>
                  <!-- /.col -->
               </div>
               <!-- /.row -->
            </section>
            <!-- /.content -->
         </div>
         <!-- /.content-wrapper -->
         <?php include_once ('footer.php') ?>
      </div>
   </body>
</html>
<?php
   }
   ?>

 

 

A minha função funDeleteImage é a seguinte:

<script>
        function funDeleteImage(viAtletaId, viImage){
            var url='includes/bd/deleteimage.php?id'+viAtletaId+'&imageName='+viImage;
            $.ajax({
                url: url,
                type: 'POST',
                async: false,
                success: function (data) {
                    document.getElementById("image").hide();
                },
                error: function(chr, desc, err){
                    alert("oppsss..Failed");
                },
                cache: false,
                contentType: false,
                processData: false
            });
        }
    </script>

 

Share this post


Link to post
Share on other sites
N3lson

'includes/bd/deleteimage.php?id'+viAtletaId+'&imageName='+viImage

Assim por alto.

falta-te o =

id=' + ...

 

Mas um curiosidade porque carregas a pagina toda dentro do foreach e não apenas os campos necessários para determinado id ?

 

Edited by N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Share this post


Link to post
Share on other sites
HappyHippyHippo

o problema do id não existir no pedido já foi dito, no entanto, se o pretendido é fazer um pedido AJAX, vou assumir que o comportamento de a página fazer redireccionamento, nºao +e o esperado.

logo, deverá faltar fazer com que a função funDeleteImage retorne o valor de false para invalidar o redirecionamento


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.