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

PHP & Base de données Discussion :

Coloration syntaxique de la bbd vers un array


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Enseignant
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut Coloration syntaxique de la bbd vers un array
    Objectif visé :
    Lors d'une inscription à un spectacle, faire en sorte que le n° de la place, enregistrée dans la bdd, soit coloré sur la page de visualisation des places de la salle, pour le distinguer des places encore disponibles.

    Lors d'un clic sur une élément de mon array, celui-ci me renvoie à un formulaire avec le n° de l'array (correspondant à un n° de place) saisie automatiquement dans un champ.
    Une fois l'ensemble du formulaire saisie, les données sont enregistrées dans ma bdd.

    Problématique :
    Je ne vois pas comment arriver à faire en sorte que la place inscrite dans la bdd, puisse à l'aide d'une requête me colorier le n° correspondant sur la page de mon array.

    Ma page visualisant les places dans la salle

    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
    $<?php //http://www.coppoweb.com/outils/phpcode/affichetableau.php
    // mettre à zéro si calcul automatique à partir de nbcol
    if (!isset($nblig)) $nblig = 0;
    // mettre à zéro si calcul automatique à partir de nblig
    if (!isset($nbcol)) $nbcol = 17;
    // dessiner les cellules ne contenant pas de valeurs en fin de tableau
    if (!isset($completer)) $completer = 1;
    // 1 => du haut vers le bas puis de la gauche vers la droite
    // 0 => de la gauche vers la droite puis du haut vers le bas
    if (!isset($vertical)) $vertical = 0;
    // récupération des n valeurs dans $place[] 
    $place = Array(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);				  
    $nb_total = sizeof($place);
    // calcul des limites
    if ($nblig != 0)
    {
        $nbcol = ceil($nb_total / $nblig);
    }
    elseif ($nbcol != 0)
    {
        $nblig = ceil($nb_total / $nbcol);
    }
    else
    {
        echo "Nb de lignes et Nb de colonnes indéfinis !";
        exit;
    }
    echo "<TABLE CELLSPACING=1>\n\n";
    $limite = $completer ? $nbcol*$nblig : $nb_total;
    if ($vertical)
    {
        // affichage vertical	
        for ($cpt = 0; $cpt < $limite; $cpt++)
        {
            $col = (int)($cpt / $nblig) + 1;
     
            $lig = ($cpt % $nblig) + 1;
     
            $valeur = ($cpt < $nb_total) ? $place[$cpt] : '';
     
            if ($col == 1) $ligne[$lig] = "<TR BGCOLOR='#DADADA'>";
            $ligne[$lig] .= "<TD>&nbsp;".$valeur."&nbsp;</TD>";
            if ($col == $nbcol) $ligne[$lig] .= "</TR>\n\n";
        }
        for ($cpt = 1; $cpt <= sizeof($ligne); $cpt++)
        {
           echo $ligne[$cpt];
        }
    }
    else
    {
        // affichage horizontal
        for ($cpt = 0; $cpt < $limite; $cpt++)
        {
            $col = ($cpt % $nbcol) + 1;
     
            $valeur = ($cpt < $nb_total) ? $place[$cpt] : '';
     
            if ($col == 1) echo "<TR BGCOLOR='#DADADA'>";		
    {
    echo "<td><a href=saisie2.php?valeur=".$valeur.">".$valeur."</a></td>\n";
    }
     
            if ($col == $nbcol) echo "</TR>\n\n";
        }
    }
    echo "</TABLE>\n";			
    ?>

    Une partie de ma page de formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	include ("connect.php");
    <form action="<?php echo "traitement2.php"; ?>" method="post">
     
        	<p>
    		<label for="numeroplace">Numéro de la place :</label>
    		<input type="text" id="id_place" name="id_place" tabindex="1" value="<?php  $valeur = $_GET['valeur']; echo $_GET['valeur']; ?>" size="5" maxlength="3" /> 
    		</p>
    ?>

    Et ensuite j'ai la page de mon traitement de formulaire qui permet l'enregistrement sur ma bdd.
    Une partie du code
    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
     
    ?php
        // Si le formulaire a été envoyé, on teste les champs...
    			if (empty($_POST['id_place'])) 
    ...
    			$message .= "Merci de saisir le numéro de la place.<br /> ";
    // si un champ est vide, on affiche le message d'erreur
    			if (strlen($message) > strlen($msg_erreur)) {
    			echo "$message </br>";
    ...
    			echo '<a href =" http://chaix.village.free.fr/test4/saisie2.php">Retour au formulaire de saisie</a> </br>'; 
    			}
     
    			// sinon c'est ok 
    			else {
    			foreach($_POST as $index => $valeur) {
    			$$index = mysql_real_escape_string(trim($valeur));
    			}
     
    			$sql = "INSERT INTO  t_place VALUES ('".$id_place."')";
    			$res = mysql_query($sql);
    // on regarde si la place existe déjà
    			$sql = "SELECT id_place FROM t_place WHERE id_place='$id_place'";
    			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    if(($resultat!=0)  and ($id_place==$id_place))// la place existe déjà, on affiche un message d'erreur
    			{
    			echo '<font color="red">Désolé, mais la place '.$id_place.' est déjà saisie dans la base.</font>';
    etc.

    Merci pour votre aide.

  2. #2
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    Ben, si lorsque tu fais l'affichage des places, tu arrives à distinguer une place occupée d'une place qui ne l'est pas, il suffit pour celle-ci d'ajouter sur l'élément html correspondant( Ici j'ai l'impression que c'est <tr>) une classe qui traduit l'occupation de la place.

    du Style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    if( place occupée) 
    { 
       echo <tr class='occuper'>...;
    }
    Tu crées ensuite un fichier css

    truc.css dans lequel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tr.occuper { background-color:red;}
    Il faut ensuite renseigner ce fichier css dans le header de la page

    <link rel="stylesheet" type="text/css" href="css/truc.css" />

  3. #3
    Membre averti
    Profil pro
    Enseignant
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut
    merci speedy_g
    je comprends bien ce que tu veux me dire.
    Mais pour le moment non, je ne peux pas faire le distinguo entre une place libre d'une autre réservée.
    Je pense qu'il me faut une requête qui me renvoie le n° de place réservée dans la bdd rejoignant le n° correspondant dans la page comportant mon array.
    Mais là, ça me dépasse un tantinet.

    Je pense qu'il me faut commencer par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT id_place FROM t_place WHERE id_place='$id_place'";
    			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    if(($resultat!=0)  and ($id_place==$id_place))// la place existe
    Mais après, c'est le flou artistique complet.

  4. #4
    Membre averti
    Profil pro
    Enseignant
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut
    Personne pour m'aider ?

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Personne pour m'aider ?
    Bouuuuh le vilain UP

    Coloration syntaxique
    Une remarque qui n'a pas grand rapport avec ton problème, mais il est bien de ne pas tout mélanger.
    Dans le développement, la coloration syntaxique c'est le faite de différencier du code avec des couleurs, selon certains critères.
    Ce n'est pas du code dont il s'agit ici, mais de l'interface, la présentation, la partie graphique, le look quoi.
    Ce n'est pas la même chose, tu en conviendras

    Je ne vois pas pourquoi tu bloque, car, comme tu as une table qui enregistre toutes les place réservées, tu peux donc faire une requête qui récupère l'intégralité de ces N° de places, les stocker ensuite dans un tableau Php.

    Ensuite, dans ta boucle principale, celle qui boucle sur toutes tes places, suffit de faire une comparaison entre le N° de place en court, et ce qu'il y a dans le tableau.
    Avoir le raisonnement suivant :
    SI la place en court se trouve dans le tableau réservé ALORS -> couleur réservée
    SINON -> couleur dispo

    Au niveau de Php, la fonction in_array() peu facilement être exploitée:

    Exemple avec in_array


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      $os = array ("Mac", "NT", "Irix", "Linux");
      if (in_array ("Linux", $os)) {
        print "Trouvé Linux";
      }
      if (in_array ("mac", $os)) {
        print "Trouvé mac";
      }
    ?>
    Exemple avec in_array et le mode strict
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <?php
    $a = array('1.10', 12.4, 1.13);
     
    if (in_array('12.4', $a, TRUE))
        echo "'12.4'  a été trouvé avec recherche stricte\n";
    if (in_array(1.13, $a, TRUE))
        echo "1.13  a été trouvé avec recherche stricte\n";
    ?>
    Exemple avec in_array et deux tableaux en paramètres


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $a = array(array('p', 'h'), array('p', 'r'), 'o');
     
    if (in_array(array ('p', 'h'), $a))
        echo "'ph' a été trouvé\n";
    if (in_array(array ('f', 'i'), $a))
        echo "'fi' a été trouvé\n";
    if (in_array('o', $a))
        echo "'o' a été trouvé\n";
    ?>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT id_place FROM t_place WHERE id_place='$id_place'";
    			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    if(($resultat!=0)  and ($id_place==$id_place))// la place existe
    Ici, c'est pourtant correcte, il manque juste à récupérer ce que renvoie MySQL, un mysql_fetch_array() par exemple.
    Au bout, 2 cas possible :
    - SI c'est le même ID que $id_place (même valeur), la place s'y trouve, donc réservée.
    - SINON rien, ALORS la place n'y est pas car pas encore réservée (donc libre)
    L'inconvénient de ce principe, c'est qu'on fait autant de requêtes qu'il y a de place, c'est donc un peu gourmand en requête.

    Chacun est bien sur libre de faire comme il veux, car les 2 techniques permettront de faire exactement la même chose au bout, mais il me semble qu'il est bien d'avoir à l'esprit les problèmes d'optimisations.

    Ceci est par contre pas logique.
    Ici, tu dis SI une carotte EST (ou égale) à une carotte. Ca sera toujours VRAI.
    Quand on fait une comparaison, faut comparer au moins 2 éléments (ou variables) différents pour savoir SI leur valeurs sont égales.

  6. #6
    Membre averti
    Profil pro
    Enseignant
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut
    Merci RunCodePhp pour tes propositions claires. Je vais bosser dans ce sens.

Discussions similaires

  1. [C#] Coloration syntaxique !
    Par UNi[FR] dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/04/2009, 09h37
  2. Coloration syntaxique vers word
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/08/2008, 10h35
  3. [debutant] coloration syntaxique
    Par demostene dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 30/06/2004, 15h16
  4. Coloration syntaxique
    Par _-Sky-_ dans le forum Composants
    Réponses: 4
    Dernier message: 03/01/2004, 21h58
  5. Coloration syntaxique ASM dans un RichEdit
    Par Crick dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2002, 01h53

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