une erreur de plus

Eléphant du PHP | 132 Messages

28 sept. 2006, 00:34

bonsoir, alors voici ptit code :

Code : Tout sélectionner

<?php include("config.php"); mysql_query("CREATE TABLE IF NOT EXISTS 'compteur_visite'(`id` int(11) NOT NULL auto_increment,`nom` varchar(30) NOT NULL default '',PRIMARY KEY (`id`))"); $requete = mysql_query("select * from compteur_visite"); $nb = mysql_numrows($requete); // On regarde le nombre d'enregistement if($nb == 0) { // si il y a 0 enregistrement on ajoute des données mysql_query("insert into compteur_visite values('1')"); } else // sinon on passe { // et on met à jour le nombre de visite mysql_query("update compteur_visite set nb=nb+1"); } // Affiche le nombre de visite // Sélection de la table $requete = mysql_query("select * from compteur_visite"); // et on affiche le nombre de visite $j = mysql_fetch_array($requete); $nb = $j[nb]; print $nb.' visiteurs au total'; // On ferme la connection mysql_close(); ?>
et voici mes erreus :

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\ext-files.com\visites.php on line 5

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\ext-files.com\visites.php on line 25

Notice: Use of undefined constant nb - assumed 'nb' in c:\program files\easyphp1-8\www\ext-files.com\visites.php on line 26

et perso, je trouve pas !!!!!!!!!!

ViPHP
ViPHP | 2144 Messages

28 sept. 2006, 00:59

Alors dans l'ordre:

1) Poste dans le bon forum, tu as clairement un problème de base de donnée, donc tu aurais du poster dans le forum base de donnée, et pas dans "débuter en php".
2) Dans ce forum, tu aurais notamment pu lire ceci qui explique comment isoler et résoudre un problème de base de donnée. http://www.phpfrance.com/forums/voir_sujet-19378.php

3) Donne des titres explicites à tes messages (les règles du forum), si tu postes sur ce forum, il y a 95% pourcent de chance que ça soit parce que tu as u problème avec quelque chose.

4) Utilises les balises php et non code pour poster du code, histoire que ce soit plus facile à lire.

Mammouth du PHP | 592 Messages

28 sept. 2006, 09:08

salut

alors alors bon :

1- utilise les bonnes fonctions : mysql_numrows n'existe pas mais mysql_num_rows oui !!!!

2- ensuite moi quand j'étais à l'école on m'en faisait tout un plat pour
etre carré sur mon code hors : dans toutes tes requetes il manque le ";"
à la fin :!: bon ça à la limite tout le monde s'en fout apparamment !!!

3- essaye voir si ça vient de ça @ +

Eléphant du PHP | 132 Messages

28 sept. 2006, 10:42

Pour iclo >> je faisait comment pour savoir qu'il sagissait d'un probleme de base de donnée ? je suis débutant !

Pour fred9999 >> merci de l'indication, je vais essayer. par contre, j'ai bien mis mes ; à la fin de chaque ligne de codes ?

Mammouth du PHP | 592 Messages

28 sept. 2006, 10:50

non non une requete sql c'est ça :

Select * From matable where num='1';

donc $query c'est ça :

$query="
Select * From matable where num='1';";

Mammouth du PHP | 684 Messages

28 sept. 2006, 12:19

Normallement c'est le driver qui arrive a faire la requette correctement avec ou sans la terminaison (";").
Le probleme vient d'ailleur.
Pour mysql_numrows c'est un alias sur mysql_num_rows pas de probleme.
Que te retourne cette fonction ?
<?php
//.... Ton code avant ici
$nb = mysql_numrows($requete);
var_dump($nb);
?>
Zigz4g

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 sept. 2006, 12:32

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\ext-files.com\visites.php on line 5
Le problème vient du fait que l'argument que tu passes à mysql_numrows() n'est pas une ressource mysql valide.

Donc dans l'ordre, vérifie que ta requête sql est bonne en la jouant dans phpMyAdmin et/ou en ajoutant un "or die(mysql_error())" après le mysql_query().

Est ce que la table a bien été créée ? ajoute un or die sur celle la aussi pour savoir s'il y a des erreurs ou non (personnellement j'enelverais les apostrophes autour du nom de la table.. ca changera peut être rien, mais ca montre bien qu'on peut s'en passer ;))

Si le problème ne vient pas de la, vérifie la connexion à la base avec des or die au moment des mysql_db_connect et mysql_select_db();

ViPHP
ViPHP | 2144 Messages

28 sept. 2006, 14:01

Pour iclo >> je faisait comment pour savoir qu'il sagissait d'un probleme de base de donnée ? je suis débutant !
Je pense que vu le code sur lequel tu planchais, et tes messages précédent, il est fortement problable que tu avais compris que tu étais en train d'essayer d'accéder à une base de donnée. et donc que tu pouvais comprendre sur quel forum poster.
Le forum est là pour aider des débutants, mais pour que cela ce fasse dans de bonne condition, il est demandé de lire les règles du forum avant de commencer à poster, c'est tout :wink: :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

28 sept. 2006, 14:38

ton programme n'a aucune chance de s'exécuter normalement puisqu'il est contradictoire de A à Z. Je m'explique:

Le souci majeur est que tes requêtes ne respectent pas la définition de ta table :
mysql_query("CREATE TABLE IF NOT EXISTS 'compteur_visite'(`id` int(11) NOT NULL auto_increment,`nom` varchar(30) NOT NULL default '',PRIMARY KEY (`id`))");
On voit bien que cette table contient 2 champs : id et nom
alors que les requêtes INSERT et UPDATE ne respectent pas cette structure.

Le problème est dans ta conception du nombre de visites et de la façon de le calculer.

Par exemple, tu as bien calculé le nombre $nb par requête au début mais après tu es rentré dans un autre recalcul dont on comprend pas l'aboutissement.

A mon avis, s'il faut discuter sur quelque chose, ça serait sur "comment souhaites-tu gérer ce compteur de visites" tout en mettant de côté ce programme à refaire.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène