IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

un test if qui ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut un test if qui ne fonctionne pas
    Bonjour,

    lorsque que je fais se teste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($choix=='presentes' && $base_de_donnee=='table ARP' && $sous_reseau=='tous')
    j'affiche bien la premiere partie mais quand je clique sur le lien d'une autre page plus rien ne s'affiche. Si j'enleve se teste sa fonctionne correctement.


    mon code complet affiche.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    function barre_navigation ($nb_total,$nb_affichage_par_page,$debut,	$nb_liens_dans_la_barre) 
    {
    	$barre = '';
     
    	// on recherche l'URL courante munie de ses paramtre auxquels on ajoute le paramtre 'debut' qui jouera le role du premier lment de notre LIMIT
    	if ($_SERVER['QUERY_STRING'] == "") 
    	{
    		$query = $_SERVER['PHP_SELF'].'?debut=';
    	}
    	else 
    	{
    		$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
    		$nb_element = count ($tableau);
    		if ($nb_element == 1) {
    			$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
    		}
    		else
    		{
    			if ($tableau[0] == "") 
    			{
    				$query = $_SERVER['PHP_SELF'].'?debut=';
    			}
    			else 
    			{
    				$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
    			}
    		}
    	}
     
    	// on calcul le numero de la page active
    	$page_active = floor(($debut/$nb_affichage_par_page)+1);
    	// on calcul le nombre de pages total que va prendre notre affichage
    	$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
     
    	// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
    	// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
    	if ($nb_liens_dans_la_barre%2==0) 
    	{
    		$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
    		$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
    	}
    	else 
    	{
    		$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
    		$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
    	}
     
    	if ($cpt_deb1 <= 1) 
    	{
    		$cpt_deb = 1;
    		$cpt_fin = $nb_liens_dans_la_barre;
    	}
    	elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) 
    	{
    		$cpt_deb = $cpt_deb1;
    		$cpt_fin = $cpt_fin1;
    	}
    	else 
    	{
    		$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
    		$cpt_fin = $nb_pages_total;
    	}
     
    	if ($nb_pages_total <= $nb_liens_dans_la_barre) 
    	{
    		$cpt_deb=1;
    		$cpt_fin=$nb_pages_total;
    	}
     
    	// si le premier numro qui s'affiche est diffrent de 1, on affiche << qui sera un lien vers la premiere page
    	if ($cpt_deb != 1) 
    	{
    		$cible = $query.(0);
    		$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
    	}
    	else 
    	{
    		$lien='';
    	}
    	$barre .= $lien;
     
    	// on affiche tous les liens de notre barre, tout en vrifiant de ne pas mettre de lien pour la page active
    	for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) 
    	{
    		if ($cpt == $page_active) {
    			if ($cpt == $nb_pages_total) 
    			{
    				$barre .= $cpt;
    			}
    			else 
    			{
    				$barre .= $cpt.'&nbsp;-&nbsp;';
    			}
    		}
    		else 
    		{
    			if ($cpt == $cpt_fin) 
    			{
    				$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
    				$barre .= "'>".$cpt."</A>";
    			}
    			else 
    			{
    				$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
    				$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
    			}
    		}
    	}
     
    	$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
    	if (($nb_total % $nb_affichage_par_page) == 0) {
    		$fin = $fin - $nb_affichage_par_page;
    	}
     
    		// si $cpt_fin ne vaut pas la dernire page de la barre de navigation, on affiche un >> qui sera un lien vers la dernire page de navigation
    	if ($cpt_fin != $nb_pages_total) {
    		$cible = $query.$fin;
    		$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
    	}
    	else 
    	{
    		$lien='';
    	}
    	$barre .= $lien;
     
    	return $barre;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    //déclarations des variables utilisées lors du critère de sélection
    						$choix = $_POST['presence'];
    						$base_de_donnee = $_POST['base'];
    						$site = $_POST['site'];
    						$sous_reseau = $_POST['sous_res'];
    						$inf_sup = $_POST['pourcentage'];
    						$nombre = $_POST['nombre'];
     
    						if($choix=='presentes' && $base_de_donnee=='table ARP' && $sous_reseau=='tous')
    						{
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							//on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
    							$sql = 'SELECT count(*) FROM site_sous_reseau';  
    							// on exécute cette requête  
    							$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
    							// on récupère le nombre d'éléments à afficher  
    							$nb_total = mysql_fetch_array($resultat);  
    							// on teste si ce nombre de vaut pas 0  
    							if (($nb_total = $nb_total[0]) == 0) 
    							{  
    								echo 'Aucune réponse trouvée';  
    							}  
    							else
    							{
    								echo '<table><tr><td>SITE<td>SOUS-RESEAU</td></tr>';
     
    								// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
    								if (!isset($_GET['debut'])) $_GET['debut'] = 0;
    								$nb_affichage_par_page = 3;
     
    								// Préparation de la requête avec le LIMIT
    								$sql = 'SELECT site,sous_reseau FROM site_sous_reseau LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
     
    								// on exécute la requête
    								$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    								// on va scanner tous les tuples un par un
    								while ($data = mysql_fetch_array($req)) 
    								{
    									echo '<tr><td>' , htmlentities(trim($data['site'])) , '</td>';
    									echo '<td>' , htmlentities(trim($data['sous_reseau'])) , '</td></tr>';
    								}
    								// on libère l'espace mémoire alloué pour cette requête  
    								mysql_free_result ($req);
    								echo '</table>';
     
    								// on affiche enfin notre barre
    								echo '<span>'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 5).'</span>';
    							}
    							// on libère l'espace mémoire alloué pour cette requête
    							mysql_free_result ($resultat);
     
    							// on ferme la connexion à la base de données.  
    							mysql_close ();	
    						}
    					?>
    merci de votre aide
    tortue

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 76
    Points
    76
    Par défaut
    montre nous ton formulaire qui envoi sur ta page!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    voila mon form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <html>
    	<head>
    		<title>Inventaire Machines</title>
    		<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    		<link rel="stylesheet" type="text/css" title="Style" href="style.css" /> <!-- inclue la feuille de style -->
    		<script src="fonction.js" type="text/javascript" /></script><!-- inclue la page du code javascript -->
    	</head>
     
    	<body onload='sous_reseau()'>
    		<form name="form1" action=affiche.php method="POST">
    			<fieldset style="width: 500px">
    				<legend>Critères de selection : </legend>
     
    				<label>Presence :</label>
    					<select name='presence' id='presence' onchange='phrase()'>
    						<?
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							$res = mysql_query("SELECT DISTINCT presence FROM champs WHERE presence !=''");
    							echo "<option value='-1' selected>-- Veuillez choisir --</option>";
    							while($row = mysql_fetch_assoc($res)){
    								echo "<option value='".$row["presence"]."'>".$row["presence"]."</option>";
    							}
    							mysql_close();
    						?>
    					</select>
     
    				<label>Base :</label>
    					<select name='base' id='base' onchange='phrase()'>
    						<?
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							$res = mysql_query("SELECT DISTINCT base FROM champs");
    							echo "<option value='-1' selected>-- Veuillez choisir --</option>";
    							while($row = mysql_fetch_assoc($res)){
    								echo "<option value='".$row["base"]."'>".$row["base"]."</option>";
    							}
    							mysql_close();
    						?>
    					</select>
    				<br><br>
     
    				<label>Site :</label>
    					<select name='site' id='site' onchange='sous_reseau();'>
    						<?
    							//Premet de mettre une chaine de caractere en minuscule
    							function minuscules(&$chaine)
    							{$chaine=strtolower($chaine);} 
    							//teste du site de l'utilisateur
    							$site = 'PARIS';
    							minuscules(&$site);
     
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							$res = mysql_query("SELECT DISTINCT site FROM site_sous_reseau WHERE site NOT LIKE '$site' ORDER BY site");
    							echo "<option value='$site'>$site</option>";
    							while($row = mysql_fetch_assoc($res)){
    								echo "<option value='".$row["site"]."'>".$row["site"]."</option>";
    							}
    							mysql_close();
    						?>
    					</select>
     
    				<label>Sous-reseau :</label>
    					<div id='sous_reseau' style='display:inline'>
    						<select name='sous_res' id='sous_res' onchange='phrase()'>
    						</select>
    					</div>
    				<br><br>
     
    				<label>Signe :</label>
    					<select name='pourcentage' id='pourcentage' onchange='phrase()'>
    						<?
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							$res = mysql_query("SELECT DISTINCT pourcentage FROM champs");
    							echo "<option value='-1' selected>-- Veuillez choisir --</option>";
    							while($row = mysql_fetch_assoc($res)){
    								echo "<option value='".$row["pourcentage"]."'>".$row["pourcentage"]."</option>";
    							}
    							mysql_close();
    						?>
    					</select>
     
    				<label>Nombre :</label>
    					<select name='nombre' id='nombre' onchange='phrase()'>
    						<?
    							mysql_connect("localhost","etu","lannion");
    							mysql_select_db("bddetu");
    							$res = mysql_query("SELECT DISTINCT nombre FROM champs");
    							echo "<option value='-1' selected>-- Veuillez choisir --</option>";
    							while($row = mysql_fetch_assoc($res)){
    								echo "<option value='".$row["nombre"]."'>".$row["nombre"]."</option>";
    							}
    							mysql_close();
    						?>
    					</select>
    				<br><br>
     
    					<div id='phrase' style='display:inline'>
    					</div>
     
    					<input type="image" src="images/loupe.jpeg" title="envoyer" onMouseOver='phrase()'>
    			</fieldset>
    		</form>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec var_dump(), controle ce que valent tes 3 variables quand ton if ne passe pas.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    je reçois bien les bonnes valeurs du test mais il doit avoir une autre valeur qui doit manquer car g bien ma première page mais lorsque $_GET['debut'] est égale a une valeur je n'ai plus de tableau.

    J'ai essaye de faire un teste avec $_GET['debut']==''

    mais ca fait la même chose.

    je ne vois pas trop. Aussi quand cela ne passe pas par la boucle j'ai regardé les valeurs et je reçoit des valeurs sélectionnées.

    merci de vous intéresser a mon problème

    tortue

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    g bien ma première page mais lorsque $_GET['debut'] est égale a une valeur je n'ai plus de tableau.
    Ce que tu décris n'est pas très clair du tout : avec 100 lignes de code en vrac c'est un peu difficile pour nous de savoir ce que c'est "la premiere page", le "tableau", et a quoi sert $_GET['debut'] dans tout ca.

    Est-ce que tu pourrais nous décrire un peu plus explicitement la structure de ta navigation et ton problème ?

    Je suspecte quand meme quelque chose : 3 valeurs sont envoyés depuis ton formulaire vers la page de destination. Mais pense bien qu'au dela de cette page, ces valeurs n'existent plus.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    Salut,
    mon code n'est pas très clair même en le regardant. la variable $_GET['debut'] va me transmettre le nombre de page par url.

    Je suspecte quand même quelque chose : 3 valeurs sont envoyés depuis ton formulaire vers la page de destination. Mais pense bien qu'au delà de cette page, ces valeurs n'existent plus.
    je pense que tu as raison et comment je pourrais garder la valeur de c'est variable avec var_dump() ?

    car j'ai fait un autre teste en mettant une valeur dans ma requête et cela fait la même chose.

    tortue

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu veux faire survivre une donnée pendant la navigation, il faut utiliser des sessions PHP.

    var_dump() est uniquement une fonction pour debugger

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    dak je vais essayer par session merci sabotage pour ton aide

    tortue

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    Lorsque je fais un session_start en début de script je ne reçois aucune valeur en $_SESSION mais je reçois en $_POST


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
     
    <?php session_start();
    echo '<html>'; 
    	echo '<body>';
     
    		echo '<head>';
    			echo '<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />';
    			echo '<link rel="stylesheet" type="text/css" title="Style" href="style.css" />';
    		echo '</head>';
     
    		echo '<table class="sample">';
    			echo '<td>';
    				echo '<div>';				
    					include 'fonctions_recherche.php';
    					$temps_debut = getmicrotime();
     
    					////enregistrement d'une variable de session pour la requête libre
    					$requete_libre = $_SESSION['requete_libre'];
    					////enregistrement des variables de session utilisées lors du critère de sélection
    					$choix = $_SESSION['presence'];
    					$base_de_donnee = $_SESSION['base'];
    					$site = $_POST['site'];
    					$sous_reseau = $_SESSION['sous_res'];
    					$inf_sup = $_SESSION['pourcentage'];
    					$nombre = $_SESSION['nombre'];
     
    					echo "$choix";
    					echo "$base_de_donnee";
    					echo "$site";
    					echo "$sous_reseau";
    					echo "$inf_sup";
    					echo "$nombre";

  11. #11
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonsoir,
    Il faut d'abord déclarer ta variable de $_SESSION et ensuite tu peux l'utiliser :
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['presence'] = $_POST['presence'];
    EDIT : Un petit cours sur les sessions

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2009
    Messages : 70
    Points : 59
    Points
    59
    Par défaut
    merci pour votre aide

    tortue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test avec un if qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 1
    Dernier message: 13/01/2012, 13h11
  2. test.exe qui ne fonctionnent pas sur les autres machines
    Par sboumediene dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/06/2011, 08h06
  3. Réponses: 8
    Dernier message: 30/03/2009, 12h22
  4. Un test if qui ne fonctionne pas correctement
    Par Shinjuku dans le forum Langage
    Réponses: 6
    Dernier message: 26/02/2008, 10h52
  5. [RegEx] Test d'un format spécifique qui ne fonctionne pas
    Par Alvaten dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2008, 08h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo