PHP - MySQL

Résolu
hakim_fth Messages postés 157 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour les amis,

Avez-vous SVP une idée sur comment je peux obtenir le résultat ci-dessous? j'ai beaucoup essayé mais je n'ai trouvé aucune piste.

J'utilise le code PHP et MySQL

11 réponses

  1. hakim_fth Messages postés 157 Statut Membre
     
    Bonsoir,

    Merci beaucoup Jordane,

    C'est presque la même chose sauf que je n'ai malheureusement pas pu l'adapter :(
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Et bien... Qu'as tu essayé ?
      Si tu ne nous montres pas ton code... Impossible pour nous de t'aider à le corriger..

      Nb: pour poster ton code sur le forum, tu devras utiliser les balises de code.
      Explications à lire entièrement, disponibles ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
      0
  2. hakim_fth Messages postés 157 Statut Membre
     
    Voici ce que j'ai pu trouver. Dans mon cas je n'ai pas besoin de la somme, je n'ai besoin que des combinison, j'ai essayé toute la nuit mais rien :(

    <html> 
    <head><title> Combinaisons </title> 
    <body> 
    
    <?php 
    //Exemple sur le tableau suivant : 
    $arr = array('A', 'B','C','D');  
    // compte le nombre d'éléménts 
    $n = count($arr); 
    
    // Tableau de sortie contenant les combinaisons possibles 
     $sortie = array(); 
     // Liste des combinaisons : 
     for($i=2;$i<=2;$i++) {  
      lstcombinaison(",",$arr,$i); 
     } 
    
    // Calcul des sommes de chaque combinaison 
    $tbl_liste_somme=sommeTbl($sortie); 
      
    
    //-------------------------------------------------------------// 
    //           AFFICHAGE DU RESULTAT                             // 
    //-------------------------------------------------------------// 
    echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> 
      <tr><th>Ville de départ</th><th>Ville d'arrivée	</th> 
      </tr>"; 
    for ($l=0;$l<count($tbl_liste_somme);$l++){ 
    echo "<tr>"; 
    Echo "<td>".$tbl_liste_somme[$l]['combinaison']."</td><td></td>"; 
    echo "</tr>"; 
    } 
    echo "</table>"; 
    
    
    //-------------------------------------------------------------// 
    //                 FONCTIONS                                   // 
    //-------------------------------------------------------------// 
    function lstcombinaison($debut,$tags,$profondeur) { 
    // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
       global $sortie; 
       if($profondeur == 0) { 
          array_push($sortie,$debut); 
          return; 
       } 
       $n = count($tags); 
       for($i=0;$i<$n;$i++) { 
          lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); 
       } 
      } 
       
    function Factorielle($number){ 
     $retour = 1; 
     if ($number>1) { 
      $retour = Factorielle($number-1); 
     } 
     return $number*$retour; 
    } 
      
    function sommeTbl($arr){ 
    // Calcule la somme de chaque combinaison 
    $n = count($arr); 
    $tbl_somme = array(); 
     for($i=0;$i<$n;$i++) {  
      //Combinaison 
      $tbl_somme[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); 
      //Somme 
      $explode_val=explode(",",$arr[$i]); 
      $sum = array_sum($explode_val); 
      $tbl_somme[$i]['somme'] = $sum; 
      } 
    return $tbl_somme; 
    }  
    
    ?> 
    </body> 
    </html> 
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      <!Doctype html>
      <html> 
        <head>
          <title> Combinaisons </title> 
          <meta charset="utf-8">
        </head>
        <body> 
      
          <?php 
          //Exemple sur le tableau suivant : 
          $arr = array('A', 'B','C','D');  
          // compte le nombre d'éléménts 
          $n = count($arr); 
      
          // Tableau de sortie contenant les combinaisons possibles 
           $sortie = array(); 
           // Liste des combinaisons : 
           for($i=2;$i<=2;$i++) {  
            lstcombinaison(",",$arr,$i); 
           } 
      
          // Calcul des sommes de chaque combinaison 
          $tbl_liste_somme=getTbl($sortie); 
            
      
          //-------------------------------------------------------------// 
          //           AFFICHAGE DU RESULTAT                             // 
          //-------------------------------------------------------------// 
          echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'> 
            <tr><th>Ville de départ</th><th>Ville d'arrivée	</th> 
            </tr>"; 
          for ($l=0;$l<count($tbl_liste_somme);$l++){ 
            $combi = explode(',',$tbl_liste_somme[$l]['combinaison']);
            echo "<tr>"; 
            foreach($combi as $C){
              echo "<td>".$C."</td>"; 
            }
      
            echo "</tr>"; 
          } 
          echo "</table>"; 
      
      
          //-------------------------------------------------------------// 
          //                 FONCTIONS                                   // 
          //-------------------------------------------------------------// 
          function lstcombinaison($debut,$tags,$profondeur) { 
          // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
             global $sortie; 
             if($profondeur == 0) { 
                array_push($sortie,$debut); 
                return; 
             } 
             $n = count($tags); 
             for($i=0;$i<$n;$i++) { 
                lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); 
             } 
            } 
             
          function Factorielle($number){ 
           $retour = 1; 
           if ($number>1) { 
            $retour = Factorielle($number-1); 
           } 
           return $number*$retour; 
          } 
            
          function getTbl($arr){ 
          // Calcule la somme de chaque combinaison 
          $n = count($arr); 
          $tbl_res = array(); 
           for($i=0;$i<$n;$i++) {  
            //Combinaison 
            $tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); 
            } 
          return $tbl_res; 
          }  
      
          ?> 
        </body> 
      </html> 
          
      0
  3. hakim_fth Messages postés 157 Statut Membre
     
    ça marche très bien, merci Jordane

    Je ne sais pas si j'aurai la possibilité de mettre le résultat (Ville de départ) et (Ville d'arrivée) dans le value d'un input text comme ce que j'ai fait sur l'exemple ci-dessous, mais je veux que chaque input text aura son propre name

    <!Doctype html>
    <html>
    <head>
    <title> Combinaisons </title>
    <meta charset="utf-8">
    </head>
    <body>

    <?php
    //Exemple sur le tableau suivant :
    $arr = array('A', 'B','C','D');
    // compte le nombre d'éléménts
    $n = count($arr);

    // Tableau de sortie contenant les combinaisons possibles
    $sortie = array();
    // Liste des combinaisons :
    for($i=2;$i<=2;$i++) {
    lstcombinaison(",",$arr,$i);
    }

    // Calcul des sommes de chaque combinaison
    $tbl_liste_somme=getTbl($sortie);

    //-------------------------------------------------------------//
    // AFFICHAGE DU RESULTAT //
    //-------------------------------------------------------------//
    echo "<table border=1 cellpading=0 cellspacing=0 collapse='collapse'>
    <tr><th>Ville de départ</th><th>Ville d'arrivée </th>
    </tr>";
    for ($l=0;$l<count($tbl_liste_somme);$l++){
    $combi = explode(',',$tbl_liste_somme[$l]['combinaison']);
    echo "<tr>";
    foreach($combi as $C){
    echo "<td><input name='depart[]' type='text' value='".$C."'/></td>";
    }

    echo "</tr>";
    }
    echo "</table>";

    //-------------------------------------------------------------//
    // FONCTIONS //
    //-------------------------------------------------------------//
    function lstcombinaison($debut,$tags,$profondeur) {
    // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
    global $sortie;
    if($profondeur == 0) {
    array_push($sortie,$debut);
    return;
    }
    $n = count($tags);
    for($i=0;$i<$n;$i++) {
    lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1);
    }
    }

    function Factorielle($number){
    $retour = 1;
    if ($number>1) {
    $retour = Factorielle($number-1);
    }
    return $number*$retour;
    }

    function getTbl($arr){
    // Calcule la somme de chaque combinaison
    $n = count($arr);
    $tbl_res = array();
    for($i=0;$i<$n;$i++) {
    //Combinaison
    $tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1);
    }
    return $tbl_res;
    }

    ?>
    </body>
    </html>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu sais que tu n'as que deux données dans l'array $combi

      donc au lieu de faire une boucle
       foreach($combi as $C){
              echo "<td><input name='depart[]' type='text' value='".$C."'/></td>"; 
            }
      

      , tu peux traiter chaque items de l'array séparément
       echo "<td><input name='depart[]' type='text' value='".$combi[0]."'/></td>"; 
       echo "<td><input name='arrivee[]' type='text' value='".$combi[1]."'/></td>"; 
      
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. hakim_fth Messages postés 157 Statut Membre
     
    Voici ce que j'ai eu comme résultat (données dupliquées)

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Avec quel code ... ??
      N'aurais tu pas laissé la boucle ???
      0
  6. hakim_fth Messages postés 157 Statut Membre
     
    Oui, c'est résolu une fois la boucle est supprimée.
    Je te remercie infiniment Jordane45 pour ton aide et support habituels.

    Je marque comme résolu :)

    Voici le code que j'ai utilisé

    <!Doctype html>
    <html> 
      <head>
        <title> Combinaisons </title> 
        <meta charset="utf-8">
      </head>
      <body> 
    
        <?php 
        //Exemple sur le tableau suivant : 
        $arr = array('A', 'B','C','D');  
        // compte le nombre d'éléménts 
        $n = count($arr); 
    
        // Tableau de sortie contenant les combinaisons possibles 
         $sortie = array(); 
         // Liste des combinaisons : 
         for($i=2;$i<=2;$i++) {  
          lstcombinaison(",",$arr,$i); 
         } 
    
        // Calcul des sommes de chaque combinaison 
        $tbl_liste_somme=getTbl($sortie); 
          
    
        //-------------------------------------------------------------// 
        //           AFFICHAGE DU RESULTAT                             // 
        //-------------------------------------------------------------// 
        echo "<table border=0 cellpading=0 cellspacing=0 collapse='collapse'> 
          <tr><th>Ville de départ</th><th>Ville d'arrivée </th> 
          </tr>"; 
        for ($l=0;$l<count($tbl_liste_somme);$l++){ 
          $combi = explode(',',$tbl_liste_somme[$l]['combinaison']);
          echo "<tr>"; 
            echo "<td><input name='depart[]' type='text' value='".$combi[0]."'/></td>"; 
      echo "<td><input name='arrivee[]' type='text' value='".$combi[1]."'/></td>"; 
    
          echo "</tr>"; 
        } 
        echo "</table>"; 
    
    
        //-------------------------------------------------------------// 
        //                 FONCTIONS                                   // 
        //-------------------------------------------------------------// 
        function lstcombinaison($debut,$tags,$profondeur) { 
        // Script origina (légèrement modifié) : http://www.phpsources.org/scripts317-PHP.htm //
           global $sortie; 
           if($profondeur == 0) { 
              array_push($sortie,$debut); 
              return; 
           } 
           $n = count($tags); 
           for($i=0;$i<$n;$i++) { 
              lstcombinaison($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1); 
           } 
          } 
           
        function Factorielle($number){ 
         $retour = 1; 
         if ($number>1) { 
          $retour = Factorielle($number-1); 
         } 
         return $number*$retour; 
        } 
          
        function getTbl($arr){ 
        // Calcule la somme de chaque combinaison 
        $n = count($arr); 
        $tbl_res = array(); 
         for($i=0;$i<$n;$i++) {  
          //Combinaison 
          $tbl_res[$i]['combinaison'] = substr(substr($arr[$i],1),0,-1); 
          } 
        return $tbl_res; 
        }  
    
        ?> 
      </body> 
    </html>
    0
  7. hakim_fth Messages postés 157 Statut Membre
     
    Bonjour,

    Y-a-t il s'il vous plait la possibilité de remplir le array dynamiquement depuis une base de données SQL avec le moteur PDO ?
    0
  8. hakim_fth Messages postés 157 Statut Membre
     
    Bonjour,

    Y-a-t il s'il vous plait la possibilité de remplir le array('A','B','C','D') dynamiquement depuis une de données SQL avec le moteur PDO ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      C'est à dire ??

      Remplir quel array .. avec quoi exactement ???
      0
  9. hakim_fth Messages postés 157 Statut Membre
     
    Les valeurs: A,B,C,D sont stockés sur une table nommée Ville. Je veux les récupérer depuis la table en utilisant PDO et PHP pour avoir: array('A','B','C','D')
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Et bien oui, il te suffit de faire une requête SQL de l'exécuter via PDO et de faire un fetch du résultat pour stocker les données dans un array.
      0
  10. hakim_fth Messages postés 157 Statut Membre
     
    Malheureusement ça n'a pas marché, voici ce que j'ai fait

    Requête SQL
    function Combinaisons(){
    	$cnx = Connexion();
    	$req=$cnx->prepare ("SELECT * FROM villes");
        $req->execute();
    	return $req->fetchAll();
    }


    Code PHP
    <?php 
        foreach(Combinaisons() as $C) {
    			$A = $C['ville'].",";
    	}
    
        $arr = array($A);  
        // compte le nombre d'éléménts 
        $n = count($arr); 
    .
    .
    .
    ?>
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      $arr = array();  
      foreach(Combinaisons() as $C) {
       $arr[] = $C['ville'];
      }
      
          
      
      
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Tu peux aussi le faire sans boucle...

        function getVilles(){
        	$cnx = Connexion();
        	$req=$cnx->prepare ("SELECT ville FROM villes");
            $req->execute();
        	return $req->fetchAll(PDO::FETCH_COLUMN);
        }
        


        et donc
        $arr = getVilles();
        
        0
  11. hakim_fth Messages postés 157 Statut Membre
     
    ça marche bien.

    Merci infiniment Jordan :)
    0