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 :

Soucis d'affichage de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut Soucis d'affichage de données
    Bonjour a tous,

    Alors voila je suis un débutant en php/mysql et j'ai une léger soucis que je n'arrive pas a régler.

    Voici mon code qui consiste à récupérer des données dans une BDD et de les afficher dans un 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
    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
    <body>
    	<?php
    	// Connexion au serveur
    	mysql_connect("localhost", "root","*******") or die("erreur de connexion au serveur");
    	mysql_select_db("DMTD05") or die("erreur de connexion a la base de donnees");
     
    	// Creation et envoi de la requete
    	$sql = "SELECT * FROM animaux GROUP BY Nom";
     
    	$requete = mysql_query($sql);
     
    	// Recuperation des resultats
    	echo( "<form><table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
    	echo( "<tr>
    	<th><div align=\"center\">Nom</div></th>
    	<th><div align=\"center\">Espece</div></th>
    	<th><div align=\"center\">Cri</div></th>
    	<th><div align=\"center\">Proprietaire</div></th>
    	<th><div align=\"center\">Age</div></th>
    	<th><div align=\"center\">Choix</div></th>
    	</tr>" );
     
     
    	//mise en place d'un compteur
    	$compteur = 1;
     
    	// extraction des résultats
    	while($result = mysql_fetch_array($requete) or die(mysql_error())){
    		echo ( "<tr>\n" );
    		echo( "<td><div align=\"center\">".$result["Nom"]."</div></td>\n" );
    		echo( "<td><div align=\"center\">".$result["Espece"]."</div></td>\n" );
    		echo( "<td><div align=\"center\">".$result["Cri"]."</div></td>\n" );
    		echo( "<td><div align=\"center\">".$result["Proprietaire"]."</div></td>\n" );
    		echo( "<td><div align=\"center\">".$result["Age"]."</div></td>\n" );
    			if ($compteur == 1) {
    				echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    				$compteur++;
    				}
    			else 
    			echo( "<td><input type=\"checkbox\"></td></tr>\n" );
    	}
     
    	echo ( "<tr>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "</tr></table></form>\n" );
    	?>
     
    	</body>
    </html>
    Mais je voudrais par exemple rajouter une ligne et là le DRAME, impossible de l'afficher, pourtant j'ai mis mon code (affichage de la dernière ligne) après la boucle while mais sans succès. Si vous avez une réponse/explication, je serai ravie de l'entendre.

    Merci d'avance !

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 50
    Par défaut CSS et pas HTML
    Ca fait mal aux yeux le Html dans une boucle en plus !
    Dans un soucis d'esthétique et ce pour ne pas que tu t'embrouille, utilse xhtml et css.


    Tu veux ajouter une ligne ou ? Dans le formulaire
    C'est quoi cette ligne ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    Alors je voudrai ajouter une dernière ligne a la fin de mon tableau, c'est à dire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo ( "<tr>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
    	echo( "</tr></table></form>\n" );
    	?>
    Qui devrai ajouter à chaques cellules un bouton supr, mais malheureusement apres la boucle while je n'arrive à rien n'afficher


    Dans tout les cas avec du xhtml et du css, la syntaxe pour créer un tableau reste la même non ?

    Merci en tout cas

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ tant qu'à débuter, autant prendre de bonnes habitudes :
    -> Affichage de données dans un tableau HTML (avec Base de Données)
    -> Les tableaux (XHTML & CSS)

    2/ "sors" le code HTML du code PHP

    3/ Quant à la conception du(des) formulaire(s), tu t'y prends mal.
    Si tu veux pouvoir supprimer 1 ligne à la fois :
    Il faut 1 formulaire par ligne + un champ (hidden) contenant l'id de l'enregistrement). Sinon, le programme ne saura pas quelle ligne supprimer.

    Voici une façon de s'y prendre, si on veut pouvoir supprimer plusieurs lignes en même temps (avec un seul formulaire) :
    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
    <body>
    <?php
    	// Connexion au serveur
    	mysql_connect("localhost", "root","*******") or die("erreur de connexion au serveur");
    	mysql_select_db("DMTD05") or die("erreur de connexion a la base de donnees");
     
    	// Creation et envoi de la requete
    	$sql = "SELECT * FROM animaux GROUP BY Nom";
    	$requete = mysql_query($sql);
    ?>
    <form method="post" action="#">
    	<table>
    	<thead>
    		<tr>
    			<th>Nom</th>
    			<th>Espece</th>
    			<th>Cri</th>
    			<th>Proprietaire</th>
    			<th>Age</th>
    			<th>Suppr.</th>
    		</tr>
    	</thead>
    	<tbody>
    <?php
    	// extraction des résultats
    	while($result = mysql_fetch_array($requete) or die(mysql_error()))
    	{
    ?>
    		<tr>
    			<td><?php echo $result["Nom"]; ?></td>
    			<td><?php echo $result["Espece"]; ?></td>
    			<td><?php echo $result["Cri"]; ?></td>
    			<td><?php echo $result["Proprietaire"]; ?></td>
    			<td><?php echo $result["Age"]; ?></td>
    			<!-- checkbox, avec pour value l'id de la ligne à supprimer -->
    			<td><input type="checkbox" value="<?php echo $result["Id"]; ?>" /></td>
    		</tr>
    <?php 	} // fin while ?>
    		<tr>
    			<td colspan="6"><input type="submit" value="Valider" /></td>
    		</tr>
     
    	</tbody>
    	</table>
    </form>
     
    </body>
    </html>
    => on récupère les valeurs des checkbox cochée, et on supprime les lignes correspondantes.
    Dernière modification par Invité ; 30/10/2011 à 18h06.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    Merci de ta réponse

    J'ai une autre question au sujet de la suppression d'une ou plusieurs lignes via des checkboxes :

    voici mon 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
    <?php
    	$compteur = 1;
    	// extraction des résultats
    	while($result = mysql_fetch_array($requete) or die(mysql_error()))
    	{
     
     
    ?>
    		<tr>
     
    		<td><?php echo $result["Nom"]; ?></td>
     
    			<TD><INPUT type="checkbox" name="supprimer[]" value="<?php $result["id"] ?>"></TD>
     
    		</tr>
     
     
    <?php 	} // fin while
     
    // on teste si y a des checks de cochées
    if ((isset($_POST["supprimer"])) AND count($_POST["supprimer"]) != 0)
    {
    $ids = implode(",",$_POST["supprimer"]);
    $supprimer="DELETE  FROM `Nom` WHERE id IN ($ids)";
    mysql_query($supprimer);
    }
     
      ?>
    Quand je clique sur supprimer rien ne s'effectue :/ Pourtant j'ai l'air d'avoir bien saisie le sens de tout ce code...

    Merci à vous

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ton bout de code n'est pas suffisant pour comprendre ou corriger.
    Il faut au moins savoir comment est structuré le formulaire (où sont les balises <form> ?...)

    Cela dit, tu peux déjà vérifier le contenu de $_POST["supprimer"] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <pre>
    <?php print_r($_POST["supprimer"]); ?>
    </pre>
    PS : même si chronologiquement le traitement se fait "après" le formulaire,
    dans le fichier, il faut mettre le script AVANT le form (pour en voir le résultat après ré-affichage du formulaire).
    Je pense d'ailleurs que c'est LA solution à ton problème.

    [Edit] Tiens ! je viens de voir que j'avais oublié l'attribut name dans mon précédent code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			<td><input type="checkbox" name="supprimer[]" value="<?php echo $result["Id"]; ?>" /></td>
    Dernière modification par Invité ; 07/11/2011 à 08h47.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Deos21 Voir le message
    Quand je clique sur supprimer rien ne s'effectue
    C'est à dire ?

    Car je ne vois pas de problème.
    $ids récupère bien les id transmis (checkbox cochées)

    A part ma remarque précédente :
    Si tu fais le traitement APRES la requête, c'est normal que la modification ne s'affiche pas !
    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
    <?php
    // 1/ TRAITEMENT si "supprimer"
    // on teste si y a des checks de cochées
    if (isset($_POST["boutonSupprimer"]) && isset($_POST["supprimer"]) && (count($_POST["supprimer"]) != 0))
    {
    	// on créé une liste des id ce qui va consommer moins que ta boucle je pense
    	$ids = implode(",",$_POST["supprimer"]);
    	$supprimer="DELETE  FROM `Nom` WHERE id IN ($ids)";
    	mysql_query($supprimer);
    }
    // 2/ AFFICHAGE / ré-affichage
    // Creation et envoi de la requete
    $sql = "SELECT * FROM animaux GROUP BY Nom";
    $requete = mysql_query($sql);
    ?>

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/02/2012, 11h49
  2. [MySQL] Souci d'affichage données
    Par steph70 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 24/01/2012, 08h43
  3. Soucis d'affichage de données dans un popup DHTML
    Par Pierre54000 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 01/08/2011, 18h59
  4. Affichage de données (histograme, graphe etc.)
    Par sunshine33 dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 13/01/2004, 14h16
  5. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19

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