Switch et if imbriqué

gabyte Messages postés 10 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 8 décembre 2010 - 2 déc. 2010 à 16:10
gabyte Messages postés 10 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 8 décembre 2010 - 2 déc. 2010 à 17:27
Bonjour,

J'ai bien cherché sur le forum avant de vous solliciter
voilà la question :

peut-on mettre un if…elseif… dans un switch

pour fabriquer une référence bibliographique selon la nature (livre revue et mémoire)
tout en imbriquant deux conditions (1 ou 2 noms - ou pas de nom)

----- début ---------
switch ($row_sQl['s_nature'])
{
case 'Livre':
if ($row_sQl['s_nom']!= '')||($row_sQl['s_nom2']!= '') //if ((condition1)||(condition2))
{
$bilio = "$row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' '.$row_sQl['s_nom2'].', '.$row_sQl['s_prenom2'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.'";
}
elseif ($row_sQl['s_nom']!='')
{
$biblio = "$row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.'";
}
elseif ($row_sQl['s_nom']='')
{
$biblio =' anonyme '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.';
}
else
{
$biblio ='---------';


}

break;

case 'Revue':
if ($row_sQl['s_nom']!= '') && ($row_sQl['s_nom2']!='')
{
$bilio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' '.$row_sQl['s_nom2'].', '.$row_sQl['s_prenom2'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.';
}
elseif ($row_sQl['s_nom']!='') && ($row_sQl['s_nom2']='')
{
$biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.';
}
elseif ($row_sQl['s_nom']='')
{
$biblio =' anonyme '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.';
}
else
{
$biblio ='---------';
}
break;

case 'Mémoire ESA':
if ($row_sQl['s_nom']!= '')
{
$biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.';
}
elseif ($row_sQl['s_nom']='')
{
$biblio =' anonyme '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.';
}
else
{
$biblio ='---------';
}
break;

break;
case 'Mémoire de thèse':
if ($row_sQl['s_nom']!= '')
{
$biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' Mémoire ESA ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.';
}
elseif ($row_sQl['s_nom']='')
{
$biblio =' anonyme '.' Mémoire de thèse ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.';
}
else
{
$biblio ='---------';
}
break;

default :
if ($row_sQl['s_nom']!= '')
{
$biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' Mémoire ESA ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.';
}
elseif ($row_sQl['s_nom']='')
{
$biblio =' anonyme '.' Mémoire de thèse ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.';
}
else
{
$biblio ='---------';
}
break;
}
------ fin ----------

pour tout vous dire ça ne fonctionne pas!

Gabyte - Angers
------------------
A voir également:

5 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 déc. 2010 à 16:41
BONJOUR

tu as mis deux break qui se suivent

$biblio = '---------';
}
break;

break;
case 'Mémoire de thèse':

essaie comme ça ...

a++



<?php
//----- début --------- 
switch ($row_sQl['s_nature']) 
{ 

case 'Livre': 
   
    if ($row_sQl['s_nom']!= '')||($row_sQl['s_nom2']!= '') //if ((condition1)||(condition2)) 
    { 
    $bilio = "$row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' '.$row_sQl['s_nom2'].', '.$row_sQl['s_prenom2'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.'"; 
    } 
    elseif ($row_sQl['s_nom']!='') 
    { 
    $biblio = "$row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.'"; 
    } 
    elseif ($row_sQl['s_nom']='') 
    { 
    $biblio =' anonyme   '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_lieuedit'].' '.$row_sQl['s_editeur'].'.'; 
    } 
    else 
    { 
    $biblio  ='---------'; 


} 

break; 

case 'Revue': 

    if ($row_sQl['s_nom']!= '') && ($row_sQl['s_nom2']!='') 
    { 
    $bilio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' '.$row_sQl['s_nom2'].', '.$row_sQl['s_prenom2'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.'; 
    } 
    elseif ($row_sQl['s_nom']!='') && ($row_sQl['s_nom2']='') 
    { 
    $biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.'; 
    } 
    elseif ($row_sQl['s_nom']='') 
    { 
    $biblio =' anonyme   '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.'; 
    } 
    else 
    { 
    $biblio  ='---------'; 
    } 

break; 

    case 'Mémoire ESA': 
    
    if ($row_sQl['s_nom']!= '') 
    { 
    $biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.'; 
    } 
    elseif ($row_sQl['s_nom']='') 
    { 
    $biblio =' anonyme   '.' ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].' '.$row_sQl['s_nomrevue'].' n° '.$row_sQl['s_numrevue'].'.'; 
    } 
    else 
    { 
    $biblio  ='---------'; 
    }
     
    break; 

 
case 'Mémoire de thèse': 

    if ($row_sQl['s_nom']!= '') 
    { 
    $biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' Mémoire ESA ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.'; 
    } 
    elseif ($row_sQl['s_nom']='') 
    { 
    $biblio =' anonyme   '.' Mémoire de thèse ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.'; 
    } 
    else 
    { 
    $biblio  ='---------'; 
    } 

break; 

default : 

    if ($row_sQl['s_nom']!= '') 
    { 
    $biblio = $row_sQl['s_nom'].' '.$row_sQl['s_prenom'].' Mémoire ESA ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.'; 
    } 
    elseif ($row_sQl['s_nom']='') 
    { 
    $biblio =' anonyme   '.' Mémoire de thèse ('.$row_sQl['s_annee'].') '.$row_sQl['s_titre'].'.'; 
    } 
    else 
    { 
    $biblio  ='---------'; 
    } 

break; 

} 
?>
0
gabyte Messages postés 10 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 8 décembre 2010
2 déc. 2010 à 16:56
en fait ce qu'il n'aime pas c'est la double condition (excepté le double break)
----- début ----
if ($row_sQl['s_nom']!= '')||($row_sQl['s_nom2']!= '')
----- fin ----

puisque lorsque je n'en mets qu'un, ça fonctionne

Gabyte - Angers
------------------
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 déc. 2010 à 17:07
j avais pas fait gaffe

if ($row_sQl['s_nom']!= '')||($row_sQl['s_nom2']!= '')
----- fin ----

pourquoi tu ecris pas

if ( $row_sQl['s_nom']!= '' || ($row_sQl['s_nom2']!= '' ) ...

a++
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 déc. 2010 à 17:09

if ( $row_sQl['s_nom']!= '' || $row_sQl['s_nom2']!= '' ) 


excuses une erreur de frappe au dessus

...

a++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gabyte Messages postés 10 Date d'inscription mercredi 3 novembre 2010 Statut Membre Dernière intervention 8 décembre 2010
2 déc. 2010 à 17:27
et bien c'est parfait
merci

si je résume (en dehors d'autres erreurs de syntaxe) il est possible d'imbriquer

des if, elseif, else dans des switch - et inversement


Gabyte - Angers
------------------
0
Rejoignez-nous