PHP - PHP array datos duplicados

 
Vista:
sin imagen de perfil

PHP array datos duplicados

Publicado por Tomás (8 intervenciones) el 22/10/2013 05:10:18
Hola

En una consulta a la base de datos selecciono un campo de una tabla , y listo ese campo para todos los registros
La tabla se llama --facturas -- y el campo --matricula-- ( la matricula o patente del vehículo )
Necesito poner las matrículas de los vehículos en un array
Pero con el código siguiente , me salen los datos duplicados , se escriben dos veces cada matrícula

Si sabéis como hacer para que solo se escriban una vez cada matrícula , os agracecería que me lo indicárais

Saludos

Tomás

------------
<?php

$sql="SELECT matricula FROM facturas WHERE alquiler IN ('Reservada') ";
$datos=mysql_query($sql);
while ($filas=mysql_fetch_array($datos)){

foreach($filas as $key=> $value) {?>

<?php echo $filas['0'];?>

<?php
}
}
?>

----------------------

La idea es pasar el array en php a un array javascript , y luego ver si un valor de una varable , obtenido mediante el
document.getElementById , está contenido en ese array . Esto último ya lo tengo controlado .
Lo que me falta es que no se dupliquen los datos del array php
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

PHP array datos duplicados

Publicado por xve (6935 intervenciones) el 22/10/2013 14:33:53
Hola Tomás, puede ser que la consulta sql te devuelve las matriculas repetidas?

No veo en tu código como crear el array de valores?

Si nos puedes mostrar como crear el array...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

PHP array datos duplicados

Publicado por Elier (92 intervenciones) el 23/10/2013 14:48:56
Puedes usar SELECT DISTINCT matricula FROM facturas WHERE alquiler='Reservada' para que te salga una sola vez cada matricula.

Si en tu codigo validas que no se pueda añadir una factura si la matricula esta en una factura reservada entonces no deberían salirte doble. En la consola de mysql prueba esta consulta para ver si hay facturas es estado Reservada con la matricula repetida.

SELECT matricula, COUNT(matricula)
FROM facturas
WHERE alquiler=' Reservada'
GROUP BY matricula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

PHP array datos duplicados

Publicado por Tomás (8 intervenciones) el 26/10/2013 05:32:03
Muchas gracias por las respuestas , XVE , y Elier

Ya funciona bien
Si pongo el código sin añadir --- foreach($filas as $key=> $value) {?>--
funciona sin duplicar los resultados

Ya me sirve

Me falta otro tema relacionado , para terminar el trabajo
Quiero pasar el array php , a un array javascript , después seleccionar un elemento mediante la función getElementById() , y comprobar si ese elemento está en el array , y en caso afirmativo , que salga un alert indicándolo
Haciendo pruebas , me funciona si escribo un array php y pongo entre comillas , y separados por comas , los valores del array . Así puedo conseguir después un array en javascript

Pero el array que consigo de la base de datos , se despliega sin comillas y si separación con comas, y así no funciona
--------------------------------------
$sql="SELECT matricula FROM facturas WHERE alquiler IN ('Reservada') ";
$datos=mysql_query($sql);
while ($filas=mysql_fetch_array($datos)){
echo $filas['0'];?>

<?php
}

?>
------------------------------------------

Así quedan las matrículas de esta manera : matricula1 matricula2 matricula3
Me saldría bien si se desplegasen así "matricula1"," matricula2","matricula3"

El código para crear el array en javascript , crear la función para comprobar si un valor está en el array , y para desplegar un alert en caso afirmativo , lo pongo abajo

<?php
$variable_php=array("matricula1", "matricula2","matricula3");
?>
<script>
var x = new Array();
<?php for ($i = 0, $total = count($variable_php); $i < $total; $i ++){?>
x['<?php echo $i ?>'] = "<?php echo $variable_php[$i]; ?>";
<?php
}
?>

--------------------------------------
1
2
3
4
5
6
7
8
9
function comprobar(matricula){
 
for(i=0;i<x.length;i++) {
	if(matricula==x[i]){
		alert("la matrícula:"+matricula+"\n está en la lista , en la posicion "+i);
}
}
}
</script>
------------------------------
</head>
<body>
<input type="button" onclick="comprobar('matricula2')" />
------------------------------------------

Si en el array $filas obtenido de la base de datos con SELECT matricula FROM facturas ,
$datos=mysql_query($sql);
$filas=mysql_fetch_array($datos) ;
quedaran los valores entre comillas y separados por comas , funcionaría , pero salen sin comillas y sin separación
En el ejemplo que funciona he escrito el array a mano
<?php
$variable_php=array("matricula1", "matricula2","matricula3");
?>

pero para lo que me hace falta debería cambiar el array -- $variable_php -- por el bajado de la base de datos -- $filas=mysql_fetch_array($datos) ;
Con el array -- $variable_php -- funciona todo el código , pero si lo sustituyo por-- $filas-- no funciona
Si sabéis como arreglarlo , os agradecería que me lo indicárais

Saludos

Tomás
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

PHP array datos duplicados

Publicado por Elier (92 intervenciones) el 28/10/2013 15:26:49
creo que la forma mas sencilla sería devolviendo el arreglo en formato json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html>
<?php
	$array = array("XSD250","DAO676","LOG543");
?>
<head>
<script>
function alertaMatricula(Matricula){
 
	var Matriculas = <?php echo json_encode($array); ?>;
 
	var Index = Matriculas.indexOf(Matricula);
 
	if (Index > 0) {
		alert("La matricula:" + Matricula + "\n esta en la lista, en la posicion " + Index);
	}
	else{
	    alert("La matricula:" + Matricula + "\n no esta en la lista");
	}
}
alertaMatricula("DAO676");
alertaMatricula("DER154");
</script>
</head>
<body>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar