Borro la base de datos con este codigo! me dices por qué?

Este codigo muestra los viajes de un usuario.. y crea dos botones uno da la posibilidad de Modificar y otro la de Eliminar dicho viaje. El tema es que sin darle al boton Eliminar todos sus viajes se borran, si todos( ya que está dentro de un bucle while) Antes de eliminarse se supone deberia pulsar el boton Eliminar y despues Confirmar que deseas borrarlo... Pero sin ninguna de estas dos acciones, todas los viajes de un usuario se Borran.

Espero puedan ayudarme. Gracias y un saludo.

<?php
$sql="SELECT * FROM viajes WHERE ID = '".$_SESSION['idu']."' ORDER BY FECHA DESC";
// echo $sql;
$res = mysql_query($sql) or die (mysql_error());
?>
<table class="table" width="560" border="1" align="left" cellpadding="5" cellspacing="0">
<tr>
<td width="160">Origen</td>
<td width="160">Destino</td>
<td width="80">Fecha Viaje</td>
<td width="80">Modificar</td>
<td width="80">Eliminar</td>
</tr>

<?php

if(mysql_num_rows($res)>0){
while($r=mysql_fetch_assoc($res))
{
$qmuni_o=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['ORIGEN']."'");
$name_muni_o=mysql_fetch_assoc($qmuni_o);
$qmuni_d=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['DESTINO']."'");
$name_muni_d=mysql_fetch_assoc($qmuni_d);
$s=mysql_query("SELECT NOMBRE FROM usuarios WHERE ID='".$r['ID']."'");
$name_us=mysql_fetch_assoc($s);
?> <tr>
<td><?php echo $name_muni_o['municipio'];?></td>
<td><?php echo $name_muni_d['municipio'];?></td>
<td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
<td><button value="Modificar" onclick="parent.location.href='modificarviaje.php?IDV=<? echo $r['IDV'];?>'">Modificar</button></td>
<td><button value="Eliminar" onclick="if(confirm('¿Desea eliminar este viaje?'))
{ <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>
parent.location='misviajes.php';
}"
>Eliminar</button></td>

</tr>
<?php }
}else{
?> <tr>
<td colspan="7"> <?php echo "No se obtuvieron resultados.. " ?> </td>
</tr>
<?php } ?>

</table>
Cuando muestres un codigo, encierralo entre [-php] y [-/php] (sin los guiones "-" )para que se entienda mejor

<?php 
$sql="SELECT * FROM viajes WHERE ID = '".$_SESSION['idu']."' ORDER BY FECHA DESC"; 
// echo $sql;
 $res = mysql_query($sql) or die (mysql_error());
 ?>
 <table class="table" width="560" border="1" align="left" cellpadding="5" cellspacing="0">
 <tr>
 <td width="160">Origen</td>
 <td width="160">Destino</td>
 <td width="80">Fecha Viaje</td>
 <td width="80">Modificar</td>
 <td width="80">Eliminar</td>
 </tr>
 
<?php 

if(mysql_num_rows($res)>0){
 while($r=mysql_fetch_assoc($res))
 { 
$qmuni_o=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['ORIGEN']."'");
 $name_muni_o=mysql_fetch_assoc($qmuni_o);
 $qmuni_d=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['DESTINO']."'");
 $name_muni_d=mysql_fetch_assoc($qmuni_d);
 $s=mysql_query("SELECT NOMBRE FROM usuarios WHERE ID='".$r['ID']."'");
 $name_us=mysql_fetch_assoc($s);
 ?> <tr>
 <td><?php echo $name_muni_o['municipio'];?></td>
 <td><?php echo $name_muni_d['municipio'];?></td>
 <td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
 <td><button value="Modificar" onclick="parent.location.href='modificarviaje.php? IDV=<? echo $r['IDV'];?>'">Modificar</button></td>
 <td><button value="Eliminar" onclick="if(confirm('¿Desea eliminar este viaje?'))
 { <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>
 parent.location='misviajes.php';
 }">Eliminar</button></td>

 </tr>
 <?php }
 }else{
 ?> <tr> 
<td colspan="7"> <?php echo "No se obtuvieron resultados.. " ?> </td>
 </tr>
 <?php } ?>
 
</table> 
Yo uso otra tecnica para mostrar y borrar datos, espero que alguien mas pueda ayudarte y recuerda colorear tus codigos, saludos
Bueno, no tengo mucha idea de javascript la verdad, pero ahora que estoy haciendo algunas cosillas por ahi, me doy cuenta de algo, pero no me preguntes el por qué de las cosas porque no lo sé, jeje.

Prueba de la siguiente manera:

Creas una función en el head de la página con el if, por ejemplo:

<script type="text/javascript">
function borrarOno(){
//si no confirma
      if(!confirm('¿Desea eliminar este viaje?')){
            //devolvemos false
            return false;
      }
//y si sí
      else{
            //le decimos lo que tiene que hacer
            <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>parent.location='misviajes.php';
            return true;
      }
}
</script>

Y al botón le pones nada más:

onclick="return borrarOno();"

Ya que creo que es necesario el return para saber si se ejecuta o no. Pero repito, que tú pruébalo pero no esperes milagros viniendo de mí jajaja, ni lo he probado ni sé si funcionará, pero no pierdes nada.

Saludos!
Hola:

Hay algo muy raro en tu código (de hecho, es la línea que resaltaste). No se puede hacer lo que quieres de esa forma, pues todas las instrucciones de PHP se ejecutan antes de mostrar el contenido al usuario, entonces, cuando se abre la página que contiene el código anterior, todo lo que sea PHP habrá desaparecido. En este caso, cuando la persona hace clic sobre el botón eliminar no se hace nada.

Esto:

onclick="if(confirm('¿Desea eliminar este viaje?'))
{ <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>
parent.location='misviajes.php';
}

es lo mismo que esto:

onclick="if(confirm('¿Desea eliminar este viaje?'))
{
  parent.location='misviajes.php';
}

Para hacer lo que quieres, debes incluir la librería jQuery (para que sea fácil de hacer) y utilizar Ajax para hacer consultas asíncronas (o dinámicas) al servidor. Por ejemplo:

<?php // elimina_viaje.php
  // Conexión a la base de datos
  $id = $_GET['IDV'];
  $sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );
  $aff = mysql_affected_rows( $sql );
  echo $aff;
?>

Este será el mismo formulario, pero fíjate en el botón eliminar:

<?php 
$sql="SELECT * FROM viajes WHERE ID = '".$_SESSION['idu']."' ORDER BY FECHA DESC"; 
//	echo $sql;
$res = mysql_query($sql) or die (mysql_error());
?>
<table class="table" width="560" border="1" align="left" cellpadding="5" cellspacing="0">
<tr>
<td width="160">Origen</td>
<td width="160">Destino</td>
<td width="80">Fecha Viaje</td>
<td width="80">Modificar</td>
<td width="80">Eliminar</td>
</tr>

<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script><!-- LIBRERÍA JQUERY -->
    <script type="text/javascript">
      $(document).ready(function() {
        $('button.eliminar-viaje').click(function(e) { // Al hacer click sobre el botón eliminar
          e.preventDefault(); // Previene la acción por defecto (click XD)
          if(confirm('Desea eliminar este viaje?')) {
            var idViaje = $(this).attr('id'); // Obtiene el ID del viaje
            $.ajax({
              url: 'elimina_viaje.php',
              type: 'get',
              data: { 'IDV': idViaje },
              beforeSend: function() {
                // Aquí, generalmente, va el típico gif animado de "cargando" http://ajaxload.info/
              },
              success: function(data) {
                // Lo que ocurra aquí será sólo si se completó la función
                // data será el contenido de la variable $aff del archivo elimina_viaje.php
                if(data == 1) {
                  alert('El viaje ha sido borrado');
                } else if(data > 1) {
                  alert('Se ha eliminado más de un viaje');
                } else {
                  alert('Ocurrió un error al eliminar el viaje');
                }
              },
              error: function(error) {
                // Esta función esta por si hay un error al enviar la información al servidor.
                console.log(error);
              }
            });
          }
        });
        
      });
    </script>
  </head>
  <body>
