3

I've been having errors with this code. I'm new to bootstrap and using modals for things. I used to run off child forms for all my 'fancy' forms but now I'm doing a move towards modals. This is my code for grabbing the modals:

<button class="btn btn-primary" data-toggle="modal" data-target="#newmemberModal">Add new Member</button>

<br />
<br />

<?php
    $result = mysql_query("SELECT * FROM `players` ORDER BY `players`.`user` ASC") 
        or die(mysql_error());  

    echo " <div class='table-responsive'><table class='table'>";
    echo "<tr><th>Username</th> <th>Rank</th> <th>Position</th> <th>DoP</th> <th>Tag</th> <th>AiT</th> <th>Service Stripes</th> <th>Notes</th> <th></th> <th></th><th></th></tr>";
    while($row = mysql_fetch_array( $result )) {

        echo "<tr>";
        echo '<td>' . $row['user'] . '</td>';
        echo '<td>' . $row['rank'] . '</td>';
        echo '<td>' . $row['position'] . '</td>';
        echo '<td>' . $row['date'] . '</td>';
        echo '<td>' . $row['tag'] . '</td>';
        echo '<td>' . $row['ait'] . '</td>';
        echo '<td>' . $row['ss'] . '</td>';
        echo '<td>' . $row['notes'] . '</td>';
        echo '<td><button class="btn btn-default" data-toggle="modal" data-target="#editModal">Edit</button></td>';
        echo '<td><a href="classes/forms/delete.php?id=' . $row['id'] . '">Delete</a></td>';
        echo '<td><a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("dd.php?id=' . $row['id'] . '","Ratting","width=350,height=550,0,status=0,");>DD</a><BR /><a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("hd.php?id=' . $row['id'] . '","Ratting","width=350,height=550,0,status=0,");>HD</a></td>';
        echo "</tr>"; 
    } 
    echo "</table> </div>";

?>

