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 :

Tableau et affichage [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Par défaut Tableau et affichage
    Salut,

    Je remplis un tableau en PHP à partir de 2 requêtes SQL ensuite je l'affiche dans une liste déroulante (voir code ci dessous) :
    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
     
    // On cree un tableau que l'on nomme faceaface et on initialise la variable $i avec la valeur 0
    	$faceaface = array();
    	$i = 0;
     
    	// Requete permettant de charger les combattants que notre combattant a battu
    	$query5 = "SELECT Nom_k1, Prenom_k1, Num_fighter_k1 FROM combat_k1, combattants_k1 WHERE Num_fighter_k1 = Num_Fighter2_k1 AND Num_Fighter1_k1 = '$ligne[Num_fighter_k1]'
    	GROUP BY Nom_k1, Prenom_k1, Num_fighter_k1 ORDER BY Prenom_k1, Nom_k1";
    	$result5 = mysql_query($query5) or die (mysql_error());
     
    	// On rempli le tableau avec les combattants qu'a battu notre combattant
    	while ($ligne5 = mysql_fetch_array($result5)) {
    		$faceaface[$i] = $ligne5['Prenom_k1'].' '.$ligne5['Nom_k1'].' '.$ligne5['Num_fighter_k1'];
    		$i = $i + 1;
    	}
     
    	// On se positionne a la fin du tableau
    	end ($faceaface);
     
    	// On initialise la variable $i avec la position du tableau + 1 pour reprendre le remplissage du tableau a la suite du premier
    	$i = key($faceaface) + 1;
     
    	// Requete permettant de charger les combattants contre qui notre combattant a perdu
    	$query6 = "SELECT Nom_k1, Prenom_k1, Num_fighter_k1 FROM combat_k1, combattants_k1 WHERE Num_fighter_k1 = Num_Fighter1_k1 AND Num_Fighter2_k1 = '$ligne[Num_fighter_k1]'
    	GROUP BY Nom_k1, Prenom_k1, Num_fighter_k1 ORDER BY Prenom_k1, Nom_k1";
    	$result6 = mysql_query($query6) or die (mysql_error());
     
    	while ($ligne6 = mysql_fetch_array($result6)) {
    		$faceaface[$i] = $ligne6['Prenom_k1'].' '.$ligne6['Nom_k1'].' '.$ligne6['Num_fighter_k1'];
    		$i = $i + 1;
    	}
     
    	// On tri le tableau
    	sort($faceaface);
     
    	// Partie permettant de voir les faces a faces ?>
     
    	<form method="post" action="http://www.jjb-france.com/K-1/affiche_faceaface.php">
     
    		<p><input type="hidden" name="Mec1" value="<?php echo $ligne['Num_fighter_k1']; ?>" /></p>
     
    		<p><label for="mec2"><span class="texte_gras">Voir les Faces &agrave; Faces de <?php echo stripslashes($ligne['Prenom_k1']); ?> <?php echo stripslashes($ligne['Nom_k1']); ?> avec :</span></label>
     
    		<select name="Mec2" id="mec2" class="liste2">
    		<?php // On parcourt le tableau
    		foreach ($faceaface AS $i => $valeur) { ?>
    		<option value="<?php echo $val['Num_fighter_k1']; ?>"><?php echo $faceaface[$i]; ?></option>
    		<?php } ?>
    		</select></p>
     
    		<p><input type="submit" value="OK" title="Valider" /></p>
     
    	</form>
    Requete 1 : affiche les mecs qu'il a battu
    Requete 2 : affiche les mecs qui l'ont battu

    Premier problème : comment faire pour que les mecs qui sortent de la requete 1 n'apparaissent pas dans la requete 2 ? Sinon ça va faire des doublons.

    Deuxième problème :
    Il faut que je récupère les valeurs $ligne5['Num_fighter_k1'] et $ligne6['Num_fighter_k1'] de mon tableau pour les affecter à la "value" de ma liste déroulante mais je ne sais pas si on peut prendre un bout de la chaine dans un tableau (genre les 3 derniers caractères) ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 215
    Par défaut
    Premier problème : en SQL, la condition NOT IN (select ... ) peut être appliquée, et devrait pouvoir te servir dans le cas présent.

    Deuxième problème : oui, tu peux très bien demander une sous-chaîne d'une chaîne, même si c'est un élément d'un tableau.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Par défaut
    J'y avais pas pensé mais des fois pour mon deuxième pb, la création d'un tableau a 3 dimension serait la solution.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Par défaut
    J'ai pas mal cherché sur le net pour une solution mais je n'ai pas trouvé.
    Si je créé un tableau à 3 dimensions et que je veux le remplir, comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // On rempli le tableau avec les combattants qu'a battu notre combattant
    	while ($ligne5 = mysql_fetch_array($result5)) {
    		$faceaface[$i][$j][$k] = ?????;
    		$i = $i + 1;
    		$j = $j + 1;
    		$k = $k + 1;
    	}
    J'aimerais que i prenne la valeur $ligne5['Prenom_k1']
    J'aimerais que j prenne la valeur $ligne5['Nom_k1']
    J'aimerais que k prenne la valeur $ligne5['Num_fighter_k1']

    Que dois je mettre ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $faceaface[$i][$j][$k] = ??????;
    Merci d'avance

  5. #5
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    As tu entendu parlé des tableaux associatifs ?
    Je t'ai fait une petit exemple
    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
    <?php
     
    $faceaface = array();
     
    $Num_fighter_k1 = array( 2, 3, 1, 4);
    $Nom_k1 = array(  'Tiger', 'Lion', 'Léopard', 'Panther');
    $Prenom_k1 = array('bob', 'bill', 'Jeff', 'Katia');
     
    for( $i = 0 ; $i < 4 ; $i++){
     
    	$faceaface[$i]['Num_fighter_k1'] = $Num_fighter_k1[$i];
    	$faceaface[$i]['Nom_k1'] = $Nom_k1[$i];
    	$faceaface[$i]['Prenom_k1'] = $Prenom_k1[$i];
    }
     
    print_r($faceaface);
     
    ?>
    Comme je n'avais ta table sous la main, j'ai créé 3 tableaux. Il te suffira de remplacer la boucle for par ton while et les données des tableaux par tes valeurs $row['Prenom_k1'] ...

    Ta question est elle résolue à propos ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Par défaut
    Citation Envoyé par michel.bosseaux Voir le message
    Premier problème : en SQL, la condition NOT IN (select ... ) peut être appliquée, et devrait pouvoir te servir dans le cas présent.
    Je n'avais pas pensé à faire un "NOT IN" dans ma requête et en effet maintenant j'ai ce que je voulais.

    Citation Envoyé par riete Voir le message
    As tu entendu parlé des tableaux associatifs ?
    Je t'ai fait une petit exemple
    J'ai fait un tableau associatif et ça marche nikel !

    Merci michel.bosseaux et riete pour votre aide

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

Discussions similaires

  1. [Débutant] Créer tableau à l'affichage
    Par DelphOrka dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 07/08/2007, 13h28
  2. [AJAX] creation d'un tableau d'affichage des données
    Par highman dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/04/2007, 16h30
  3. [SQL] Affichage résultat requête dans un tableau, bouton affichage page
    Par megapacman dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 18/05/2006, 16h42
  4. tableau et affichage
    Par maminova77 dans le forum C++
    Réponses: 7
    Dernier message: 25/04/2006, 02h55
  5. Saisie d'un tableau et affichage du cotenu
    Par ahous9 dans le forum C
    Réponses: 9
    Dernier message: 22/12/2005, 13h43

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