Mon tableau ne s'affiche pas.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mon tableau ne s'affiche pas.

Re: Mon tableau ne s'affiche pas.

par Jalance » 19 juin 2013, 23:48

Merci moogli,
Le dernier code me donnait exactement ce que je voulais si j'inscrivais ma première table en "array" mais manuellement. Je tente maintenant de l'ajuster avec une requête qui irait chercher les mêmes indications via ma BDD.
Je vais aussi tenter de faire la requête SQL que tu me proposes.
J'ai essayer de tester ta requête PDO pour savoir ce qu'elle renvoie mais cette erreur s'affiche: Parse error: syntax error, unexpected '[' on line 86 La ligne 86 étant: "$data = [];"

J'aimerais bien voir ce qu'elle renvoie.
Merci.

Re: Mon tableau ne s'affiche pas.

par moogli » 19 juin 2013, 22:07

et c'est quoi ton dernier code ?

essai de le formater un peu c'est pas simple la :)

le dédoublonnage pourrait se faire ainsi
<?php
$db = new PDO('mysql:host=localhost;dbname=db_name', $userbdd, $passbdd);

$sth = $db->query('SELECT Valeurs FROM Valeur');
$result = $sth->fetchAll();
$data = [];
$doublon = [];
foreach ($result as $value) {
    if (array_search($value, $data) !== false) {
        // c'est un doublon
        $doublon[] = $value;
    } else {
        $data[] = $value;
    }
}
asort($doublon);
echo 'liste des doublons : <br />';
foreach ($doublon as $d) {
    echo $d . '<br />';
}

?>
Il y a surement moyen de la faire en sql (tu compte le nombre d'élément en groupant par valeur et tu restreint par nombre > 1).


@+

Re: Mon tableau ne s'affiche pas.

par Jalance » 19 juin 2013, 21:10

Merci moogli,
J'ai fait la suppression mais, encore une fois, rien ne s'affiche. Juste une page blanche. :?

Re: Mon tableau ne s'affiche pas.

par moogli » 19 juin 2013, 19:43

ben il sert a quoi le mot array la ?

tu n'a pas besoin de requête préparée utilise directement query
<?php
$sth = $db->query('SELECT Valeurs FROM Valeur');
$result = $sth->fetchAll();
?>

@+

Re: Mon tableau ne s'affiche pas.

par Jalance » 19 juin 2013, 16:54

Salut moogli,

D'après ta suggestion, j'ai donc crée une nouvelle table avec les valeurs dans la même ligne:

ID-Num_col--Valeurs-date_val
35-- 1-- 1-- 2012-04-07
35-- 2-- 3-- 2012-04-07
35-- 3-- 11-- 2012-04-07
35-- 4-- 27-- 2012-04-07
35-- 5-- 31-- 2012-04-07
35-- 6-- 41-- 2012-04-07
37-- 1-- 1-- 2012-04-07
37-- 2-- 3-- 2012-04-07
37-- 3-- 6-- 2012-04-07
37-- 4-- 11-- 2012-04-07
37-- 5-- 32-- 2012-04-07
37-- 6-- 34-- 2012-04-07
38-- 1-- 41-- 2013-03-23
38-- 2-- 34-- 2013-03-23
38-- 3-- 27-- 2013-03-23
38-- 4-- 11-- 2013-03-23
38-- 5-- 6-- 2013-03-23
38-- 6-- 3-- 2013-03-23

Voici ma requête:
<?php


$db= new PDO('mysql:host=localhost;dbname=db_name', $userbdd, $passbdd);

$sth = $db->prepare('SELECT Valeurs FROM Valeur');
$sth->execute(array);
$result = $sth->fetchAll();        
                     $lignes = array($result);                 
                     $result = array();    foreach($lignes as $ligne1) 
                  {  
                       for($i=0;$i<(count($ligne1)-1);$i++)       
                        {            for($j=$i+1;$j<count($ligne1);$j++) 
                                   {   
                                                if(isset($result[$ligne1[$i].'-'.$ligne1[$j]])) 
                                                                   $result[$ligne1[$i].'-'.$ligne1[$j]]++;  
                                                                                 else   
                                                                                  $result[$ligne1[$i].'-'.$ligne1[$j]] = 1; 
                                                                                                           
                                                                                                            }      
                                                                                                              }   
                                                                                                               }    $result = array_diff($result,array(1)); 
                                                                                                                  arsort($result);    foreach($result as $key => $doublons)  
                                                                                                                    { 
                                                                                                                          
                                                                                                                           echo '"' . $key . '" (' .  $doublons . ')<br />';    }
           
?>
Ce qui me donne cette erreur: Parse error: syntax error, unexpected T_ARRAY_CAST on line 86
La ligne 86 étant: "$sth->execute(array);"
J'attends tes précieux conseils.
Merci d'avance.

Re: Mon tableau ne s'affiche pas.

par moogli » 18 juin 2013, 18:58

Salut,


Je pense que le problème viens plutôt de la requête. Il te faut un "ou" logique et non un "et" si tu veux que cela soit dans l'une ou l'autre des colonnes.

A priori je dirais que ton problème vient aussi d'un problème de conception (modélisation) de la base.

Vu le nom des colonne je suppose qu'il s'agit de la même donnée dans ce cas une table pour avoir les valeurs en lignes est préférable plutôt que me colonne et simplifierais ta requête ;)



@+

Mon tableau ne s'affiche pas.

par Jalance » 18 juin 2013, 17:54

Bonjour à tous,

J'ai une table Mysql nommé "Valeur" qui ressemble à ceci:

ID_val--col1--col2--col3--col4--col5--col6

1--------6-----12----24---32---37----41

2--------1------3-----11---27---31---41

3--------3------6-----12---13---53---54

4--------1------7-----32---33---44---45

5--------6------8-----12---24---32---37

De cette table,je veux afficher les paires de chiffres identiques qui se retrouvent plus d'une fois dans cette derniière sans tenir compte des colonnes où elles se situent (ex: "6-12" se retrouve 3 fois dans la table tandis que "12-24" apparaît 2 fois). Mon problème est au niveau de l'affichage. En fait, rien ne s'affiche quand j'exécute ma requête que voici:


<?php


$db= new PDO('mysql:host=localhost;dbname=db_name', $userbdd, $passbdd);
 $sth = $db->prepare('SELECT col1, col2, col3, col4, col5 , col6 FROM Valeur WHERE ligne1= ? AND ligne2= ? AND ligne3= ? AND ligne4= ? AND ligne5= ? AND ligne6= ?');
$sth->execute(array($_GET['ligne1'], $_GET['ligne2'], $_GET['ligne3'], $_GET['ligne4'],$_GET['ligne5'], $_GET['ligne6'],));
$result = $sth->fetchAll();        
                     $lignes = array($result); 
                     $result = array();    foreach($lignes as $ligne1) 
                  {  
                       for($i=0;$i<(count($ligne1)-1);$i++)       
                        {            for($j=$i+1;$j<count($ligne1);$j++) 
                                   {   
                                                if(isset($result[$ligne1[$i].'-'.$ligne1[$j]])) 
                                                                   $result[$ligne1[$i].'-'.$ligne1[$j]]++;  
                                                                                 else   
                                                                                  $result[$ligne1[$i].'-'.$ligne1[$j]] = 1; 
                                                                                                           
                                                                                                            }      
                                                                                                              }   
                                                                                                               }    $result = array_diff($result,array(1)); 
                                                                                                                  arsort($result);    foreach($result as $key => $doublons)  
                                                                                                                    { 
                                                                                                                          
                                                                                                                           echo '"' . $key . '" (' .  $doublons . ')<br />';    }
?>
             

N'étant pas un familier du PDO pour l'instant, je galère ferme avec ce problème. Quelqu'un pourrait m'éclairer afin de résoudre mon problème.
Merci!