<?php 

if(mysql_num_rows($res)>0){
while($r=mysql_fetch_assoc($res))
{ 
$qmuni_o=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['ORIGEN']."'");
$name_muni_o=mysql_fetch_assoc($qmuni_o);
$qmuni_d=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['DESTINO']."'");
$name_muni_d=mysql_fetch_assoc($qmuni_d);
$s=mysql_query("SELECT NOMBRE FROM usuarios WHERE ID='".$r['ID']."'");
$name_us=mysql_fetch_assoc($s);
?>	 <tr>
<td><?php echo $name_muni_o['municipio'];?></td>
<td><?php echo $name_muni_d['municipio'];?></td>
<td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
<td><button value="Modificar" onclick="parent.location.href='modificarviaje.php? IDV=<? echo $r['IDV'];?>'">Modificar</button></td>
<td><button value="Eliminar" class="eliminar-viaje" id="<?php echo $r['IDV']; ?>">Eliminar</button></td>

</tr>
<?php }
}else{
?> <tr>	
<td colspan="7"> <?php echo "No se obtuvieron resultados.. " ?> </td>
</tr>
<?php	} ?>

</table>
</body>
</html>

Eso funcionará como quieres (en teoría XD) :D.

Espero que te vaya bien, saludos.
spitfire2 escribió:Cuando muestres un codigo, encierralo entre [-php] y [-/php] (sin los guiones "-" )para que se entienda mejor

<?php 
$sql="SELECT * FROM viajes WHERE ID = '".$_SESSION['idu']."' ORDER BY FECHA DESC"; 
// echo $sql;
 $res = mysql_query($sql) or die (mysql_error());
 ?>
 <table class="table" width="560" border="1" align="left" cellpadding="5" cellspacing="0">
 <tr>
 <td width="160">Origen</td>
 <td width="160">Destino</td>
 <td width="80">Fecha Viaje</td>
 <td width="80">Modificar</td>
 <td width="80">Eliminar</td>
 </tr>
 
<?php 

if(mysql_num_rows($res)>0){
 while($r=mysql_fetch_assoc($res))
 { 
$qmuni_o=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['ORIGEN']."'");
 $name_muni_o=mysql_fetch_assoc($qmuni_o);
 $qmuni_d=mysql_query("SELECT municipio FROM municipios WHERE idm='".$r['DESTINO']."'");
 $name_muni_d=mysql_fetch_assoc($qmuni_d);
 $s=mysql_query("SELECT NOMBRE FROM usuarios WHERE ID='".$r['ID']."'");
 $name_us=mysql_fetch_assoc($s);
 ?> <tr>
 <td><?php echo $name_muni_o['municipio'];?></td>
 <td><?php echo $name_muni_d['municipio'];?></td>
 <td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
 <td><button value="Modificar" onclick="parent.location.href='modificarviaje.php? IDV=<? echo $r['IDV'];?>'">Modificar</button></td>
 <td><button value="Eliminar" onclick="if(confirm('¿Desea eliminar este viaje?'))
 { <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>
 parent.location='misviajes.php';
 }">Eliminar</button></td>

 </tr>
 <?php }
 }else{
 ?> <tr> 
<td colspan="7"> <?php echo "No se obtuvieron resultados.. " ?> </td>
 </tr>
 <?php } ?>
 
</table> 

Muchas gracias! así se vé perfecto.
he probado esta opción y no termina de funcionarme. He metido la funcion en un archivo donde suelo meter todas las funciones pero claro el $r['IDV'] se lo tengo que pasar como parámetro para que sepa cual es el viaje que tengo que eliminar.
Sé que es una pregunta muyyy estupida pero no conozco nada del lenguaje javascript. Podría alguien indicarmelo please?
Muchas gracias por tu aporte!

<script type="text/javascript">
function borrarOno(){
//si no confirma
      if(!confirm('¿Desea eliminar este viaje?')){
            //devolvemos false
            return false;
      }
//y si sí
      else{
            //le decimos lo que tiene que hacer
            <?php $sql=mysql_query("DELETE FROM viajes WHERE IDV='". $r['IDV']."'"); ?>parent.location='misviajes.php';
            return true;
      }
}
</script>
amigo la respuesta correcta es la del amigo sparate,
PHP es un idioma del lado del servidor osea que sera ejecutado antes de que el usuario lo lean, incluso si este se encuentra entre instrucciones de java debido a que el java es del lado del usuario no del lado del servidor como php.

sin importa como lo condiciones siempre y cuando el código php este en la hoja en cuestión se ejecutara primero.
Te aconsejaría que hicieras caso a skaparate antes que a mí, seguro te puede ayudar muchísimo más [;)]

Saludos!
Gracias skaparate! Pensé de primeras que tu respuesta iba mejor encaminada, y mi pensamiento de porqué no funcionaba era por lo que comentabas de que el código php se ejecuta en el lado del servidor, pero como soy novato en estos temas pues quería opiniones mas expertas como la vuestra. El tema es que no conozco nada de jQuery y preferí el código mas simple que me proponía otro compañero. Pero creo entender que no puede funcionar.... Según creo entender con jQuery se hacen consultas dinámicas al servidor. Con el código tal cual me pones debería funcionar o tengo antes que descargar algún archivo para que funcione jQuery??

Gracias por vuestra ayuda.
Si lo haces tal cual lo escribí yo, entonces debería funcionar (como dije antes, en teoría). Lo más importante son las etiquetas <script> que puse dentro del <head> y la modificación al botón de eliminar.

Saludos y suerte :D.

P.D.: si quieres más ayuda con jQuery, hay un sub-foro de jQuery donde puedes encontrar ayuda.
Acabo de probar este código y siempre me da el mismo resultado... Ocurrió un error al eliminar el viaje. He comprobado la tabla viajes y no borra ninguna linea. Tambien he comprobado los accesos a la base de datos en tú codigo a mis tablas, pero están correctos...
He creado el fichero elimina_viaje.php en el que creo haber encontrado un pequeño error

tu codigo:
<?php // elimina_viaje.php
  // Conexión a la base de datos
  $id = $_GET['IDV'];
  $sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );
  $aff = mysql_affected_rows( $sql );
  echo $aff;
?> 

mi prueba:
<?php // elimina_viaje.php
  // Conexión a la base de datos
  $id = $_GET['IDV'];
  $sql = mysql_query( "DELETE FROM viajes WHERE IDV='".$id."'" );
  $aff = mysql_affected_rows( $sql );
  echo $aff;
?> 

Aparte de eso no fui capaz de detectar donde esta el error... la llamada al fichero elimina_viaje.php es correcta, creo que coge el id del button bien .... nose que más! =(
¿Por casualidad, agregaste la conexión a la base de datos donde dice // Conexión a la base de datos? Vale decir, falta esta parte:

$link = mysql_connect( 'dominio', 'usuario_base_datos', 'pass_base_datos' );
mysql_select_db( 'nombre_base_datos', $link );

La línea que yo escribí

$sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );

es correcta, porque PHP interpreta todas las variables que se pongan dentro de comillas dobles, o sea, convierte la variable en el valor de esta.

Aquí hay algo más completo:

