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

Langage PHP Discussion :

"Resource id #3" au lieu de l'affichage des données de ma base de données


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut "Resource id #3" au lieu de l'affichage des données de ma base de données
    Bonjour tout le monde,

    J'ai ce code :

    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
    28
    <?php
    session_start();
    //print_r($_POST);
    	if(isset($_POST["MNEMONIC"]))
    	{
     
    		$conn = mysql_connect("localhost","root","mdp"); 
    		$db=mysql_select_db("pharma", $conn);
    		$res = "SELECT TYPE_DE_COURS FROM cours WHERE MNEMONIC IN (SELECT MNEMONIC FROM enseigner WHERE MATRICULE_PROF = '" . $_SESSION['Matricule'] . "') AND NOM_ANNEE = '" . $_POST["NOM_ANNEE"] . "'";
    		$res = mysql_query($res, $conn); 
     
    		echo'<script LANGUAGE="JavaScript">alert("'.$res.'");</SCRIPT>';
     
     
     
    		$nombre = mysql_num_rows($res);
     
     
     
    		while($row = mysql_fetch_assoc($res))
    		{
     
    			echo "<option value='".$row["TYPE_DE_COURS"]."'>".$row["TYPE_DE_COURS"]."</option>";
    		}
    	}
    	else echo'<script LANGUAGE="JavaScript">alert("pas bon");</SCRIPT>';
     
    ?>
    Le problème est que rien ne s'affiche, j'obtiens :

    Resource id #3
    Alors que tout les noms des champs de ma table dans le code me semblent correcte.

    Le code ci-dessus est associé à un autre code que voici :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    /**
    * Méthode qui sera appelée sur le changement de la liste déroulante annees
    */
    function fnctcours(cours)
    {
    	//alert(cours);
    	var xhr2 = getXhr();
    	//alert(xhr2);
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr2.onreadystatechange = function()
    	{
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		alert(xhr2.readyState);
    			alert(xhr2.status);
    		if(xhr2.readyState == 4 && (xhr2.status == 200 || xhr2.status == 0 ) )
    		{
    //alert('cool'); //cette alerte me permet de savoir qu'on arrive au moins à cet endroit du code
    			alert(xhr2.status);
     
    			//******  Je ne comprends pas comment le contenu de leselect2 est connu à cet endroit alors que xhr2.open("POST","Scripts/ajaxLivre.php",true); 
    			//        se trouve plus bas 
    			//*******
     
     
    			leselect2 = xhr2.responseText;
     
     
    			alert('xhr2.responseText vaut '+xhr2.responseText);
    									alert(leselect2);
    			// On se sert de innerHTML pour rajouter les options a la liste
    			document.getElementById('select_Nom_types').innerHTML = leselect2; //ici, le nom du select devrait être générique !!!!
    			//alert(leselect2);
    			//alert('cool2');
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr2.open("POST","Scripts/ajaxTypes.php",true); //ici, on met le nom de la page php qui contient le requête sql
     
    	// ne pas oublier ça pour le post
    	xhr2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// ne pas oublier de poster les arguments
    	// ici, l'id de l'auteur
    	xhr2.send("MNEMONIC="+cours); //ici, NOM_ANNEE et annee devraient être génériques !!!!			
     
    }
    Voici la structure de ma table "cours" :

    ID int(11) Non
    MNEMONIC varchar(255) Non
    NOM_ANNEE varchar(255) Non
    NOM_COURS varchar(255) Non
    ECTS int(11) Non
    PONDERATION int(11) Non
    TYPE_DE_COURS varchar(255) Non
    Et voici la structure de ma table "enseigner" :

    MATRICULE_PROF varchar(255) Non
    MNEMONIC varchar(255) Non
    TYPE_DE_COURS varchar(255) Non
    ENCODE tinyint(4)
    Merci d'avance pour votre aide.

    beegees

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    ça ressemble pas mal à cette question : http://www.developpez.net/forums/d66...rce-id-sharp5/

    Pour récupérer les résultats d'une requête SELECT exécutée avec mysql_query, il faut utiliser l'une des fonctions mysql_fetch_*, par exemple mysql_fetch_assoc
    Ou si j'essaie de le dire différemment, le retour de mysql_query n'est pas un résultat directement exploitable, mais une ressource qui doit être analysée par des fonctions spécifiques (celles qui commencent par mysql_fetch...).

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Bonjour,

    ça ressemble pas mal à cette question : http://www.developpez.net/forums/d66...rce-id-sharp5/



    Ou si j'essaie de le dire différemment, le retour de mysql_query n'est pas un résultat directement exploitable, mais une ressource qui doit être analysée par des fonctions spécifiques (celles qui commencent par mysql_fetch...).
    Bonjour Eusebe et merci pour ta réponse.

    C'est donc tout à fait normal si j'obtiens ce message :

    Resource id #3
    Ce n'est donc pas la source de mon erreur.

    Je te remercie pour ta réponse.

    Je vais devoir chercher autre part.

    Encore un grand merci à toi et bon Dimanche.

    beegees

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Ce que tu peux faire, c'est afficher ta requête SQL ($res, mais avant passage par mysql_query), pour voir si elle est correcte (par exemple en l'exécutant sur phpmyadmin).

    Déjà, un élément de sécurité : il faut que tu échappes les données récupérées d'un formulaire avec mysql_real_escape_string pour éviter les injections SQL.

    Par ailleurs, rien à voir, mais je suis étonné de la structure de tes tables.Le matricule d'un prof, son mnémonique et le nom de l'année sont vraiment des chaînes pouvant aller jusqu'à 255 caractères ?

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Ce que tu peux faire, c'est afficher ta requête SQL ($res, mais avant passage par mysql_query), pour voir si elle est correcte (par exemple en l'exécutant sur phpmyadmin).

    Déjà, un élément de sécurité : il faut que tu échappes les données récupérées d'un formulaire avec mysql_real_escape_string pour éviter les injections SQL.

    Par ailleurs, rien à voir, mais je suis étonné de la structure de tes tables.Le matricule d'un prof, son mnémonique et le nom de l'année sont vraiment des chaînes pouvant aller jusqu'à 255 caractères ?
    Re,

    Tes conseils portent fruit :

    ELECT TYPE_DE_COURS FROM cours WHERE MNEMONIC IN (SELECT MNEMONIC FROM enseigner WHERE MATRICULE_PROF = '07788') AND NOM_ANNEE = ''"
    Je vais regarder pourquoi je n'obtiens pas d'année.

    Un super grand et sincère merci pour ton aide, tu es vraiment très efficace.

    beegees

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    En effet, je viens de regarder ton code JavaScript, et tu passes un paramètre MNEMONIC, mais pas de paramètre NOM_ANNEE...

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

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