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 :

Déclarer une variable dans un isset


Sujet :

PHP & Base de données

  1. #1
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut Déclarer une variable dans un isset
    Bonjour,
    Débutant en PHP, je bute sur un truc sans doute très simple pour d'autres.
    J'ai besoin de déclarer une variable au sein d'une action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ////////////////// Suppresion d'une ligne //////////////////////////
    	 if (isset($_GET['action']) && $_GET['action']=="Supprimer"){                                                                              
    		$par['LigneId']=$_GET['Ligne'];
    		$req=bfp_query_depuis_xml("BTU-query.xml",'query_deleteLigne',$par);
    		$result=bfp_t2d_depuis_odbc($conn, $req,true);
    		$result=odbc_exec($conn, $req);
                    //La requête fonctionne bien.
    		$toto='test'; // c'est là que ça se corse !
    	}
    Pour mon exemple, je déclare une variable toute bête, mais au débuggage, j'ai le message suivant sur ma variable $toto
    Error#300: can not get property
    Pourquoi ne puis-je déclarer cette variable ?
    Merci

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Ce message d'erreur n'est pas généré par PHP
    Je ne vois pas de problème à la ligne 8 du script collé

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Le problème doit être sur odbc_exec, vérifie ta requête manuellement.

  4. #4
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Je sais que la requête fonctionne. Même si je supprime les lignes la concernant, la variable $toto n'est toujours pas déclarée.
    Pour info, cette partie est appelée par du code Javascript présent dans la même page :
    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
    	echo "
    	<script type='text/javascript'>
    		jQuery('.bouton_supprimer').click(function() {
    			var id = jQuery(this).attr('id').replace('bouton_supprimer_', '');
    			if (confirm('Voulez-vous supprimer la ligne n°'+id)) {
    				jQuery.ajax({
    					type: 'GET',
    					url: 'Saisie.php',
    					data: 'Ligne='+id+'&action=Supprimer',
    					success: function() {
    						jQuery('#Ligne_'+id).fadeOut('slow');
    					}
    				});
    			}
    		});
    	</script>";

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je ne vois pas bien en quoi ça peut être gênant.

    Ton code PHP est sémantiquement correct, tu as un débogueur sous la main ?

  6. #6
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    J'utilise PHP Debugger et c'est comme ça que j'ai relevé le message d'erreur.

  7. #7
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Je n'arrive à rien pour l'instant. La lecture de pas mal d'infos sur la toile ont fini par me désorienter complètement. J'avais posé le problème sous forme d'exemple, mais je vous livre la chose dans son contexte :
    Je déclenche l'envoi du numéro de ligne grâce au bouton "info"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	echo "
    	<script type='text/javascript'>	
    		jQuery('.bouton_info').click(function() {
    			var id = jQuery(this).attr('id').replace('bouton_info_', '');
    				jQuery.ajax({
    				type: 'GET',
    				url: 'Saisie.php',
    				data: 'Ligne='+id+'&action=Info',
    				success: function() {
    					Alert(new Array('$commentaire'); // Cette variable devrait apparaître ici
    				}
    			});
    		});
    	</script>";
    Ici, ma requête reçoit le numéro de ligne et extrait la variable $commentaire qui devrait être affichée grâce au code ci-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if (isset($_GET['action']) && $_GET['action']=="Info"){                                                                              
    		$par['LigneId']=$_GET['Ligne'];
    		$req3=bfp_query_depuis_xml("BTU-query.xml",'query_infoLigne',$par);
    		$result2=bfp_t2d_depuis_odbc($conn, $req3,true);
    		$result2=odbc_exec($conn, $req3);
    		$commentaire=$result2['Ligne']['Commentaire'];
    	}
    J'ai entendu parler de XMLHttpRequest mais je ne sais comment et où l'utiliser.

    Pour info, j'utilise un code similaire pour supprimer une ligne et qui fonctionne parfaitement :
    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
    	echo "
    	<script type='text/javascript'>
    		jQuery('.bouton_supprimer').click(function() {
    			var id = jQuery(this).attr('id').replace('bouton_supprimer_', '');
    			if (confirm('Voulez-vous supprimer la ligne n°'+id)) {
    				jQuery.ajax({
    					type: 'GET',
    					url: 'Saisie.php',
    					data: 'Ligne='+id+'&action=Supprimer',
    					success: function() {
    						jQuery('#Ligne_'+id).fadeOut('slow');
    					}
    				});
    			}
    		});
    	</script>";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	 if (isset($_GET['action']) && $_GET['action']=="Supprimer"){                                                                              
    		$par['LigneId']=$_GET['Ligne'];
    		$req=bfp_query_depuis_xml("BTU-query.xml",'query_deleteLigne',$par);
    		$result=bfp_t2d_depuis_odbc($conn, $req,true);
    		$result=odbc_exec($conn, $req);
    	}

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alert(new Array('$commentaire'); // Cette variable devrait apparaître ici
    1. JS en sensible à la casse, alert( ) et non pas Alert( ) ;
    2. Manque la parenthèse fermante de ton alert ;
    3. Il faudrait échapper $commentaire pour le préparer à un traitement JS ;
    4. Mieux vaut faire ?>(script JS)<?php plus que echo "(script JS)".

  9. #9
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Citation Envoyé par Séb. Voir le message
    4. Mieux vaut faire ?>(script JS)<?php plus que echo "(script JS)".
    Je ne vois pas où je dois utiliser ceci.

  10. #10
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "
            <script type='text/javascript'>
                 [...]
    	</script>";
    En :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ?>
    <script type='text/javascript'>
    [...]
    </script>
    <?php

  11. #11
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Merci Seb pour ton aide. J'ai corrigé. ça avance vraiment doucement.
    En définitive, pourquoi je ne peux affecter la variable $commentaire avec mon résultat $infos[0]['Commentaire'] ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	if (isset($_GET['action']) && $_GET['action']=="Info"){                                                                              
    		$par['LigneId']=$_GET['Ligne'];
    		$req=bfp_query_depuis_xml("BTU-query.xml",'query_infoLigne',$par);
    		$infos=bfp_t2d_depuis_odbc($conn, $req,true);
    		$commentaire=$infos[0]['Commentaire'];
    	}
    Avec PHP Debugger je vois que ma requête est bien lancée mais impossible de déclarer $commentaire. J'ai l'erreur : "Error#300: can not get property"

  12. #12
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Que vaut $infos[0]['Commentaire'] ?
    Vérifie avec var_dump( ).

  13. #13
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Que vaut $infos[0]['Commentaire'] ?
    ça me renvoie une chaîne avec la valeur stockée sur le serveur SQL (le fameux commentaire). Donc de ce côté là ça marche bien.

  14. #14
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par stigma Voir le message
    ça me renvoie une chaîne avec la valeur stockée sur le serveur SQL (le fameux commentaire). Donc de ce côté là ça marche bien.
    Et si tu fais un echo $commentaire la valeur est bonne ?
    Si tu mets ton affectation en commentaire plus de notif de phpDebugger ?

    Si oui et que PHP ne te retourne pas d'erreur en mode de retour d'erreur max (voir error_reporting( ) : http://fr.php.net/manual/fr/function...-reporting.php ) je serais partant pour ignorer la notif (qui provient peut-être du fait que phpDebugger n'exécute pas bfp_t2d_depuis_odbc( )).

  15. #15
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    un echo ne donne rien. Mais PHP Debugger exécute bien bfp_t2d_depuis_odbc puisqu'il me retourne bien le commentaire. C'est l'affectation dans une variable qui coince.

  16. #16
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Hum c'est difficile à croire

    Que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $infos=bfp_t2d_depuis_odbc($conn, $req,true);
    echo '<h2>$infos[0]["Commentaire"] = ', $infos[0]['Commentaire'], '</h2>' ;
    $commentaire=$infos[0]['Commentaire'];
    echo '<h2>$commentaire = ', $commentaire, '</h2>' ;
    echo '<h2>var_dump = ' ; var_dump($commentaire) ; echo '</h2>' ;

  17. #17
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    En localhost, rien ne s'affiche, pas de message d'erreur.

  18. #18
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Un contact extérieur au site m'a envoyé la solution. La voici :


    Je te conseille de créer un nouveau fichier php qui s'occupe simplement de récupérer le commentaire dans la BD et de l'afficher.

    Exemple :
    fichier : traitement_ajax.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_GET['action']) && $_GET['action']=="Info"){                                                                              
    	$par['LigneId']=$_GET['Ligne'];
    	$req=bfp_query_depuis_xml("BTU-query.xml",'query_infoLigne',$par);
    	$infos=bfp_t2d_depuis_odbc($conn, $req,true);
    	echo $infos[0]['Commentaire'];    //On affiche le commentaire qui sera stocké dans data
    }
    Et ensuite tu modifies un peu ta fonction jQuery.
    Maintenant la fonction appelle le nouveau fichier 'traitement_ajax.php' et récupére dans la variable data les données affichées dans le fichier 'traitement_ajax.php'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	<!-- Afficher infos chargeurs-->		
    	jQuery('.bouton_info').click(function() {
    		var id = jQuery(this).attr('id').replace('bouton_info_', '');
    		jQuery.ajax({
    		type: 'GET',
    		url: 'traitement_ajax.php',     //La fonction appelle un nouveau fichier php
    		data: 'Ligne='+id+'&action=Info',
    		success: function(data) {        //En cas de réussite, data à pour valeur tout le code html affiché dans 'traitement_ajax.php 
    			<!--alert(new Array($commentaire));-->
    			alert(data);                   // On affiche data
    		}
    		});
    	});
    Merci à Jean-Baptiste

Discussions similaires

  1. [XL-2010] Déclarer une variable dans un événement Workbook_BeforeClose
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2014, 18h50
  2. Déclarer une variable dans une fonction
    Par rudbyman52 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/11/2010, 11h59
  3. déclarer une variable dans un model
    Par katebe dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 11/07/2008, 13h30
  4. déclarer une variable dans tout un module
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/07/2007, 09h06
  5. Déclarer une variable dans un PIC
    Par Vinch006 dans le forum C
    Réponses: 5
    Dernier message: 09/03/2007, 17h49

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