Count, if, else, probleme en php
congela
Messages postés
23
Statut
Membre
-
vordano Messages postés 1981 Statut Membre -
vordano Messages postés 1981 Statut Membre -
Bonjour,
tout d'abord merci de vous intéresser à mon petit problème!
quand je fais:
$query= mysql_query('SELECT COUNT( costume ) FROM materiel WHERE costume="pull"');
if (count($query)>=1)
{echo 'le costume est deja dans la liste';}
else.......
il me fait toujours apparaitre le echo du if et jamais du else...
je dois pas rédiger le if comme il le faut
merci d'avance!
tout d'abord merci de vous intéresser à mon petit problème!
quand je fais:
$query= mysql_query('SELECT COUNT( costume ) FROM materiel WHERE costume="pull"');
if (count($query)>=1)
{echo 'le costume est deja dans la liste';}
else.......
il me fait toujours apparaitre le echo du if et jamais du else...
je dois pas rédiger le if comme il le faut
merci d'avance!
A voir également:
- Count, if, else, probleme en php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- If exist ✓ - Forum Autoit / batch
- Php alert - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
2 réponses
bonjour,
ne recopie surtout pas ce que mpmp93 t'as écris, c'est du code écrit avec les pieds...
en tapant php if sql count sur google tu tombe sur le site du zéro qui te donne un exemple qui te permettrais d'écrire ca:
tu avais oublié un mysql_fetch_array pour transformer le jeu d'enregistrement en tableau et ainsi pouvoir lire le résultat. de plus le count(costume) tu peu le remplacer par count(µ), mais après tu modifie selon le cas, si ca marche ou pas.
ne recopie surtout pas ce que mpmp93 t'as écris, c'est du code écrit avec les pieds...
en tapant php if sql count sur google tu tombe sur le site du zéro qui te donne un exemple qui te permettrais d'écrire ca:
$retour=mysql_query('SELECT COUNT(*) FROM materiel WHERE costume="pull"')or die(mysql_error());
$data=mysql_fetch_array($retour);
if($data[0]>0){
echo 'le costume est deja dans la liste';
}
else{
echo'...';
}
tu avais oublié un mysql_fetch_array pour transformer le jeu d'enregistrement en tableau et ainsi pouvoir lire le résultat. de plus le count(costume) tu peu le remplacer par count(µ), mais après tu modifie selon le cas, si ca marche ou pas.
Bonjour,
1) dans votre requête SQL:
SELECT COUNT( costume ) FROM materiel WHERE costume="pull"
est mieux comme ceci:
SELECT COUNT(1) AS nombre FROM materiel WHERE costume="pull"
2) dans votre if: (php comme moteur de template)
A+
1) dans votre requête SQL:
SELECT COUNT( costume ) FROM materiel WHERE costume="pull"
est mieux comme ceci:
SELECT COUNT(1) AS nombre FROM materiel WHERE costume="pull"
2) dans votre if: (php comme moteur de template)
<?php if (count($query)!=0): ?> le costume est deja dans la liste <?php else: ?> ...suite du code... <?php endif; ?>
A+
Oû ça?
Dans le SQL?
SELECT COUNT(1) AS nb
est plus pertinent que
SELECT COUNT(*)
parce que SELECT COUNT(1) AS nb ne surcharge pas le tampon du moteur SQL contrairement à COUNT(*). Je vous laisse imaginer si vous avez des tables avec 10 millions d'enregistrements et 150 champs! Ecroulage SQL ga-ran-tit!
Dans le PHP?
La manière d'écrire et utiliser PHP comme moteur de template de cette manière:
<?php if(test): ?>
...mon code HTML...
<?php endif; ?>
est la meilleure manière de ne pas mixer du HTML dans le PHP. Rasmus LERDORF lui-même lors des journées PHP à la Villette en 2010 préconise fortement ce genre de solution. je le sais, j'y étais.
Le site du zéro n'est pas une référence pour moi en matière de qualité du code...
A+
mais la meilleur manière de ne pas mixer le html et le php, a mon avis c'est pas ça.
Du code propre pour moi (et pour les quelques personnes dans le métier qui me l'ont dis) c'est le traitement php d'un coté et le html de l'autre avec l'utilisation de variables pour sortir le résultat coté html.
mais bon tant que tout marche, ya pas de raison de se prendre la tête avec une méthode ou l'autre non :/
ps: d'après ce que je viens de voir sur différent forum, le count(*) et le count(1) donnerait le même résultat vu que la méthode à été revisité.
Oui je connais. Ca s'appelle le modèle MVC. Mais il y a une contrainte forte, cette d'utiliser un moteur de template.
Pour un site simple, l'emploi d'un moteur de template est souvent exagéré. C'est comme scotcher un Volvo Penta 900 chevaux derrière un canot gonflable Dinghy....
Donc, il y a une manière fort peu connue des débutants et qui consiste à utiliser les structures php if() { } else { } non plus de cette manière:
if(test()) {
echo "<tr>";
else {
echo "<tr style='background-color: $color'>";
}
qui a le défaut de masquer à un IDE (genre netBeans) la structure du code HTML. On préférera cette codification:
<?php début structure: ?>
...mon code HTML...
<?php fin de structure; ?>
Voici par exemple comment je m'y prends pour extraire des données depuis un tableau de données issues de la BDD:
<?php
// extraction données à afficher
$sql = "SELECT nom, prenom, adresse FROM adherents WHERE actif='OUI'";
$resultat = $Bdd->fetch($sql);
?>
et plus loin dans le code HTML:
<table> <thead> <tr> <td>nom</td> <td>prenom</td> <td>adresse</td> </tr> </thead> <tbody> <?php foreach($resultat AS $key1 => $row): ?> <tr> <?php foreach($row AS $key2 => $data): ?> <td><?php echo $data; ?></td> <?php endforeach; ?> </tr> <?php endforeach; ?> </tbody> </table>Si vous éditez ce code sous netBeans (ou PHP for Eclipse ou ZendStudio) l'IDE affichera le chemin de votre structure HTML. Par exemple, en mettant le curseur dans TD (en gras dans le code...), l'analyseur de code HTML intégré indiquera comme chemin:
body table tr td
et les défauts de structuration du code HTML seront mis en évidence s'ils ne sont pas respectés. Si on avait codé comme ceci:
echo "<tr>";
on masque le code HTML à l'analyseur de structure.
Parmis les différents IDE testés, à mon sens, netBeans apporte bien des avantages:
- auto-complétion de code HTML, PHP, javascript, svg, xml, css,
- auto-documentation du code PHP en temps réel!
- version 7 de netBeans prend en compte les nouveaux éléments HTML5.
Certes, la manière d'utiliser PHP comme moteur de template peut sembler 'fouillis', mais selon Rasmus LERDORF, elle apporte des avantages indéniables:
- on respecte le codage MVC. Par exemple, sous Zend Framework, les vues peuvent exploiter les objets servant à passer les données
- on court-circuite la couche moteur de template qui ne fait qu'ajouter des contraintes: avec un moteur de template, on est forcé de passer les données par objet;
- on rend à PHP sa fonction première et pour laquelle il l'avait initialement conçu;
- PHP comme moteur de template est plus rapide en exécution que n'importe quel moteur de template...
- on oblige le programmeur à bien différencier le code HTML du code PHP. Exemple:
echo "<td>$data</td>"
devrait être déprécié au profit de ceci:
<td><?php echo $data; ?></td>
Je sais - et je vois - que quasiment tout le monde utilise la première manière... Mais celà perturbe l'analyserr de code et syntaxe HTML. Dans cette première manière, si vous faites ceci:
echo "<th>$data</td>"
l'IDE netBeans ne signalera pas l'erreur. Alors que dans ce cas:
<th><?php echo $data; ?></td>
On aura une erreur de syntaxe. C'est valable pour tous les éléments HTML imbriqués.
Voilà, c'étais mon explication... Libre à tout le monde de faire comme il l'entend...
Une référence parmi d'autres:
https://www.joeldare.com/wiki/php:using_php_as_a_template_engine
A+
mais après tout dépend de la manière de coder, on peux aussi mettre dans un fichiers php le traitement et l'accès a la bdd sans pour autant forcer sur du mvc strict (3 fichiers pour chacune des étapes)
m'enfin là on s'éloigne trop du sujet d'origine ^^'
donc s'il est résolu, pourrait il être mis en résolu svp ?