2017-10-10 4 views
2

J'ai ce site de musique où j'ai une barre de recherche où je veux que les gens puissent trouver le bon profil de musicien de ma table. Le formulaire de recherche est construit avec des cases à cocher et accroché à ma table avec PHP et MySQL. Je veux que les gens trouvent des profils de catégories telles que l'emplacement, le type d'utilisateur, le genre de musique qu'ils jouent et s'ils ont une sortie d'album.Recherche de requête avec plusieurs noms de cases à cocher

<form action="udforsk.php" method="post" enctype="multipart/form-data"> 
    <h2>User type</h2> 
    <input type="checkbox" name="type[]" value="Solo"> 
    <input type="checkbox" name="type[]" value="Duo"> 
    <input type="checkbox" name="type[]" value="Band"> 

    <h2>Location</h2> 
    <input type="checkbox" name="location[]" value="area_1"> 
    <input type="checkbox" name="location[]" value="area_2"> 
    <input type="checkbox" name="location[]" value="area_3"> 
    <input type="checkbox" name="location[]" value="area_4"> 
    <input type="checkbox" name="location[]" value="area_5"> 

    <h2>Genre</h2> 
    <input type="checkbox" name="genre[]" value="genre_1"> 
    <input type="checkbox" name="genre[]" value="genre_2"> 
    <input type="checkbox" name="genre[]" value="genre_3"> 
    <input type="checkbox" name="genre[]" value="genre_4"> 
    <input type="checkbox" name="genre[]" value="genre_5"> 

    <h2>Album or demo</h2> 
    <input type="checkbox" name="release[]" value="album"> 
    <input type="checkbox" name="release[]" value="demo"> 
</form> 

Je veux que ce soit accroché la largeur d'une requête, mais j'avoir des problèmes avec la façon de traiter des recherches où certaines catégories n'ont pas été remplis. Comme si aucune des cases n'est cochée, tous les emplacements sont considérés comme équitables dans la recherche par requête.

En ce moment j'essaye d'utiliser IN pour rechercher des utilisateurs ma requête ressemble à ceci mais il me donne le problème quand l'entrée $ _POST est vide. En ce moment j'essaye juste de le faire fonctionner avec des emplacements et le genre.

$sql = "SELECT artist.ArtistID, artist.ArtistName, artist.RegionID, 
artist_genre.ArtistID, artist_genre.GenreID 
FROM artist, artist_genre 
WHERE artist.RegionID IN ($areaer) AND artist_genre.GenreID IN ($genrer)"; 

Toute aide comment les recherches de la requête avec plusieurs variables de recherche avec des cases à cocher en général seraient beaucoup d'aide.

+0

[PHP: vérifier si les variables affichées sont vides] (https://stackoverflow.com/questions/3190464/php-check-if-any-posted-vars-are-empty-form-all-fields-required –

+0

[Vérifiez si $ _POST-value est vide] (https://stackoverflow.com/questions/9154719/check-whether-post-value-is-empty) –

+0

Si vous souhaitez avoir une valeur par défaut, vous pouvez utiliser un input type = "hidden" donc si rien n'est coché cela affichera juste une valeur par défaut –

Répondre

0

vous pouvez essayer ce code:

$conditions = []; 
$query = 'your query '; 
$conditions[] = isset($_POST['location']) ? 'artist.RegionID in ('.implode(',',$_POST['location']).')'; 
$conditions[] = isset($_POST['genre']) ? 'artist.GenreID in ('.implode(',',$_POST['genre']).')'; 
if(sizeof($conditions) > 0) query.='where '.implode(' and ',conditions); 

mais il est préférable si vous travaillez avec déclaration préparée.