Comunidad de diseño web y desarrollo en internet online

crear consulta evitando listar ciertos nombres...

Citar            
MensajeEscrito el 02 Oct 2010 01:18 am
Podrian echarme la mano con esta duda?...

Resulta que hice un script para crear un select que extrae de una DB los datos y crea un select algo como:

<option value="1">pedro</option>

yo necesito decirle algo asi

selecciona todo de nombres exepto cuando los nombres sean pedro,maria,karla,jose

y asi listar los demas...

gracias ;)

Por logoys

Claber

104 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Oct 2010 02:24 am
El SQL seria algo como:

Código MySQL :

SELECT
   *   
FROM personas
WHERE 
nombre NOT LIKE '%pedro%'
AND nombre NOT LIKE '%maria%'
AND nombre NOT LIKE '%karla%'
AND nombre NOT LIKE '%jose%'
ORDER BY nombre AS;


Referencia de LIKE donde explica el % y un poco más: Funciones de comparación de cadenas de caracteres

Algo que te puede ayudar en php...

Código PHP :

<?php
$nombres = array('pedro', 'maria', 'karla', 'jose');

$condiciones = array();
foreach ($nombres as $nombre)
{
      $condiciones[] = "nombre NOT LIKE '%$nombre%'";
}
$where = implode(' AND ', $condiciones);
echo $where;
?>


Referencia de implode: implode

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Oct 2010 06:38 pm
Gracias!!

Aqui dejo el codigo:

Código PHP :


$nombres = array('juan', 'pedro','maria');

function eventos($eventos,$nombre){
$condiciones = array();
foreach($nombres as $nombre){
$condiciones[] = "nombre NOT LIKE '%$nombre'";
}
$where = implode(' AND ', $condiciones);
$consulta = "SELECT * FROM empleado WHERE ".$where." ORDER BY nombre";
$query = mysql_query($consulta);
$select = "";
$select .= "<select name=\"".$nombre."\">";
While($row = mysql_fetch_assoc($query)){
$select .= "<option value=\"".$row['id_evento']."\">".$row['evento']."</option>";
}
echo $select;
}

eventos($nombres,"eventos"); 

Por logoys

Claber

104 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Oct 2010 06:46 pm
Ese código tiene un error en tiempo de ejecución.

El parámetro $nombre se esta sobreescribiendo en el foreach.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Oct 2010 11:13 pm
y porque no mejor utilizar SELECT * FROM nombres WHERE nombre NOT IN ('pedro','maria','juan') ? tbn seria una buena alternativa.

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 02 Oct 2010 11:59 pm
talcual, eso funciona siempre y cuando los nombres estén escritos así exactamente.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.