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 :

[Tableaux] Conception d'un pack


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 201
    Par défaut [Tableaux] Conception d'un pack
    Salut je suis entrain de construire un espace permettant de crée un pack de 5 partition. Le concept se compose comme ceci, j'ai une page qui s'appelle pack_perso_cosult.php qui me permet d'afficher la liste des partitions en fonction d'un critère selectionnée sur l'etape 1 (c'est a dire la page précedente).

    Ma page se présente comme ceci.

    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
     
    // Nous devons tester que le support virtuel				
    if( count(isset($_SESSION["pack_perso"]) == 0) && count(isset($_SESSION["pack_perso"]) > 5 ))
    {
    	// Nous devons récuperer les valeurs posté par les différents formulaires des pages précedentes.
    	$sql_partition=" SELECT DISTINCT * FROM partition, instrument, genre, auteur, editeur, appartient, apour";
    	$sql_partition.=" WHERE partition.id_partition = apour.id_partition";
    	$sql_partition.=" AND instrument.id_instrument = apour.id_instrument";
    	$sql_partition.=" AND partition.id_editeur = editeur.id_editeur";
    	$sql_partition.=" AND partition.id_auteur = auteur.id_auteur";
    	$sql_partition.=" AND partition.id_partition = appartient.id_partition";
    	$sql_partition.=" AND genre.id_genre = appartient.id_genre";
    	$sql_partition.=" AND partition.etat_partition =1";
    	if(isset($_GET["niveau"]))
    	{
    		$niveau = $_GET["niveau"];
    		switch($niveau)
    		{
    			case 'deb' : $sql_partition.=" AND partition.niveau_partition=1";
    						$_SESSION["ssc"] = "deb";
     
    			break;
    			case 'int' : $sql_partition.=" AND partition.niveau_partition=2";
    						$_SESSION["ssc"] = "int";
    			break;
    			case 'conf' : $sql_partition.=" AND partition.niveau_partition=3";
    						$_SESSION["ssc"] = "conf";
    			break;
    			case 'exp' : $sql_partition.=" AND partition.niveau_partition=4";
    						$_SESSION["ssc"] = "exp";
    			break;
    		}
     
    	}
    ... // suit pour afficher les liste de partition
    }
    else
    {
     
    //On commence par passer en revue la liste des partitions du pupitre
    	foreach($_SESSION['pack_perso'] as $id_partition =>$value)
    	{
    		$sql = "SELECT * FROM partition WHERE id_partition='".$id_partition."'";
    		$result=mysql_query($sql) or die (mysql_error());
    		$ligne_partition = mysql_fetch_object($result);
    		$id_partition=$ligne_partition->id_partition;
    		$titre_partition=$ligne_partition->titre_partition;
    		$url_photo_partition=$ligne_partition->url_photo_partition;
     
    		echo $id_partition;
    		echo"<br>";
    		echo $titre_partition;
    		echo "<br>";
    		echo $url_photo_partition;
     
    	}
     
    }
    C'est ici qu'il y a mon lien ajouter au pack, qui va m'appellé ma page ou je crée la session. cette page se nomme support_virtuel.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
    if(isset($_GET["id_partition"])) // test pour verifier l'existence del'id de partition par l'url
    {
    	// récupération de la valeur de l'id de la partition
    	$valeur_id_partition=$_GET["id_partition"];
     
    	// Il faut tout d'abord verifier l'existence du support
    	if(!isset($_SESSION['pack_perso'])) // si le support n'existe pas, il faut le crée
    	{
    		// Déclaration du support virtuel
    		$_SESSION['pack_perso'] = array(); // constitution d'un tableau de session afin de pouvoir stocker les éléments représentatifs des cinq partitions
    		// Mise de l'id de partition dans le tableau de session
    		$_SESSION['pack_perso'][$valeur_id_partition] =1;
     
     
    	}
    	else // sinon le tableau de session est bien crée, ce qui signifie que nous pouvons ajouter notre ligne au tableau
    	{
    		$_SESSION['pack_perso'][$valeur_id_partition] =1;
     
    	}
     
    		echo "<script language='javascript'>window.location='index2.php?lien_menu=packs&contenu=pack_perso_etape2&".$_GET['categ']."=".$_GET['sscateg']."'</script>";
     
    }
    Une fois que l'internaute à cliquer sur le bouton, cette page crée la session ou verifie si elle existe deja, et lace dans le tableau de session l'id de la partition. Ensuite elle redirige ver ma page pack_perso_etape2.php, d'ou l'interret de mettre le test en debut de page qui verifie si le tableau est de 0 ou si il est de 5

    Le problème c'est que sa ne fonctionne pas, il ne me retourne rien de mon else, pourtant su je vais un echo $_sessions["âck_perso"] dans ma page pack_perso_etape2.php il me retourne array, mais sinon pas d'erreur particulière
    à l'ai de svp

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je ne suis pas certain d'avoir compris ton message :/
    Cependant, j'ai compris que ton if/else ne sert à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($_SESSION['pack_perso']))
    En effet, tu effectues le même traitement dans l'une et l'autre branche (le = array(); est inutile ici puisque tu lui attribues une variable juste après).
    Tu pourrais donc commencer par simplifier ton script ainsi.

    Sinon, essaie d'afficher le contenu du tableau à l'aide de print_r(), pour voir s'il contient quelque chose ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 201
    Par défaut
    Ok merci pour ta réponse, j'ai peur de ne pas avoir trop compris

    j'ai tester ce que tu m'a dis de faire, a savoir enlever mon if/else car il ne sert a rien sur la page support_virtuel.php

    sa me donne ceci maintenant quand je clique sur ajouter au pack.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(isset($_GET["id_partition"])) // test pour verifier l'existence del'id de partition par l'url
    {
    	// récupération de la valeur de l'id de la partition
    	$valeur_id_partition=$_GET["id_partition"];
     
    		$_SESSION['pack_perso'][$valeur_id_partition] = $valeur_id_partition;
    		print_r($_SESSION['pack_perso']);
    		echo "<script language='javascript'>window.location='index2.php?lien_menu=packs&contenu=pack_perso_etape2&".$_GET['categ']."=".$_GET['sscateg']."'</script>";
    		//echo'<a href="index2.php?lien_menu=packs&contenu=pack_perso_etape2&'.$_GET['categ'].'='.$_GET['sscateg'].'">retour</a>';
    }
    j'ai enlever la redirection pour tester le print_r($_SESSION["pach_perso"])
    et ca me retorune bien mon id comme index et l'id de la partition comme valeur. Donc pas de prb.
    quand je redirectionne vers la page pack_perso_etape2.php
    j'ai le meme code que plus haut à l'exception que j'ai rajouter une ligne pour tester la taille de mon tableau.

    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
     
    // Nous devons tester que le support virtuel				
    if( count($_SESSION["pack_perso"]) == 0 || count($_SESSION["pack_perso"]) < 5)
    {
     
    	$nb=count($_SESSION["pack_perso"]);
    	echo $nb;
    	// Nous devons récuperer les valeurs posté par les différents formulaires des pages précedentes.
    	$sql_partition=" SELECT DISTINCT * FROM partition, instrument, genre, auteur, editeur, appartient, apour";
    	$sql_partition.=" WHERE partition.id_partition = apour.id_partition";
    	$sql_partition.=" AND instrument.id_instrument = apour.id_instrument";
    	$sql_partition.=" AND partition.id_editeur = editeur.id_editeur";
    	$sql_partition.=" AND partition.id_auteur = auteur.id_auteur";
    	$sql_partition.=" AND partition.id_partition = appartient.id_partition";
    	$sql_partition.=" AND genre.id_genre = appartient.id_genre";
    	$sql_partition.=" AND partition.etat_partition =1";
    	if(isset($_GET["niveau"]))
    	{
    		$niveau = $_GET["niveau"];
    		switch($niveau)
    		{
    			case 'deb' : $sql_partition.=" AND partition.niveau_partition=1";
    						$_SESSION["ssc"] = "deb";
     
    		....//suite du script qui permet d'afficher mes partitions
    La resultat de la redirection est : 0 pour le retour du count, et sinon il m'affiche bien mes partitions .

    J'en conclu a : à chaque fois que je clique sur ajouter au panier, il ne me rentre pas plusieur ligne pour le tableau, il me rentre que la dernière ajouter, alors je ne comprend pas trop puisque a la base c un tableau de session.
    Je dosi mal faire un truc, je suis désolé de t'embeter.

    merci

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Autre chose, ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( count($_SESSION["pack_perso"]) == 0 || count($_SESSION["pack_perso"]) < 5))
    Peut être remplacé sans peine par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(count($_SESSION["pack_perso"]) < 5)
    Sinon, si tu as toujours la même valeur pour $valeur_id_partition, tu ne changeras jamais la taille de ton tableau (tu reprendras toujours le même index du tableau).

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/11/2011, 16h01
  2. [Conception] Table multidimensionnelle (comme pour les tableaux) ?
    Par dolfy dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 06/10/2008, 10h36
  3. Réponses: 5
    Dernier message: 30/08/2006, 14h50
  4. Réponses: 8
    Dernier message: 17/05/2006, 10h51
  5. [Conception] Utiliser les fonctions des tableaux ou plusieurs requêtes ?
    Par Derik dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/02/2006, 09h54

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