Punto final en un array

Hace unos días te preguntaba sobre reiteración de un campo, pregunta que quedo plenamente contestada. Vuelvo a la carga para intentar perfeccionar el script.
Actualmente este script sale como yo quería, una vez el idioma y a continuación los nombres vernáculos de ese idioma, pero tengo un problema, entre nombre vulgar intercalo una coma para diferenciarlos y no se como decirle al script que cuando sea el último en vez de coma me ponga un punto. Con la coma final queda fatal y denota la falta de profesionalidad de la que en realidad carezco.
Ejemplo de cómo sale:
Castellano: abridor, albaricoque, albaricoquero, albarillo, albérchigo, alberchiguero, alberge, albergero, damasco, damasquillo, prisco, prisco,
Catalán: abrecoquer, albercoc, albercoquer, alberge, albergener, albracoquer, ambercoc, ambercoquer,
Euskera: abrikota, abrikotondoa, albarikokea, arbeletxekoa, briska, briskondoa, tuaxa, tuaxatze,
Como me gustaría que saliera:
Castellano: abridor, albaricoque, albaricoquero, albarillo, albérchigo, alberchiguero, alberge, albergero, damasco, damasquillo, prisco, prisco.
Catalán: abrecoquer, albercoc, albercoquer, alberge, albergener, albracoquer, ambercoc, ambercoquer.
Euskera: abrikota, abrikotondoa, albarikokea, arbeletxekoa, briska, briskondoa, tuaxa, tuaxatze.
El script que tengo y que tú me proporcionastes es:
$result = mysql_query("SELECT IDIOMA,NOM_VER,ZONA FROM web_vulgares Where ".$criterio."
ORDER BY IDIOMA,NOM_VER", $conexion);
$reg = mysql_numrows($result);
$idioma = "";
if ($reg > 0)
{
echo ("
<table border=1 bgcolor='#ffffff' cellpadding='3'>
<tr>
<td colspan='3' bgcolor='#DDDDDD' align=center><b>
<font color='#800000' face='Arial' size='2'>Nombres
vernáculos del táxon <i></font><font face='Arial' size='2'>
\"".$gen." ".$espe."</i> ".$infrank." <i>".$infra."\"</font></i></b></td>
</tr>
");
while($registro = mysql_fetch_assoc($result))
{
// Como sólo queremos mostrar el idioma una vez, estaremos atentos a si cambia
// La primera vez seguro que cambia, puesto que el valor de inicialización está vacio y también cambiará cada vez que cambie el idioma
if ($idioma != $registro["IDIOMA"])
{
// La primera vez no hemos de hacer nada, pero las otras veces, debemos cerrar las etiquetas convenientemente. Es lo que hacemos.   Como el if no lleva corchetes, sólo ejecutará la primera línea en caso de validar la condición a true.
If ($idioma != "")
echo "</font></td>
</tr>
"; // Esta línea sólo se ejecuta si $idioma no está vacía
echo "
<tr>
<td bordercolor=#FFFFFF align=left><font face='Arial' size='2'>";
$idioma=ucfirst($registro["IDIOMA"]);
echo "<b>".$idioma.":</b> "; // Mostramos el idioma y empezamos la siguiente casilla
}
$idioma = $registro["IDIOMA"]; // Actualizamos el idioma actual
if ($registro["ZONA"] != null)
{$vernaculo = $registro["NOM_VER"]."(".$registro["ZONA"]."), ";}
else
{$vernaculo = $registro["NOM_VER"].", ";}
echo $vernaculo; // Mostramos el nombre con su zona si la hubiera
}
// Cuando hemos acabado con todos los registros, cerramos la casilla y la tabla
echo "</font></td>
</tr>
</table>
";
}
Respuesta
1
Como que en el momento de escribir un nombre vernáculo no sabes si será el último, lo mejor es escribir la coma al principio de cada nombre en lugar de al final. Y el punto cuando ya sabes que se ha terminado:
$result = mysql_query("SELECT IDIOMA,NOM_VER,ZONA FROM web_vulgares Where ".$criterio."
ORDER BY IDIOMA,NOM_VER", $conexion);
$reg = mysql_numrows($result);
$idioma = "";
if ($reg > 0)
{
echo ("
<table border=1 bgcolor='#ffffff' cellpadding='3'>
<tr>
<td colspan='3' bgcolor='#DDDDDD' align=center><b>
<font color='#800000' face='Arial' size='2'>Nombres
vernáculos del táxon <i></font><font face='Arial' size='2'>
\"".$gen." ".$espe."</i> ".$infrank." <i>".$infra."\"</font></i></b></td>
</tr>
");
while($registro = mysql_fetch_assoc($result))
{
// Como sólo queremos mostrar el idioma una vez, estaremos atentos a si cambia
// La primera vez seguro que cambia, puesto que el valor de inicialización está vacio y también cambiará cada vez que cambie el idioma
if ($idioma != $registro["IDIOMA"])
{
// La primera vez no hemos de hacer nada, pero las otras veces, debemos cerrar las etiquetas convenientemente. Es lo que hacemos.   Como el if no lleva corchetes, sólo ejecutará la primera línea en caso de validar la condición a true.
if ($idioma != "")
echo ".</font></td>
</tr>
"; // Esta línea sólo se ejecuta si $idioma no está vacía
echo "
<tr>
<td bordercolor=#FFFFFF align=left><font face='Arial' size='2'>";
$idioma=ucfirst($registro["IDIOMA"]);
echo "<b>".$idioma.":</b> "; // Mostramos el idioma y empezamos la siguiente casilla
}
if ($registro["ZONA"] != null)
{$vernaculo = $registro["NOM_VER"]."(".$registro["ZONA"]."), ";}
else
{$vernaculo = $registro["NOM_VER"].", ";}
if ($idioma == $registro["IDIOMA"])
  Echo ", "; // Sólo se pone una coma si el anterior era de l mismo idioma
echo $vernaculo; // Mostramos el nombre con su zona si la hubiera
$idioma = $registro["IDIOMA"]; // Actualizamos el idioma actual
}
// Cuando hemos acabado con todos los registros, cerramos la casilla y la tabla
echo ".</font></td>
</tr>
</table>
";
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas