Probleme de logique avec des "OR" "
Résolu/Fermé
nanor21
Messages postés
16
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006
-
14 mai 2006 à 06:05
ollie314 Messages postés 145 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 26 octobre 2007 - 15 mai 2006 à 11:00
ollie314 Messages postés 145 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 26 octobre 2007 - 15 mai 2006 à 11:00
A voir également:
- Probleme de logique avec des "OR" "
- Or - Guide
- Couleur or photoshop ✓ - Forum Webmastering
- La caverne de la rose d'or netflix - Forum Cinéma / Télé
- Carre or bercy ✓ - Forum Loisirs / Divertissements
- Reboot and select proper boot device or insert boot media in selected boot device and press a key - Forum Windows
3 réponses
ollie314
Messages postés
145
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
26 octobre 2007
80
14 mai 2006 à 14:58
14 mai 2006 à 14:58
Bonjour,
Essaye cela, je ne sais pas si ça va marcher, je n'ai pas modifier grand chose...
<?php
array('Performer', 'Panel','Workshop');
array('5/26/2006','5/27/2006','5/28/2006','5/29/2006');
array('Indoor', 'Outdoor');
$where = 'WHERE (';
unset($exp); // on libère la variable au cas où elle existe et possède une valeur
if( ISSET($_POST['perfname']) && $_POST['perfname'] != '' )
{
$exp = ' (pr.PerfName="'.$_POST['perfname'].'"';
}
$where .= $exp;
if($exp){$exp = '';}
if( isset($_POST['typeperf']) AND is_array($_POST['typeperf']) )
{
foreach($_POST['typeperf'] AS $valeur)
{
if( ISSET($_POST['typeperf']) && $_POST['typeperf'] != '' )
{
if($exp) $exp .= ' OR ';
$exp .= ' pr.TypePerf="'.$valeur.'"';
}
}
$where .= $exp . ') ';
}
if($exp){$exp = '';}
if( ISSET($_POST['perfcodename']) && $_POST['perfcodename'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pr.PerfCodeName="'.$_POST['perfcodename'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( isset($_POST['date']) AND is_array($_POST['date']) )
{
foreach($_POST['date'] AS $valeur2)
{
if(ISSET($_POST['date']) && $_POST['date'] != '' )
{
if($exp) $exp .= ' OR ';
$exp .=' pf.Date="'.$valeur2.'"';
}
}
$where .= $exp . ') ';
}
if($exp){$exp='');
if(ISSET($_POST['start']) && $_POST['start'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pf.Start="'.$_POST['start'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( ISSET($_POST['end']) && $_POST['end'] != '' )
{
if($exp) $exp .= ' AND ';
$exp = ' pf.End="'.$_POST['end'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( ISSET($_POST['stage']) && $_POST['stage'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pl.Stage="'.$_POST['stage'].'"';
}
$where .= $exp;
if($exp){$exp='');
if(isset($_POST['locstage']) AND is_array($_POST['locstage']))
{
foreach($_POST['locstage'] AS $valeur3)
{
if(ISSET($_POST['locstage'])&&$_POST['locstage']!='')
{
if($exp) $exp .= ' OR ';
$exp .= ' pl.LocStage="'.$valeur3.'"';
}
}
$where = $exp . ') ';
}
if($exp){$exp='');
if( !$exp ) $where .= ' 1';
$q = 'SELECT pr.*,
pf.*,
pl.*
FROM performer AS pr
INNER JOIN performance AS pf ON pr.IDPerf=pf.IDPerf
INNER JOIN place AS pl ON pl.CodeStage=pf.CodeStage '.$where;
echo "$q";
/*
Je ne sais pas si ça va marcher mais bon essaye quad même ...
*/
?>
<?php
/*
Pour ma part j'utiliserais les fonctions currnet, key et next pour naviguer dans les tableaux
*/
do{
$val = current($_POST['tostageto']); // on recupère la valeur de la case du tableau
$key = key($_POST['stage']); // on résupère la clé
if($exp) $exp .= ' OR ';
$exp .= ' pl.LocStage="'.$val.'"';
}while(!next($_POST['stage']));
$where .= $exp.') ';
?>
Essaye cela, je ne sais pas si ça va marcher, je n'ai pas modifier grand chose...
<?php
array('Performer', 'Panel','Workshop');
array('5/26/2006','5/27/2006','5/28/2006','5/29/2006');
array('Indoor', 'Outdoor');
$where = 'WHERE (';
unset($exp); // on libère la variable au cas où elle existe et possède une valeur
if( ISSET($_POST['perfname']) && $_POST['perfname'] != '' )
{
$exp = ' (pr.PerfName="'.$_POST['perfname'].'"';
}
$where .= $exp;
if($exp){$exp = '';}
if( isset($_POST['typeperf']) AND is_array($_POST['typeperf']) )
{
foreach($_POST['typeperf'] AS $valeur)
{
if( ISSET($_POST['typeperf']) && $_POST['typeperf'] != '' )
{
if($exp) $exp .= ' OR ';
$exp .= ' pr.TypePerf="'.$valeur.'"';
}
}
$where .= $exp . ') ';
}
if($exp){$exp = '';}
if( ISSET($_POST['perfcodename']) && $_POST['perfcodename'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pr.PerfCodeName="'.$_POST['perfcodename'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( isset($_POST['date']) AND is_array($_POST['date']) )
{
foreach($_POST['date'] AS $valeur2)
{
if(ISSET($_POST['date']) && $_POST['date'] != '' )
{
if($exp) $exp .= ' OR ';
$exp .=' pf.Date="'.$valeur2.'"';
}
}
$where .= $exp . ') ';
}
if($exp){$exp='');
if(ISSET($_POST['start']) && $_POST['start'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pf.Start="'.$_POST['start'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( ISSET($_POST['end']) && $_POST['end'] != '' )
{
if($exp) $exp .= ' AND ';
$exp = ' pf.End="'.$_POST['end'].'"';
}
$where .= $exp;
if($exp){$exp='');
if( ISSET($_POST['stage']) && $_POST['stage'] != '' )
{
if($exp) $exp .= ' AND ';
$exp .= ' pl.Stage="'.$_POST['stage'].'"';
}
$where .= $exp;
if($exp){$exp='');
if(isset($_POST['locstage']) AND is_array($_POST['locstage']))
{
foreach($_POST['locstage'] AS $valeur3)
{
if(ISSET($_POST['locstage'])&&$_POST['locstage']!='')
{
if($exp) $exp .= ' OR ';
$exp .= ' pl.LocStage="'.$valeur3.'"';
}
}
$where = $exp . ') ';
}
if($exp){$exp='');
if( !$exp ) $where .= ' 1';
$q = 'SELECT pr.*,
pf.*,
pl.*
FROM performer AS pr
INNER JOIN performance AS pf ON pr.IDPerf=pf.IDPerf
INNER JOIN place AS pl ON pl.CodeStage=pf.CodeStage '.$where;
echo "$q";
/*
Je ne sais pas si ça va marcher mais bon essaye quad même ...
*/
?>
<?php
/*
Pour ma part j'utiliserais les fonctions currnet, key et next pour naviguer dans les tableaux
*/
do{
$val = current($_POST['tostageto']); // on recupère la valeur de la case du tableau
$key = key($_POST['stage']); // on résupère la clé
if($exp) $exp .= ' OR ';
$exp .= ' pl.LocStage="'.$val.'"';
}while(!next($_POST['stage']));
$where .= $exp.') ';
?>
nanor21
Messages postés
16
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
15 mai 2006
1
15 mai 2006 à 00:58
15 mai 2006 à 00:58
Excuse moi mais j'ai finalement resolu mon probleme grace a d'autres internautes,je te remercie pour le mal que tu t'es donne,je copie le code en compensation,je suis vraiment desole je trouve degueulasse de t'avoir fait travailler pour rien:
<?php // Début du code proprement dit !! array('Performer', 'Panel','Workshop'); array('5/26/2006','5/27/2006','5/28/2006','5/29/2006'); array('Indoor', 'Outdoor'); $where = 'WHERE '; $and=false; //au départ aucun type d'information n'a été détécté if(ISSET($_POST['perfname'])&&$_POST['perfname']!='') { $where .= ' pr.PerfName="'.$_POST['perfname'].'"'; $and=true; } if(isset($_POST['typeperf'])) { if (is_array($_POST['typeperf'])) { $premier = true; // A METTRE DANS LES TROIS !! $nonvide = false; foreach($_POST['typeperf'] AS $valeur) { if ($valeur != "") { if (!$nonvide) { if($and) $where .= ' AND '; //RAJOUT !!! $where .= ' ( '; $nonvide=true; } if(!$premier)// MODIF {// MODIF $where .= ' OR '; // MODIF }// MODIF else// MODIF {// MODIF $premier=false; // MODIF }// MODIF $where .= ' pr.TypePerf="'.$valeur.'"'; $and=true; } } if ($nonvide) { $where .= ' ) '; } } } if(ISSET($_POST['perfcodename'])) { if ($_POST['perfcodename']!='') { if($and) $where .= ' AND '; $where .= ' ( '; $where .= ' pr.PerfCodeName="'.$_POST['perfcodename'].'"'; $where .= ' ) '; $and=true; } } if(isset($_POST['date'])) { if (is_array($_POST['date'])) { $premier = true; // A METTRE DANS LES TROIS !! $nonvide = false; foreach($_POST['date'] AS $valeur) { if ($valeur != "") { if (!$nonvide) { if($and) $where .= ' AND '; //RAJOUT !!! $where .= ' ( '; $nonvide=true; } if(!$premier)// MODIF {// MODIF $where .= ' OR '; // MODIF }// MODIF else// MODIF {// MODIF $premier=false; // MODIF }// MODIF $where .= ' pf.Date="'.$valeur.'"'; $and=true; } } if ($nonvide) { $where .= ' ) '; } } } if(ISSET($_POST['start'])) { if ($_POST['start']!='') { if($and) $where .= ' AND '; $where .= ' ( '; $where .= ' pf.Start="'.$_POST['start'].'"'; //VERIFIER !!!!!!!!!! $where .= ' ) '; $and=true; } } if(ISSET($_POST['end'])) { if ($_POST['end']!='') { if($and) $where .= ' AND '; $where .= ' ( '; $where .= ' pf.End="'.$_POST['end'].'"'; //VERIFIER !!!!!!!!!! $where .= ' ) '; $and=true; } } if(ISSET($_POST['stage'])) { if ($_POST['stage']!='') { if($and) $where .= ' AND '; $where .= ' ( '; $where .= ' pl.Stage="'.$_POST['stage'].'"'; //VERIFIER !!!!!!!!!! $where .= ' ) '; $and=true; } } if(isset($_POST['locstage'])) { if (is_array($_POST['locstage'])) { $premier = true; // A METTRE DANS LES TROIS !! $nonvide = false; foreach($_POST['locstage'] AS $valeur) { if ($valeur != "") { if (!$nonvide) { if($and) $where .= ' AND '; //RAJOUT !!! $where .= ' ( '; $nonvide=true; } if(!$premier)// MODIF {// MODIF $where .= ' OR '; // MODIF }// MODIF else// MODIF {// MODIF $premier=false; // MODIF }// MODIF $where .= ' pl.LocStage="'.$valeur.'"'; $and=true; } } if ($nonvide) { $where .= ' ) '; } } } if($and!=true) $where .= ' 1'; $q = 'SELECT pr.*, pf.*, pl.* FROM performer AS pr INNER JOIN performance AS pf ON pr.IDPerf=pf.IDPerf INNER JOIN place AS pl ON pl.CodeStage=pf.CodeStage '.$where; echo "$q";
ollie314
Messages postés
145
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
26 octobre 2007
80
15 mai 2006 à 11:00
15 mai 2006 à 11:00
Bnojour,
No problème, je suis content que tu aies trouvé, ma solution ne devait de toute façon pas marcher ...
Bonne journée et bon courage pour la suite !!
Amicalement
Olliie314
No problème, je suis content que tu aies trouvé, ma solution ne devait de toute façon pas marcher ...
Bonne journée et bon courage pour la suite !!
Amicalement
Olliie314