IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

fonction php qui fonctionne pas !


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut fonction php qui fonctionne pas !
    Bonsoir

    j'ai une table 'loi_stages' qui contient les champs suivants :
    • id_loi
    • grad
    • stag


    et j'ai une page dans laquelle j'affiche les données issus de la table 'stages' :
    • is_st
    • st_titre


    dans la page ou j'affiche ma table 'stages' j'ai crée un fonction que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function test_bouton($param1, $param2){
    $query_bouton = "SELECT COUNT(id_loi) as nbr FROM loi_stages WHERE grad='$param1' AND stag='$param2'"; // ORDER BY renvoi les données triées (ici par nom croissant)
    $bouton = mysql_query($query_bouton, $formation) or die(mysql_error());
    $row_bouton = mysql_fetch_assoc($bouton);
     
    $resultat =  $row_bouton['nbr'];
    if ($resultat == 1){
    	return 1;
    }else{
    	return 0;
    }
    }
    cette fonction me permet de savoir si avec les 2 valeurs que je passe en paramétres ($param1 => l'id du grade) et ($param3 => l'id du stage) si j'ai un enregistrement dans ma table 'loi_stages'

    alors pour mettre en oeuvre cette fonction j'affiche un tableau qui me liste ma table grade, ainsi je récupére l'id de grade qui sera $param1 et le stage qui reste une valeur fixe sur la page dans mon car $param2

    Donc voici la mise en oeuvre de ma fonction sur le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    $query_stages = "SELECT * FROM stages ORDER BY st_titre"; // ORDER BY renvoi les données triées (ici par nom croissant)
    $stages = mysql_query($query_stages, $formation) or die(mysql_error());
    $row_stages = mysql_fetch_assoc($stages);
     
    <table id='liste'>
        <tr>
          <td><div align="center"><h9>Ajouter</h9></div></td>
          <td><div align="center"><h9>Enlever</h9></div></td>
          <td><div align="center"><h9>Stages</h9></div></td>
        </tr>
        <?php do { ?>
    <tr>
    		<td><?php echo '<a href="stages_affect.php?ajouter_affect=' . $row_stages['id_st'] . '">'; ?><div align="center"> <img src="images/plus.png" alt="Enlever" border="0" width="16" height="16" /> </div></a></td>
          <td><?php echo $para2 = $row_stages['id_st'];
    	  if (test_bouton($id_grade, $para2) == 1){  ?>
              <a href="stages_affect.php?supprimer_affect=<?php echo $row_stages['id_st']; ?>"><div align="center"> <img src="images/suppr.png" alt="Enlever" border="0" width="16" height="16" /> </div></a>
              <?php }
    		  else
    		  {
    			  echo ''; 
    		  }
    		  ?>
    	  </td>
          <td><?php echo $row_stages['st_titre']; ?></td>
          </tr>
          <?php } while ($row_stages = mysql_fetch_assoc($stages)); ?>
      </table>
    Le problème est que j'ai ce message d'erreur :
    27
    Notice: Undefined variable: formation in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\Formation\stages_affect.php on line 26

    Warning: mysql_query() expects parameter 2 to be resource, null given in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\Formation\stages_affect.php on line 26
    Je ne vois pas ou est mon erreur !!!
    voila ce que j'ai à la ligne 26 incriminé :
    $bouton = mysql_query($query_bouton, $formation) or die(mysql_error());
    pourtant j'ai bien déclaré avant la fonction la connexion à la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_select_db($database_formation, $formation);
    bizarre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ $formation n'est pas défini dans la fonction.
    => voir : Portée des variables
    Il faut donc mettre dans la fonction :
    2/ 2ème chose :
    même si tu "gères" tes paramètres, VERIFIE/PROTEGE toujours les données transmises à la base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(is_numeric($param1) && is_numeric($param2)){
    ...
    }

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut
    j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bouton = mysql_query($query_bouton, global $formation) or die(mysql_error());
    et j'obtient cette erreur :
    Parse error: syntax error, unexpected T_GLOBAL in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\Formation\stages_affect.php on line 26

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et comme ça, ça n'irait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function test_bouton($param1, $param2){
    	global $formation; // variable globale
    	// on vérifie que les 2 paramètres sont bien numériques
    	if(is_numeric($param1) && is_numeric($param2)){
    		$query_bouton = 
    			"SELECT COUNT(id_loi) as nbr 
    			FROM loi_stages 
    			WHERE grad='$param1' 
    			AND stag='$param2'"; 
    		// ORDER BY renvoi les données triées (ici par nom croissant)
    		$bouton = mysql_query($query_bouton, $formation) or die(mysql_error());
    		$row_bouton = mysql_fetch_assoc($bouton);
     
    		$resultat =  $row_bouton['nbr'];
    		if ($resultat == 1){
    			return 1; // oui
    		} else {
    			return 0; // non
    		}
    	} else {
    			return 0; // non
    	}
    }

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut
    merci jreaux62 ca fonctionne, mais quelle était mon erreur ?
    la variable $formation qui n'était pas en global ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction Mail() qui fonctionne pas en local
    Par pipitt05000 dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2015, 00h54
  2. [Mail] fonction mail qui fonctionne pas
    Par digger dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2006, 23h28
  3. fonction ridicule qui fonctionne pas sous firefox
    Par Isses dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2006, 13h08
  4. fonction plpgsql qui fonctionne pas...
    Par Empty_body dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/01/2006, 19h22
  5. Fonction JS qui fonctionne avec Mozilla mais pas avec IE.
    Par etiennegaloup dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo