Hello Stackoverflow !,
Хорошо, этот вопрос может быть длинным, но прежде всего я напишу, чего я хочу достичь.
У меня есть выпадающее меню с «регионами» (страны), когда выбран регион, существует функция onchange , которая получает значение и переходит к AJAX-функция , php-файл, который отображает результат (которые являются клиентами в этом регионе), и этот результат также отображает форму для каждого клиента, эта форма представляет собой кнопку удаления и редактирования,
Когда я нажимаю на edit, это тоже функция AJAX call , которая отображает другую форму, где я могу редактировать реестр .
скрипт в index.php
<script type="text/javascript">
function showUser(str){
if (str=="")
{
document.getElementById("mostrarClientes").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("mostrarClientes").innerHTML=xmlhttp.responseText;
}
}
document.getElementById("mostrarClientes").innerHTML='Espere un momento porfavor...';
xmlhttp.open("GET","verClientesAjax.php?ver="+str,true);
xmlhttp.send();
}
function editUser(str){
if (str=="")
{
document.getElementById("editarClientes").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("editarClientes").innerHTML=xmlhttp.responseText;
}
}
document.getElementById("editarClientes").innerHTML='Espere un momento porfavor...';
xmlhttp.open("GET","editarClientesAjax.php?edit="+str,true);
xmlhttp.send();
}
</script>
это мой index.php // страница индекса
<form name="form2">
<select name="regiones" onchange="showUser(this.value)">
<option>Seleccione una region</option>
<?php
while($row = mysql_fetch_assoc($resultRegion)){
echo "<option value=\"".$row['idRegion']."\">".$row['nombre']."</option><br/>";
}
?>
</select>
</form>
<br />
<div id="mostrarClientes"><b>clients by region</b></div>
<div id="editarClientes"><b>form to edit the client</b></div>
это мой verCliente.php // это первый вызов ajax, где я показываю клиентов в регионе
<?php
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db_clients") or die(mysql_error());
header("Content-type: text/html; charset=windows-1252");
//////THIS IS THE FUNCTION THAT PRINTS THE FORM TO EDIT (IT'S IN THE RETURN)
function repr($pair){
list($a, $b) = $pair;
return "<form name=\"formEdit$b\"> <div style=\"float:left; margin-right:3px\">• $a</div> <div style=\"float:right\"> <input type=\"image\" name=\"edit\" src=\"edit.gif\" border=\"0\" title=\"editar\" value=\"$b\" onClick=\"editUser(this.value)\"></> <input type=\"image\" name=\"del\" src=\"delete.gif\" border=\"0\" title=\"eliminar\" value=\"$b\" onClick=\"if (!confirm('seguro que desea ELIMINAR el registro \'$a\' ?')) {return false} else{delUser(this.value)}\"></> </div> </form>";
}
////////////////////
//////codigo para mostrar clientes
$numReg=$_GET["ver"];
$nombreProvincia = "";
$nombreComuna = "";
$nombreGiro = "";
$nombreNombre = array();
$resultRegion = mysql_query("SELECT idRegion, nombre FROM region WHERE idRegion = '$numReg'");
$titleRegion= mysql_fetch_array($resultRegion);
$resultClientes = mysql_query("SELECT nombre.idNombre AS idNombre, nombre.nombre AS nombreNombre, comuna.nombre AS nombreComuna, giro.nombre AS nombreGiro, provincia.nombre AS nombreProvincia, provincia.region_idRegion AS idRegion FROM nombre INNER JOIN comuna ON nombre.Comuna_idComuna = comuna.idComuna INNER JOIN giro ON nombre.Giro_idGiro = giro.idGiro INNER JOIN provincia ON comuna.Provincia_idProvincia = provincia.idProvincia WHERE provincia.region_idRegion = '$numReg' ORDER BY nombreProvincia, nombreComuna, nombreGiro, nombreNombre");
$num_results = mysql_num_rows($resultClientes);
echo '<h2>'.$titleRegion['nombre'].'</h2>';
if ($num_results > 0){
while ($row = mysql_fetch_assoc($resultClientes)) {
if ($nombreProvincia == $row['nombreProvincia']) {
if ($nombreComuna == $row['nombreComuna']) {
if ($nombreGiro == $row['nombreGiro']) {
$nombreNombre[] = $row['nombreNombre'];
array_push($nombreNombre,$row['idNombre']);
}
else { //nombreGiro
$nombreNombre = array_chunk($nombreNombre, 2);
$nombreNombre = array_map("repr", $nombreNombre);
echo '<td style="background-color: #CCCCFF">' .implode('<br />', $nombreNombre).'';
$nombreGiro = $row['nombreGiro'];
echo '</ul></td></tr><tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
$nombreNombre = array($row['nombreNombre']);
array_push($nombreNombre,$row['idNombre']);
}
}
else { // nombreComuna
$nombreNombre = array_chunk($nombreNombre, 2);
$nombreNombre = array_map("repr", $nombreNombre);
echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr>';
$nombreComuna = $row['nombreComuna'];
echo '<tr><td colspan="2" style="background-color: #FFCC00"><h4 style="margin: 0">'.$nombreComuna.'</h4></td></tr>';
$nombreGiro = $row['nombreGiro'];
echo '<tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
$nombreNombre = array($row['nombreNombre']);
array_push($nombreNombre,$row['idNombre']);
}
}
else { // nombreProvincia
if (!empty($nombreNombre)) {
$nombreNombre = array_chunk($nombreNombre, 2);
$nombreNombre = array_map("repr", $nombreNombre);
echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr></table>';
}
$nombreProvincia = $row['nombreProvincia'];
echo '<table cellspacing="1" style="background-color:#000000; float:left;margin-right:10px"><tr><td colspan="2" style="background-color: #FF6600; text-align:center"><h3 style="margin: 0">'.$nombreProvincia.'</h3></td></tr>';
$nombreComuna = $row['nombreComuna'];
echo '<tr><td colspan="2" style="background-color: #FFCC00"><h4 style="margin: 0">'.$nombreComuna.'</h4></td></tr>';
$nombreGiro = $row['nombreGiro'];
echo '<tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
$nombreNombre = array($row['nombreNombre']);
array_push($nombreNombre,$row['idNombre']);
}
}
if (!empty($nombreNombre)) {
$nombreNombre = array_chunk($nombreNombre, 2);
$nombreNombre = array_map("repr", $nombreNombre);
echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr></table>';
}
}
else{echo '<p>ningun dato fue encontrado aqui!</p>';}
?>
это мой editCliente.php // это вложенный ajax-вызов, где я редактирую информацию клиента
<?php
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db_clients") or die(mysql_error());
header("Content-type: text/html; charset=windows-1252");
$regEdit=$_GET["edit"];
//////dropbox results para EDITAR
$resultComunaEdit = mysql_query("SELECT idComuna, nombre FROM comuna ORDER BY nombre ASC");
$resultGiroEdit = mysql_query("SELECT idGiro, nombre FROM giro ORDER BY nombre ASC");
/////////////////////
$editSql=mysql_query("SELECT nombre.idNombre AS idNombre, comuna.nombre AS comuna, giro.nombre AS giro, nombre.nombre AS nombre FROM nombre INNER JOIN comuna ON nombre.Comuna_idComuna = comuna.idComuna INNER JOIN giro ON nombre.Giro_idGiro = giro.idGiro WHERE idNombre = '$regEdit'");
$rowEdit = mysql_fetch_array($editSql);
$regName=$rowEdit['nombre'];
$regComuna=$rowEdit['comuna'];
$regGiro=$rowEdit['giro'];
echo '<h3>========================EDITAR CLIENTES====================================</h3>';
echo 'editando registro numero: '.$regEdit.'';
echo "<form name=\"editor\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\"><div align=\"center\">";
echo "NOMBRE CLIENTE (max 16): <input name=\"nombreNuevo\" type=\"text\" maxlength=\"16\" size=\"25\" value=\"".$regName."\"></>";
echo "GIRO: ";
echo "<input name=\"giroNuevo\" type=\"text\" style=\"background-color:#CFCFCF\" maxlength=\"16\" size=\"15\" value=\"".$regGiro."\" readonly=\"readonly\"></>";
echo "<select name=\"giroEdit\"><option value=\"\">CAMBIAR A:</option>";
while($row = mysql_fetch_assoc($resultGiroEdit)){
echo "<option value=\"".$row['idGiro']."\">".$row['nombre']."</option><br/>";
}
echo "</select>";
echo "COMUNA: ";
echo "<input name=\"comunaNuevo\" type=\"text\" style=\"background-color:#CFCFCF\" maxlength=\"20\" size=\"15\" value=\"".$regComuna."\" readonly=\"readonly\"></>";
echo "<select name=\"comunaEdit\"><option value=\"\">CABIAR A:</option>";
while($row = mysql_fetch_assoc($resultComunaEdit)){
echo "<option value=\"".$row['idComuna']."\">".$row['nombre']."</option><br/>";
}
echo "</select>";
echo "<input type=\"submit\" name=\"submitEditar\" value=\"Guardar Cambio\" onClick=\"return confirm('seguro que desea guardar cambios?');\"> </>";
echo "<input type=\"hidden\" value=\"".$regEdit."\" name=\"idEdit\" id=\"idEdit\"/>";
echo "</div></form>";
?>
первый звонок работает отлично, я получаю клиентов региона, но когда я нажимаю на кнопку редактирования, что-то идет не так. надеюсь, что вы можете помочь мне, и извините за длинный вопрос.
на всякий случай, если вам интересно, когда я отправляю вторую форму для редактирования информации о клиенте, которая будет с методом post, а не ajax.