Here's my edit.php:

    <?php include_once('classes/check.class.php'); ?>
    <?php
     function renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, $error)
     {
     ?>

      <?php 
     if ($error != '')
     {
     echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
     }
     ?> 
    <?php if( protectThis("1, 2") ) : ?>
     <center><form action="" method="post">
     <input type="hidden" name="id" value="<?php echo $id; ?>"/>
     <div>
     <strong>Username: *</strong> <br/><input class="tb5" type="text" name="user" value="<?php echo $user; ?>" /><br/><br/>
     <strong>Rank: * Current is </strong> <?php echo $rank; ?> <br/> 
     <select name="rank">
     <option value="recruit" <?php if ($rank == 'recruit') echo 'selected'; ?>>Pending Rank</option>
     <option value="officer" <?php if ($rank == 'officer') echo 'selected'; ?>>PVT</option>
     <option value="leader" <?php if ($rank == 'leader') echo 'selected'; ?>>PV2</option>
    </select><br/><br/>

     <strong>Position: </strong> <br/><input class="tb5" type="text" name="position" value="<?php echo $position; ?>" /><br/><br/>
     <strong>Date: *</strong> <br/><input class="tb5" type="text" name="date" value="<?php echo $date; ?>" /><br/><br/>
     <strong>Tag: *</strong> <br/><input class="tb5" type="text" name="tag" value="<?php echo $tag; ?>" /><br/><br/>
     <strong>AiT's: </strong> <br/><input class="tb5" type="text" name="ait" value="<?php echo $ait; ?>" /><br/><br/>
     <strong>Service Stripes: </strong><br/> <input class="tb5" type="text" name="ss" value="<?php echo $ss; ?>" /><br/><br/>
     <strong>Notes: </strong><br/> <input class="tb5" type="text" name="notes" value="<?php echo $notes; ?>" /><br/><br/>
     <input class="btn-style" type="submit" name="submit" value="Submit"></center>

     </div>
     </form>    
    <?php elseif( protectThis(6) ) : ?> 
      <center><form action="" method="post">
     <input type="hidden" name="id" value="<?php echo $id; ?>"/>
     <div>
     <strong>Username: *</strong> <br/><input class="tb5" type="test" name="user" value="<?php echo $user; ?>" disabled /><br/><br/>
     <strong>Rank: * Current is </strong> <?php echo $rank; ?> <br/> 
     <select name="rank">
     <option value="recruit" <?php if ($rank == 'recruit') echo 'selected'; ?>>PVT</option>
     <option value="officer" <?php if ($rank == 'officer') echo 'selected'; ?>>PV2</option>

    </select><br/><br/>

     <strong>Position: </strong> <br/><input class="tb5" type="hidden" name="position" value="<?php echo $position; ?>" /><br/><br/>
     <strong>Date: *</strong> <br/><input class="tb5" type="text" name="date" value="<?php echo $date; ?>" /><br/><br/>
     <strong>Tag: *</strong> <br/><input class="tb5" type="text" name="tag" value="<?php echo $tag; ?>" /><br/><br/>
     <strong>AiT's: </strong> <br/><input class="tb5" type="text" name="ait" value="<?php echo $ait; ?>" /><br/><br/>
     <strong>Service Stripes: </strong><br/> <input class="tb5" type="hidden" name="ss" value="<?php echo $ss; ?>" /><br/><br/>
     <strong>Notes: </strong><br/> <input class="tb5" type="hidden" name="notes" value="<?php echo $notes; ?>" /><br/><br/>
     <input class="btn-style" type="submit" name="submit" value="Submit"></center>

     </div>
     </form> 
        <?php endif; ?>
    <?php
     }
     include('connect-db.php');

     if (isset($_POST['submit']))
     { 
     if (is_numeric($_POST['id']))
     {
     $id = $_POST['id'];
     $user = mysql_real_escape_string(htmlspecialchars($_POST['user']));
     $rank = mysql_real_escape_string(htmlspecialchars($_POST['rank']));
     $position = mysql_real_escape_string(htmlspecialchars($_POST['position']));
     $date = mysql_real_escape_string(htmlspecialchars($_POST['date']));
     $tag = mysql_real_escape_string(htmlspecialchars($_POST['tag']));
     $ait = mysql_real_escape_string(htmlspecialchars($_POST['ait']));
     $ss = mysql_real_escape_string(htmlspecialchars($_POST['ss']));
     $notes = mysql_real_escape_string(htmlspecialchars($_POST['notes']));

     if ($user == '' || $rank == '' || $date == '' || $tag == '')
     {
     $error = 'ERROR: Please fill in all required fields!';

     @renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, $error);
     }
     else
     {

     mysql_query("UPDATE players SET user='$user', rank='$rank', position='$position', date='$date', tag='$tag', ait='$ait', ss='$ss', notes='$notes' WHERE id='$id'")
     or die(mysql_error()); 


    header("Location: home.php");
     }
     }
     else
     {

     echo 'Error!';
     }
     }
     else

 {


 if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
 {
 $id = $_GET['id'];
 $result = mysql_query("SELECT * FROM players WHERE id=$id")
 or die(mysql_error()); 
 $row = mysql_fetch_array($result);

 if($row)
 {
 $id = $row['id'];
 $user = $row['user'];
 $rank = $row['rank'];
 $position = $row['position'];
 $date = $row['date'];
 $tag = $row['tag'];
 $ait = $row['ait'];
 $ss = $row['ss'];
 $notes = $row['notes'];

 @renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, '');
 }
 else
 {
 echo "No results!";
 }
 }
 else
 {
 echo 'Error!';
 }
 }
?>

The problem is I keep getting my 'Error!' message in the modal box and not anything else. The goal I'm trying to do is have it pull up data from an ID that's stored in my database. I think the issue really is that it's not grabbing the ID when I click edit on the user. Quite frankly, I don't know how I would be able to edit an ID through a modal. Help would be much appreciated. Thanks

