Souci dans requête count(discount) dans php

Résolu/Fermé
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 31 oct. 2017 à 15:21
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 28 nov. 2017 à 12:15
Bonjour,
j’ai un souci ponctuel sur une requête PHP/MySql.
Le souci est sans doute bestial (pardon, d’avance).
Je veux compter les occurrences identiques dans un champ.
Donc j’utilise
SELECT COUNT(DISTINCT champ) FROM table
Quand j’interroge via Sql dans PHPMyAdmin, j’ai la bonne réponse.
Cela doit être une broutille dans le code PHP (j’ajoute aussi la requête qui suit dans le code de la page et qui marche pour montrer que ce n’est pas un problème général).
Dans localhost, j’ai l’erreur :
Notice: Array to string conversion in D:\_xxxxxxxx\ stats-counts.php on line 91 et la ligne 91 est
echo '<p>Number of XXXX : ' . $result[1] . ' </p>';


Voici le bout de code :
$requete = $connexion->prepare("SELECT COUNT(DISTINCT Valid_sp_subsp) FROM taxabase1");

	$requete->execute();
    $result[1] = $requete->fetchAll();
	
	echo '<p>Number of XXXX : ' . $result[1] . ' </p>';
	
	echo '<p> </p>';
	echo '<p> </p>';
	echo '<blockquote><h3><a id="FAMILYTRIBES"></a>Statistics by family-group name sequences for valid species :</h3></blockquote>';
	
	echo '<table class="sortablenarrow" id="you"><tr><th>STATS BY FAMILY-GROUP NAME SEQUENCES</th><th>COUNTER TAXA</th></tr>';
	
	$requete = $connexion->prepare("SELECT Family_Tribe_seq, COUNT(Family_Tribe_seq) AS counter FROM taxabase2 WHERE Family_Tribe_seq is not null and trim(Family_Tribe_seq) != '' GROUP BY Family_Tribe_seq ORDER BY Family_Tribe_seq");
	
	$requete->execute();
    $result[1] = $requete->fetchAll();
	foreach  ($result[1] as $row) {
	
	echo '<tr><td><i>' . $row["Family_Tribe_seq"] .							
                            '</i></td><td>'. $row ["counter"] . '</td></tr>';
	}	

	echo '</table>';


Un coup de pousse serait bienvenu !
Merci d’avance

Seb


A voir également:

3 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié le 31 oct. 2017 à 17:13
bonjour, le message d'erreur t'indique que $result[1] est une array.
peut-être pensais-tu faire:
 $result = $requete->fetchAll();
echo '<p>Number of XXXX : ' . $result[0][0] . ' </p>';
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 oct. 2017 à 16:48
Bonjour,

1 - https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

2 -
$sql = "SELECT COUNT(DISTINCT Valid_sp_subsp) as NB FROM taxabase1";
$datas = NULL;
try{
  $requete = $connexion->prepare($sql);
  $requete->execute($datas);
  // retourne UNE ligne
  $result[1] = $requete->fetch(PDO::FETCH_ASSOC)
}catch(Exception $e){
  echo " ERREUR ! " . $e->getMessage();
}



echo '<p>Number of XXXX : ' . $result[1]['NB'] . ' </p>';

0
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 5
31 oct. 2017 à 18:55
Bonjour Jordane45,
Merci de ta réaction et de ton aide rapides (un plaisir de voir que tu es fidèle au poste depuis ma dernière question en Avril dernier !).
J’ai un souci de compréhension car il n’y a pas de commentaires avec ton code (qui en plus teste les erreurs) et surtout ton code est construit différemment du mien et comme je suis encore assez débutant je plante.
En pratique, si je copie colle ton code
$sql = "SELECT COUNT(DISTINCT Valid_sp_subsp) as NB FROM taxabase1";
	$datas = NULL;
	try{
    $requete = $connexion->prepare($sql);
    $requete->execute($datas);
    // retourne UNE ligne
    $result[1] = $requete->fetch(PDO::FETCH_ASSOC)
	} catch(Exception $e){
	echo " ERREUR ! " . $e->getMessage();
	}
	echo '<p>Number of XXXX : ' . $result[1]['NB'] . ' </p>';

J’ai un message d’erreur :
Parse error: syntax error, unexpected '}' in D:\_xxxstats-counts.php on line 93
Ligne 93: } catch(Exception $e){
J’ai essayé d’enlever le }, mais bien sûr ce n’est pas çà (tes { et } sont bien appariés).

Si j’essaye d’adapter ton code à ma façon d’écrire le code PDO, comme ceci, j’ai une autre erreur :
Notice: Undefined index: NB in D:\_ -stats-counts.php on line 105
Ligne 105: echo '<p>Number of XXXX : ' . $result[1]['NB'] . ' </p>';
Pour le code:
$requete = $connexion->prepare("SELECT COUNT(DISTINCT Valid_sp_subsp) as NB FROM taxabase1");
	$datas = NULL;

	$requete->execute($datas);
    $result[1] = $requete->fetchAll();
	
	echo '<p>Number of XXXX : ' . $result[1]['NB'] . ' </p>';

J’ai également essayé avec la ligne changée en :
$requete->execute(); au lieu de $requete->execute($datas);
Mais c’est pareil.
J’ai enfin essayé avec la ligne changée en :
echo '<p>Number of XXXX : ' . $datas['NB'] . ' </p>'; au lieu de echo '<p>Number of XXXX : ' . $result[1]['NB'] . ' </p>';
Il n’y a plus d’erreur, mais la recherche sql ne se fait pas. (j’ai seulement Number of XXXX : et le vide)

Désolé, là c’est au-delà de mes capacités !
A+
Seb
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
31 oct. 2017 à 19:22
et ainsi?
$result[1][0]['NB']
0
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 5 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
31 oct. 2017 à 19:46
Ah yg_be, j'avais zappé ton premier message. Désolé.
Cela ne marchait pas.
Par contre avec ton 2ème message, çà marche nickel et avec mon code.
Bravos et 1000 mercis.
Je marque 'résolu'

Seb
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 oct. 2017 à 20:05
Pour corriger le parse error de mon code ... il suffit d'ajouter un point-virgule à la ligne avant le catch...
Sachant que prends le code que je t'ai donné au lieu du tient ... et garde ce modele pour tes prochains codes ... ça évitera des erreurs !
0
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 5 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
28 nov. 2017 à 12:15
Bonjour jordane45,
désolé du retard
quelques soucis de santé
merci, mais comme tous les mauvais élèves je n'ai pas les bases indispensables et toutes mes pages sont sur ce modèle (des dizaines de pages)
yg_be m'a sorti de l'ornière (merci encore) et j'arrive à la fin de mon projet (j'aurai peut-être encore quelques questions de bugs comme celui-ci, mais c'est vraiment la fin... et j'en profite pour vous remercier tous chaleureusement sur ce forum pour votre disponibilité et votre aide)
Seb
0