Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour, tout est dans le titre, je souhaiterais vérifier en PHP si le contenu d'une table Mysql est vide ou non.

 

J'ai fait ceci, mais ça ne marche pas :

 

//fonction de comptage du nombre de données
function nombre($table)
{
$requete = "SELECT * FROM $table";
$resultat = mysql_num_rows($requete);
}


//vérification de l'existence de catégories, si oui on affiche les liens
nombre(gestion_categories);
if ($resultat != 0)
{
echo"<a href='gestion_categories.php?action=modif_cat'>Modifier une catégorie.</a><br>
<a href='gestion_categories.php?action=suppr_cat'>Supprimer une catégorie.</a><br>";
}

 

 

Merci d'avance.

Posté(e) (modifié)

Il faut que tu apelles ta fonction, ce n'est pas automatique ...

 

//fonction de comptage du nombre de données
function nombre($table)
{
   $requete = "SELECT * FROM $table";
   $resultat = mysql_num_rows($requete);
return ($resultat);
}


//vérification de l'existence de catégories, si oui on affiche les liens
$resultat = nombre('gestion_categories');
if ($resultat <> 0)
{
echo"<a href='gestion_categories.php?action=modif_cat'>Modifier une catégorie.</a><br>
<a href='gestion_categories.php?action=suppr_cat'>Supprimer une catégorie.</a><br>";
}

 

 

ca doit etre bon

Modifié par mofo
Posté(e)

Je te remercie, ça a l'air bon.

 

Par contre, lorsque j'appelle une fonction j'ai besoin de lui mettre des paramètres qui sont des variables.

 

Dois-je appeler la fonction comme ceci :

 

$resultat = nombre('$variable');

 

Ou alors je ne mets pas les ' ?

Posté(e)

Ne les mets pas :P

Posté(e)

D'accord, merci.

 

Ensuite, le script me dit souvent que des variables sont Undefined comme ici par exemple, ou je veux récupérer une variable dans l'URL :

if ($_GET['action'] == 'new_cat')

{}

 

Qu'est-ce qui ne va pas ici ?

Posté(e)

Finalement je n'ai plus qu'un seul problème (normalement), c'est toujours la même fonction :

 

//fonction de comptage du nombre de données

function nombre($table)

{

  $requete = "SELECT * FROM $table";

  $resultat = mysql_num_rows($requete);

return ($resultat);

}

 

 

//vérification de l'existence de catégories, si oui on affiche les liens

$resultat = nombre('gestion_categories');

if ($resultat <> 0)

{

echo"<a href='gestion_categories.php?action=modif_cat'>Modifier une catégorie.</a><br>

<a href='gestion_categories.php?action=suppr_cat'>Supprimer une catégorie.</a><br>";

}

 

L'erreur affichée est :

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

 

Mais je ne vois pas d'où provient l'erreur.

Posté(e)

Si ton select * ne renvoie rien, il se peut que tu aies ce type d'erreur. Si MySQL se comporte comme Oracle, tu ferais mieux d'utiliser un "SELECT COUNT(1) FROM $table" parce que :

1 - tu ne vas pas fetcher tout le contenu de ta table si elle est pleine

2 - même si elle ne renvoie rien, tu n'auras pas l'erreur "NO DATA FOUND" parce qu'un COUNT() renvoie toujours quelque chose.

Posté(e)
$resultat = nombre('gestion_categories');

Supprime les ' et réessaye :P

Posté(e)

Finalement, ça a fonctionné avec :

 

function nombre($table)
{
$requete = mysql_query("SELECT * FROM $table");
$resultat = mysql_num_rows($requete);
return ($resultat);
}

etc...

 

Mais je vais essayer avec "SELECT COUNT(1) FROM $table" car j'ai des erreurs de résultat, mais la fonction est bonne.

Posté(e)
Supprime les ' et réessaye :P

523198[/snapback]

holà malheureux ! Tu utilises quelle version de PHP pour dire ça ? Si tu enlèves les guillemets, PHP risque de renvoyer une erreur car il va rechercher la valeur de la constante.

 

moi je propose ça :

function nombre($table)
{
$requete = mysql_query("SELECT * FROM $table LIMIT 1");
return ($resultat = mysql_fetch_array($requete));
}

 

mais dans ce cas la fonction renvoie un booléen. Sinon ça marche bien en utilisant le count(), à condition de l'utiliser comme ça :

 

function nombre($table)
{
$requete = mysql_query("SELECT COUNT(*) NB FROM $table");
$resultat = mysql_fetch_array($requete);
return $resultat['NB'];
}

 

Pour rappel, $table ne sera pas considérée comme une variable si elle se trouve entre de simple quotes :

'$table' --> $table;

"$table" --> gestion_categories;

 

Bon courage !

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...