Bonus: I can't open two modals on the same page. If i have two on the same page none of them show up:

<!--Modals-->   

<div class="modal fade" id="newmemberModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Add New Member</h4>
            </div>

            <div class="modal-body">
            <?php include("classes/forms/new.php"); ?>

            </div>
        </div>
    </div>
</div>

<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Edit</h4>
            </div>

            <div class="modal-body">
            <?php include("classes/forms/edit.php"); ?>

            </div>
        </div>
    </div>
</div>
Jeromy French
  • 11,812
  • 19
  • 76
  • 129
Riley
  • 153
  • 3
  • 3
  • 13
  • form has action `post` but php is looking for `GET` – charlietfl Dec 19 '14 at 04:56
  • @charlietfl that's because they're also editing it through the form. That's how I made it atleast. It works for a normal webpage but not via modal. – Riley Dec 19 '14 at 04:58
  • modal is no different, it's just placing content over top other content...in the end the form is still a form – charlietfl Dec 19 '14 at 05:00
  • @charlietfl So what do you reckon I do? I tried changing POST to GET but still the same error. If you could post an answer for me that'd be great – Riley Dec 19 '14 at 05:01
  • 1
    This code is quite hard to read, my 50 øre is that you have a logic flaw. Add some indentation and please either change to switch (case), make some functions, go oop or at least add indentations and comments. If you want to program with strictly if/else if/else, please add closing comments so it's possible to read :-) – Olavxxx Jan 19 '15 at 08:19
  • Please dont use mysql! Use mysqli or PDO! http://stackoverflow.com/a/8891552/2732377 –  May 22 '15 at 11:18
  • so do you have any modal open at all ? – Zgr3doo May 22 '15 at 11:38
  • [Check this tutorial to learn about bootstrap modals](http://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-modals.php) What you need is populating the content of the modal before opening it and not loading edit.php by default using `include` – mccbala Jul 08 '15 at 06:52

2 Answers2

0

Your edit button doesn't pass the ID to edit.php which is the reason why the modal is not activated. You need is populating the content of the edit modal before opening it and not while loading it. Using include will load the edit page without passing an ID to it.

Rewrite your edit button to contain ID

<button class="btn btn-primary" data-toggle="modal" 
data-target="#editModal" data-formid="<?php echo $id; ?>">
    Edit <?php echo $id; ?>
</button>

JS for loading edit form while opening the modal

//jQuery function for loading data 
$("#editModal").on('show.bs.modal', function(event){
    var button = $(event.relatedTarget);
    //bootstrap way of retrieving data-* attributes
    //data-formid in this case
    var id = button.data('formid');
    $.get(yourSiteUrl+'/classes/forms/edit.php?id='+id, 
    function(data) {
        $("#editModal .modal-title").html(data);
        //Resize the modal to the size of the loaded form.
        $("#editModal").modal("handleUpdate");
    });
});

Check this tutorial to learn about bootstrap modals

P.S: I know OP might've solved this issue by now or would've taken a different approach, I have posted the answer so that it might be useful to others.

mccbala
  • 183
  • 1
  • 7
0

try this..
//edit link or button.

<a href="#"  data-toggle="modal" data-target="#myModal_23" data-formid="<?php echo $id; ?>" class="button yellow" >
    <i class="ace-icon fa fa-pencil bigger-130"></i>
    </a>


 //ajax_edit.php
//modal window

<div class="modal fade " id="myModal_23" role="dialog">
    $id = $_REQUEST['id'];
    //echo $id;
   //code

</div>

//script

<script>

$("#myModal_23").on('show.bs.modal', function(event){
        var button = $(event.relatedTarget);           
        var id = button.data('formid');
        //alert(id);        
        $.get('ajax_edit.php?id='+id,
            function(data) {
             $("#myModal_23").html(data);   
                });
            });
      </script>
Dee_wab
  • 1,171
  • 1
  • 10
  • 23