Estas generando varios modales, recuerda que un identificador es único en un documento, es decir no puede funcionar adecuadamente si existe dos elementos con id elemento
por ejemplo.
<div id="elemento"></div> <!-- este sería el elemento tomado únicamente -->
<div id="elemento"></div> <!-- ignorado al buscarlo en el arbol de elementos -->
<div id="elemento"></div> <!-- ignorado al buscarlo en el arbol de elementos -->
mi sugerencia es que uses una plantilla para tu ventana modal y definas su contenido dinamicamente.
define una plantilla:
<script type="text/bootstrap-tpl" id="modal-template">
<div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" data-producto-nombre></h4>
</div>
<div class="modal-body">
<form method="post">
<div>nombre: <strong data-producto-nombre></strong></div>
<div>ID: <strong data-producto-id></strong></div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</script>
ahora define la funcion abrir_producto
:
<script type="text/javascript">
function abrir_producto (id) {
var modal, producto;
modal = $($('#modal-template').html());
producto = productos[id];
$(modal).on('show.bs.modal', function (event) {
console.log(producto);
$(this).find('.modal-body [data-producto-nombre]').html(producto.name);
$(this).find('.modal-body [data-producto-id]').html(producto.ID);
});
$(modal)
.css('display', 'block')
.modal('show');
return false;
}
</script>
en la linea: producto = productos[id];
productos viene siendo un objeto que definiras como JSON, puede ser un arreglo con php:
$productos = array();
while($web_items= mysql_fetch_array($sql_select))
{
$productos[$web_items['ID']] = array(
'name' => GetItemName($web_items['ID']),
'precio' => $web_items['Precio']
);
}
en tu documento:
<script type="text/javascript">
var productos = <?php echo json_encode($productos); ?>;
</script>
de esta forma tienes un objeto productos
en el DOM y puedes obtenerlo por su ID.
un ejemplo:
<?php
$productos = [
1 => [
'name' => 'dummy product',
'ID' => 1
],
2 => [
'name' => 'dummy producto #2',
'ID' => 2
]
];
?><!DOCTYPE html>
<html>
<head>
<title>test</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="productos">
<?php foreach($productos as $producto): ?>
<div>
<span>abrir producto</span>
<a href="#" onclick="return abrir_producto(<?php echo $producto['ID']; ?>)">
#<?php echo $producto['name']; ?>
</a>
<?php endforeach; ?>
</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script type="text/javascript">
var productos = <?php echo json_encode($productos); ?>;
function abrir_producto (id) {
var modal, producto;
modal = $($('#modal-template').html());
producto = productos[id];
$(modal).on('show.bs.modal', function (event) {
console.log(producto);
$(this).find('.modal-body [data-producto-nombre]').html(producto.name);
$(this).find('.modal-body [data-producto-id]').html(producto.ID);
});
$(modal)
.css('display', 'block')
.modal('show');
return false;
}
</script>
<script type="text/bootstrap-tpl" id="modal-template">
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" data-producto-nombre></h4>
</div>
<div class="modal-body">
<form method="post">
<div>nombre: <strong data-producto-nombre></strong></div>
<div>ID: <strong data-producto-id></strong></div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</script>
</body>
</html>