<?php // elimina_viaje.php
  // Conexión a la base de datos
  logger( "<-- START LOG -->" . PHP_EOL );
  $link = mysql_connect( 'dominio', 'usuario_base_datos', 'pass_base_datos' );
  if( ! $link ) {
    $logger( "No se pudo conectar a la base de datos: " . mysql_error() );
  } else {
    if( mysql_select_db( 'nombre_base_datos', $link ) {
      $id = $_GET['IDV'];
      logger( "ID Enviada: $id" );
      $sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );
      logger( "sql: $sql" );
      $aff = mysql_affected_rows( $sql );
      logger( "affected rows: $aff" );
      logger( "<-- END LOG -->" . PHP_EOL );
      echo $aff;
    } else {
      logger( 'No se pudo seleccionar la base de datos: ' . mysql_error( $link ) );
    }
  }
  

  // Esta función creará o abrirá el archivo log.$ext en la carpeta donde se encuentre el archivo elimina_viaje.php y añadirá el contenido de $msg.
  function logger( $msg, $ext = 'txt' ) {
    $log = fopen( 'log.' . $ext, 'a+' );
    fwrite( $log, '[' . date( 'j/n/Y G:i:s' ) . '] : ' . $msg . PHP_EOL );
    fclose( $log );
  }
?>

Intenta nuevamente con el código que acabo de poner (el de la página php con el formulario no lo modifiques). Después de haber utilizado el formulario, debes buscar el archivo log.txt dentro en la misma carpeta donde está el archivo elimina_viaje.php (aunque si estás utilizando un servidor con linux, puede que el archivo no se cree por no tener los permisos necesarios) para ver si hay algo mal.

Espero que funcione bien :D.
Buah!! Perfecto este código. Funciona de maravilla. Ojalá algún día yo pueda llegar a sacar todo este código por mi mismo. Muchísimas gracias.

Una última pregunta como hacer para que justo despues de eliminar el viaje refresque la página y así no aparezca en el listado. Porque se elimina pero tienes k darle a refrescar para que veas que no aparece el viaje y que ha sido eliminado con éxito.
En mí código de origen que puse algo en negrita... lo hice así, pero con javascript: parent.location='misviajes.php';
Pero claro ahora estamos en php..

Bueno gracias de nuevo.
Pero claro ahora estamos en php..

Eso no es del todo correcto, pues en este caso estas mezclando PHP y Javascript. Siguiendo con el mismo código, solo tendrías que poner esa misma línea (excluyendo javascript:) dentro del

if(data == 1) {
  alert('Viaje borrado');
  parent.location = 'misviajes.php';
}

Esto está en la función success.

Saludos.
Eres un crack skaparate [;)]

PD: Lo tenía que decir, porque con tus explicaciones estoy sacando yo otras cosillas y aprendiendo.

Saludos!
Bueno haciendo pruebas, me acabo de dar cuenta que siempre me aparece el mensaje "Ocurrió un error al eliminar el viaje", pero consultando la base de datos veo que solo se elimina el viaje seleccionado... por tanto no entiendo muy bien que ocurre. jummm
He pensado quitar la parte:
 if(data == 1) {
                  alert('El viaje ha sido borrado');
    				parent.location = 'misviajes.php';
                } else if(data > 1) {
                  alert('Se ha eliminado más de un viaje');
                } else {
                  alert('Ocurrió un error al eliminar el viaje');
                }
              }

Y poner directamente:

             alert('El viaje ha sido borrado');
        		parent.location = 'misviajes.php';

Pero bueno puede que haya algo que de algún futuro error... y no sea conveniente..

Te pongo el código completo que va en head

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script><!-- LIBRERÍA JQUERY -->
    <script type="text/javascript">
      $(document).ready(function() {
        $('button.eliminar-viaje').click(function(e) { // Al hacer click sobre el botón eliminar
          e.preventDefault(); // Previene la acción por defecto (click)
          if(confirm('Desea eliminar este viaje?')) {
            var idViaje = $(this).attr('id'); // Obtiene el ID del viaje
            $.ajax({
              url: 'elimina_viaje.php',
              type: 'get',
              data: { 'IDV': idViaje },
              beforeSend: function() {
                // Aquí, generalmente, va el típico gif animado de "cargando" http://ajaxload.info/
              },
              success: function(data) {
                // Lo que ocurra aquí será sólo si se completó la función
                // data será el contenido de la variable $aff del archivo elimina_viaje.php
                if(data == 1) {
                  alert('El viaje ha sido borrado');
    				parent.location = 'misviajes.php';
                } else if(data > 1) {
                  alert('Se ha eliminado más de un viaje');
                } else {
                  alert('Ocurrió un error al eliminar el viaje');
                }
              },
              error: function(error) {
                // Esta función esta por si hay un error al enviar la información al servidor.
                console.log(error);
              }
            });
          }
        });
        
      });
    </script>
Eres un crack skaparate

PD: Lo tenía que decir, porque con tus explicaciones estoy sacando yo otras cosillas y aprendiendo.

Saludos!

XD, para nada :D, aprendí de la misma forma que todos (o la mayoría) del foro: con san Google :D (y CCTW, aunque solo aprendí HTML, pues era lo único disponible en aquel entonces). Pero bueno, lo importante es que aprendamos todos (yo aún estoy aprendiendo).

Bueno haciendo pruebas, me acabo de dar cuenta que siempre me aparece el mensaje "Ocurrió un error al eliminar el viaje", pero consultando la base de datos veo que solo se elimina el viaje seleccionado... por tanto no entiendo muy bien que ocurre...

El error no debe estar en el código javascript, sino en PHP. Aunque quizás no sea un error sino una mal interpretación de los datos. Para saber si ese es el problema, necesito que pongas esto y me digas el resultado

success: function(data) {
  // Lo que ocurra aquí será sólo si se completó la función
  // data será el contenido de la variable $aff del archivo elimina_viaje.php
  [COLOR="#FFA07A"]alert(typeof data);[/COLOR]
  if(data == 1) {
    alert('El viaje ha sido borrado');
    parent.location = 'misviajes.php';
  } else if(data > 1) {
    alert('Se ha eliminado más de un viaje');
  } else {
    alert('Ocurrió un error al eliminar el viaje');
  }
}

Debería mostrar un cuadro diciendo number; si dice string entonces los datos se mal interpretaron (si dice otra cosa distinta también), así que tendrás que modificar lo anterior y poner lo siguiente:

success: function(data) {
  // Lo que ocurra aquí será sólo si se completó la función
  // data será el contenido de la variable $aff del archivo elimina_viaje.php
  //[COLOR="#FFA07A"]alert(typeof data);[/COLOR]
  [B]data = parseInt(data);[/B]
  if(data == 1) {
    alert('El viaje ha sido borrado');
    parent.location = 'misviajes.php';
  } else if(data > 1) {
    alert('Se ha eliminado más de un viaje');
  } else {
    alert('Ocurrió un error al eliminar el viaje');
  }
}

Ojalá ahora sí funcione :D, saludos.
IDV es tratado como string, asi que puse esas dos lineas que me has dicho:
alert(typeof data);    //String
 data = parseInt(data);
alert(typeof data);        //Number


pero aún así sigue saliendo siempre "Ocurrió un error al eliminar el viaje"..... =(
<?php // elimina_viaje.php
// Conexión a la base de datos
$id = $_GET['IDV'];
$sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );
$aff = mysql_affected_rows( $sql );
echo $aff;
?>

Fue un error mío, lo siento :P. Lo que ocurre es que mysql_affected_rows no se le debe pasar el resultado de una consulta (mysql_query()), sino el identificador de la conexión:

<?php // elimina_viaje.php
  // Conexión a la base de datos
  $link = mysql_connect( 'dominio', 'usuario_base_datos', 'pass_base_datos' );
  if( ! $link ) {
    echo "No se pudo conectar a la base de datos: " . mysql_error();
  } else {
    if( mysql_select_db( 'nombre_base_datos', $link ) {
      $id = $_GET['IDV'];
      $sql = mysql_query( "DELETE FROM viajes WHERE IDV='$id'" );
      $aff = mysql_affected_rows( $link ); // <--- Aquí me equivoqué. Anteriormente le pasaba $sql siendo que debía ser $link. 
      // Documentación mysql_affected_rows: http://php.net/manual/es/function.mysql-affected-rows.php
      echo $aff;
    } else {
      echo 'No se pudo seleccionar la base de datos: ' . mysql_error( $link );
    }
  }
?>

El código Javascript queda igual. Cruzaré los dedos para que funcione XD.

Saludos.