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 :

id non défini alors qu'il est utilisé


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut id non défini alors qu'il est utilisé
    Bonjour,

    J'ai beau cherché, je ne trouve pas l'erreur concernant la récupération d'un id

    En effet l'erreur produire est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: id in c:\\program files\\easyphp1-8\\www\\site\\bd\\inserer_texte.php on line 99
    Le ligne code en question de inserer_texte.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="id" value="<? echo $id; ?>"/>
    Ceci dit le *id* en question est utilisé dans un autre fichier, il fait cette erreur quand j'ajoute un fichier et non quand j'en modifie un

    Code ou on utilise id :

    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
    47
    48
    49
    50
    51
    52
    53
    <?
    			require('connect.php');
     
    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut un nouveau texte ?
    //-----------------------------------------------------
     
    			if (isset($_POST['nom_sortie']) && isset($_POST['lieu']) && isset($_POST['profs']) && isset($_POST['Annees']) && isset($_POST['classe']) && isset($_POST['resume']))
    			{
    			$nom_sortie = addslashes($_POST['nom_sortie']);
    			$lieu = addslashes($_POST['lieu']);
    			$profs = addslashes ($_POST['profs']);
    			$Annees = addslashes ($_POST['Annees']);
    			$date = addslashes ($_POST['date']);
    			$classe = addslashes ($_POST['classe']);
    			$resume = addslashes ($_POST['resume']);
    			// On vérifie si c'est une modification de texte ou pas
    			$id = addslashes($_POST['id']);
    			$modif = addslashes($_POST['modif']);
    			echo $id;		
    				if ($modif== 0)
    				{
    				// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
     
     
    				$ma_requetea = "INSERT INTO Information(Annees,nom_sortie, lieu, profs)VALUES('$Annees','$nom_sortie', '$lieu', '$profs') ";
    				mysql_query($ma_requetea);
    				$ma_requeteb = "INSERT INTO Photos(nom_sorties,id_sorties)VALUES('$nom_sortie','$id') ";
    				mysql_query($ma_requeteb);
     
    				}
     
    				if ($modif == 1 )
    				{
    				// C'est une modification, on met juste à jour le titre et le contenu
    				$ma_requetea = "UPDATE Information SET Annees='" . $Annees . "', date='" . $date . "', lieu='" . $lieu . "', nom_sortie='" . $nom_sortie . "', classe='" . $classe . "', profs='" . $profs . "', resume='" . $resume . "' WHERE id=$id";
    				mysql_query($ma_requetea);
    				$ma_requeteb = "UPDATE Photos SET nom_sorties='" . $nom_sortie . "' WHERE id_sorties=$id";
    				mysql_query($ma_requeteb);
    				}
    			}
     
    //--------------------------------------------------------
    // Vérification 2 : est-ce qu'on veut supprimer un texte ? 
    //--------------------------------------------------------
     
    			if (isset($_GET['supprimer_texte'])) // Si on demande de supprimer un texte
    			{
    			// Alors on supprime le texte correspondant
    			mysql_query('DELETE FROM Information WHERE id=' . $_GET['supprimer_texte']);
    			mysql_query('DELETE FROM Photos WHERE id_sorties=' . $_GET['supprimer_texte']);
    			}
    		?>

    Le reste du code étant juste la mise en page du site

    Merci d'avance

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Cela veux dire que ta variable id n'est pas définie avant, fait plutot comme ça pour ne pas afficher d'erreur si $id n'existe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="id" value="<?= isset($id) ? $id : ""; ?>"/>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    l'id existe bien puisque sinon je ne pourrai pas modifier ou ajouter,

    Le fichier ajoute bien d'autres fichiers qui ont chacun un id, mais si je veux récupérer cet id, c'est la que ca plante

    Sinon sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ma_requeteb = "INSERT INTO Photos(nom_sorties,id_sorties)VALUES('$nom_sortie','$id') ";
                mysql_query($ma_requeteb); 
     
     
    $ma_requeteb = "UPDATE Photos SET nom_sorties='" . $nom_sortie . "' WHERE id_sorties=$id";
                mysql_query($ma_requeteb);
    Le programme ne fait pas d'erreur

    un poil embétant :s

  4. #4
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Désolé je n'avais pas compris ton code et pour dire vrai, je ne le comprends toujours pas

    Dans le cas où ça plante, tu ne passe pas par cette ligne là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = addslashes($_POST['id']);
    Si c'est bien le cas, où la variable $id est définie sinon ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    j'ai un peu de mal à te suivre aussi

    Disons que quand ca plante c'est bien le echo juste en dessous le code que tu m'as marqué qui génère une erreur.

    En bref le code en lui meme ne générè pas d'erreur
    Je n'arrive pas à excécuter ce code ci dessous car le $id est vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ma_requeteb = "INSERT INTO Photos(nom_sorties,id_sorties)VALUES('$nom_sortie','$id') ";
                mysql_query($ma_requeteb);
     
     
    $ma_requeteb = "UPDATE Photos SET nom_sorties='" . $nom_sortie . "' WHERE id_sorties=$id";
                mysql_query($ma_requeteb);
    Du coup j'ai mis un echo pour savoir si $id avait une valeur, mais il n'en a pas...

  6. #6
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    As-tu essayé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="id" value="<? echo $_POST['id']; ?>"/>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    ca ne marche pas Linaa

  8. #8
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Euh, dans ton 'if', tu ne testes pas si 'id' est défini (isset($_POST['id'])).
    Mais dans ton cas, j'me demande si c'est pas plutôt empty() que tu devrais utiliser!

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    en faisant avec (isset($_POST['id']) ca génère pas d'erreur, le empty jvois pas comment l'utiliser ?

  10. #10
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    En fait, le isset(), sert à tester l'existence d'une variable alors que empty(), verifie si le contenu est vide ou non!
    Une variable peut exister, mais être vide...

    Dans ton cas, il sera possible de ne pas remplir les champs puis de valider...
    Ca passera dans le if !

    Le empty() s'utilise comme le isset()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    empty($_POST['nom_sortie'])
    Voilà

  11. #11
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    Récupére le précédent id avant de faire ton update :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ma_requeteb = "INSERT INTO Photos(nom_sorties,id_sorties)VALUES('$nom_sortie','$id') "; 
                mysql_query($ma_requeteb); 
     
     
    mysql_query($query);
    $id=mysql_insert_id();
     
     
    $ma_requeteb = "UPDATE Photos SET nom_sorties='" . $nom_sortie . "' WHERE id_sorties=$id"; 
                mysql_query($ma_requeteb);
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  12. #12
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Rectif :

    Enléve le mysql_query($query); en excedant et laisse la ligne :

    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  2. checker si un port est utilisé ou non
    Par Jérémy Lefevre dans le forum Flash
    Réponses: 7
    Dernier message: 06/06/2007, 14h23
  3. Réponses: 16
    Dernier message: 13/03/2007, 11h00
  4. Fonction non définie (alors qu'elle l'est) - Cocher toutes les cases
    Par navis84 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/09/2006, 12h02
  5. Réponses: 4
    Dernier message: 01/07/2005, 16h20

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