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 :

[PHP-JS] Editer un produit déja existant et contenant des checkboxes


Sujet :

Langage PHP

  1. #1
    Courgette17
    Invité(e)
    Par défaut [PHP-JS] Editer un produit déja existant et contenant des checkboxes
    Voila j'aimerais faire en sorte que lorsque l'on veut modifier un produit sur mon site, on puisse visualiser les checkboxes qui ont déja été cochées lors de l'ajout du produit.
    C'est à peu près équivalent à lorsque l'on souhaite éditer un message dans un forum et que dans les options du forum on puisse cocher des checkboxes.
    Mais le problème c'est que lorsque je veux modifier le produit en question, les checkboxes n'apparaissent pas bien. Soit j'ai toutes les bonnes checkboxes cochées et celles qui doivent être décochées n'apparaissent pas du tout, soit j'ai plusieurs rangées de checkboxes.
    Jusque la je m'étais arrangé pour faire fonctionner les checkboxes avec seulement le PHP ( je n'apprécie pas trop le javascript) et je pense que ceci est encore faisable en php.

    Je crois que le problème vient de l'endroit ou je mets que l'input type checkbox doit etre décoché, j'ai essayé après les accolades possibles mais sans succès.

    Voici le 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
    $listpro = mysql_query('SELECT * FROM utilisateurs WHERE privilege="pro"');
    while ($liste = mysql_fetch_array($listpro))
    {
    $login = $liste['login'];
    $nom = $liste['nom'];
    $prenom = $liste['prenom'];
    echo '<tr><td>';
    // Si on veut modifier le produit
    if (isset($_GET['prod']))
    {
    // Si c'est un type de droit spécifique
    	if ($Droit != "All" && $Droit != "Pro" && $Droit != "Admin")
    	{
    	// J'<<explose>> le tableau $Droit en $user[1] ,en $user[2]...
    	$user = explode(",", $Droit);
    	// Pour chacune des occurences de user dans le tableau à partir de 0
    		for ($i=0; $i<=sizeof($user); $i++)
    		{
    		//Si $user[$i]  est défini
    			if (isset($user[$i]))
    			{
    			// Et si le login est bien égal à $user[$i]
    				if ($login == $user[$i])
    				// Alors coche la checkbox
    					{echo '<input type="checkbox" name="boite[]" value='.$login.' checked="checked">';}
    				// Sinon affiche une checkbox non cochée. (l'erreur vient d'ici surement) mais je ne sais pas ou placer la ligne juste en dessous V)
    					else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}
    			}
    		}
    	}//else {echo '<input type="checkbox" name="boite[]" value='.$login.' checked="checked">';}
    }	
    else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}
    echo '</td>';
    echo '<td><b>Identifiant:</b></td><td>  '.$login.' </td><td><b>Nom:</b></td><td> '.$nom.'  </td><td><b>Prénom:</b></td><td> '.$prenom.'';
    ?>

    J'espère que vous comprendrez ce que j'essaie de faire.
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    l'erreur vient d'ici :


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Alors coche la checkbox
    {echo '<input type="checkbox" name="boite[]" value='.$login.' checked="checked">';}
    
    
    //il faut mettre :
    {echo '<input type="checkbox" name="boite[]" value='.$login.' checked>';}

  3. #3
    Courgette17
    Invité(e)
    Par défaut
    Et tu ne mets pas de else?
    Avec le checked seulement, cela m'affiche toutes les checkboxes cochées.
    Je viens d'essayer avec ou sans else et avec ou sans checked mais sans succès.

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    si mais je ne t'ai pas remis tout le code .

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Et si le login est bien égal à $user[$i]
    if ($login == $user[$i])
     
    // Alors coche la checkbox
    {echo '<input type="checkbox" name="boite[]" value='.$login.' checked>';}
     
    // Sinon affiche une checkbox non cochée. 
    else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}

  5. #5
    Courgette17
    Invité(e)
    Par défaut
    Merci pour tes réponses mais l'erreur n'est visiblement pas de ce type.
    C'est équivalent le fait que l'on mette checked="checked" ou simplement checked. J'ai encore les mêmes erreurs.
    Si quelqu'un a une idée pour résoudre mon problème, qu'il n'hésite pas.

  6. #6
    Courgette17
    Invité(e)
    Par défaut
    Je me permets de vous solliciter à nouveau pour savoir si quelqu'un a une idée sur la résolution du problème ou alors n'ais je pas bien compris la solution proposée par N1bus?

    Merci d'avance

  7. #7
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Je ne vois pas vraiment d'autres solutions que celle de N1mbus (mais il faut dire que j'ai aussi un peu de mal a voir ou tu veux en venir).
    A un detail pres, $login devrait se trouver entre " ".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ($login == $user[$i])
     
    // Alors coche la checkbox
    {echo '<input type="checkbox" name="boite[]" value="'.$login.'" checked>';}
     
    // Sinon affiche une checkbox non cochée. 
    else {echo '<input type="checkbox" name="boite[]" value="'.$login.'">';}
    Mais, je doute que le probleme soit la...

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  8. #8
    Courgette17
    Invité(e)
    Par défaut
    Je vais montrer les screenshots avec des exemples.
    En fait ça me fait ça:


    Alors que j'aimerais que ça me fasse ça:



    avec les cases cochées au bon endroit, en l'occurrence pour les 4 professionnels.

  9. #9
    Membre régulier Avatar de pioule
    Profil pro
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Points : 97
    Points
    97
    Par défaut
    Pour moi le comportement du code est normal, là tu lui demandes d'afficher une case cochée ou non à chaque valeur de $Droit, si il y avait 6 valeurs tu aurait 6 cases ...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Essayes de mettre cette partie là à la fin de ta boucle While pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    } // <=Ca	
    else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}
    echo '</td>';
    echo '<td><b>Identifiant:</b></td><td>  '.$login.' </td><td><b>Nom:</b></td><td> '.$nom.'  </td><td><b>Prénom:</b></td><td> '.$prenom.'';
    ?>
    Devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}
    echo '</td>';
    echo '<td><b>Identifiant:</b></td><td>  '.$login.' </td><td><b>Nom:</b></td><td> '.$nom.'  </td><td><b>Prénom:</b></td><td> '.$prenom.'';
    } // <=Ici
    ?>

  11. #11
    Courgette17
    Invité(e)
    Par défaut
    Merci pour vos réponses.

    Ah mais c'est déjà comme ça dans mon code.
    En fait l'accolade que tu (dev_php_205) bouges c'est celle du premier if mais la faute vient de moi, je n'ai pas copié/collé la fin de la boucle while.

    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
    <b><u>Liste des professionnels:</u></b><br /><table border="1">
    <?php
    $listpro = mysql_query('SELECT * FROM utilisateurs WHERE privilege="pro"');
    while ($liste = mysql_fetch_array($listpro))
    {
    $login = $liste['login'];
    $nom = $liste['nom'];
    $prenom = $liste['prenom'];
    echo '<tr><td>';
    // Si on veut modifier le produit
    if (isset($_GET['prod']))
    {
    // Si c'est un type de droit spécifique
    	if ($Droit != "All" && $Droit != "Pro" && $Droit != "Admin")
    	{
    	// J'<<explose>> le tableau $Droit en $user[1] ,en $user[2]...
    	$user = explode(",", $Droit);
    	// Pour chacune des occurences de user dans le tableau à partir de 0
    		for ($i=0; $i<=sizeof($user); $i++)
    		{
    		//Si $user[$i]  est défini
    			if (isset($user[$i]))
    			{
    			// Et si le login est bien égal à $user[$i] 
    			if ($login == $user[$i]) 
    			// Alors coche la checkbox
    				{echo '<input type="checkbox" name="boite[]" value="'.$login.'" checked>';}
    			// Sinon affiche une checkbox non cochée. 
    			else {echo '<input type="checkbox" name="boite[]" value="'.$login.'">';}
    			}
    		}
    	}
    }	
    else {echo '<input type="checkbox" name="boite[]" value='.$login.'>';}
    echo '</td>';
    echo '<td><b>Identifiant:</b></td><td>  '.$login.' </td><td><b>Nom Complet:</b></td><td> '.$prenom.' '.$nom.' ';
    ?>
    </td></tr>
    <?php
    }
    ?></table>
    </td><tr>
    <tr><td colspan="2"><input type="hidden" name="posted" value="1">
    <input type="submit" value="Enregistrer/Mettre à jour"></td></tr>
    Oui il y a bien un tableau dans un tableau (je n'ai pas mis la fin du premier tableau vu qu'il est trop loin dans le code). Et oui il y a bien une boucle for dans une boucle while.

    Je sais pioule que le code est bon pour faire le bug et qu'il produit autant de cases que de professionnels mais j'aimerais trouver la solution pour arriver à mes fins décrit plus haut. C'est peut etre plus une question d'algorithmique qu' une erreur dans le code.

  12. #12
    Courgette17
    Invité(e)
    Par défaut
    Je suis enfin arrivé à mes fins, en changeant l'algorithme de mon code.
    Merci à tous pour vos réponses. Je suis soulagé d'avoir réussi à le faire fonctionner.
    Je poste le code au cas ou, quelqu'un voudrait faire la même chose:
    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
     
    <b><u>Liste des professionnels:</u></b><br /><table border="1">
    <?php
    $listpro = mysql_query('SELECT * FROM utilisateurs WHERE privilege="pro"');
    while ($liste = mysql_fetch_array($listpro))
    {
    $login = $liste['login'];
    $nom = $liste['nom'];
    $prenom = $liste['prenom'];
    if (isset($_GET['prod']))
    {
    // Si c'est un type de droit spécifique
    	if ($Droit != "All" && $Droit != "Pro" && $Droit != "Admin")
    	{
    			if (substr_count($Droit, $login) == 1) 
    			// Alors coche la checkbox
    				{$value = "checked";}
    			// Sinon affiche une checkbox non cochée. 
    			else {$value = "";}		
    	}
    	else {$value = "";}
    }
    else {$value = "";}
    echo '<tr><td>';
    echo '<input type="checkbox" name="boite[]" value="'.$login.'" '.$value.'>';
    echo '</td>';
    echo '<td><b>Identifiant:</b></td><td>  '.$login.' </td><td><b>Nom Complet:</b></td><td> '.$prenom.' '.$nom.' ';
    ?>
    </td></tr>
    <?php
    }
    ?>
    </table>

Discussions similaires

  1. Bibliothèque PHP création de jeu online : ça existe?
    Par smirnoff dans le forum Jeux web
    Réponses: 7
    Dernier message: 09/05/2015, 21h43
  2. [OpenOffice][Tableur] Ouvrir un document Calc existant et contenant des macros
    Par Martipit dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 23/10/2011, 16h39
  3. Réponses: 25
    Dernier message: 15/03/2007, 19h53
  4. Ouvrir un fichier excel déja existant
    Par lynal dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2006, 00h03
  5. Existe t-il des Sites en php prêt à l'emploi...tout fait !!!
    Par Chronax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 09/03/2006, 17h01

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