Сгенерированная Ajax форма, которая также имеет вызов ajax - PullRequest
0 голосов
/ 04 июля 2011

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\">&#149; $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.

1 Ответ

0 голосов
/ 06 июля 2011

проблема была в том, что я использовал изображение типа ввода, поэтому при нажатии обновлял сайт, а функция onclick не загружалась, поэтому я просто изменил изображение типа ввода для кнопки, и тогда это сработало =)

...