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 :

Insérer valeur récupérée en get dans base de données


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut Insérer valeur récupérée en get dans base de données
    Bonjour,

    Je récupère ma valeur en get dans mon url https://www.xxxxxxx/inscription.php?id_pros=54351 soit https://www.xxxxxxx/inscription.php?id_pros=$id_pros depuis une page d'inscription et sur ma nouvelle page https://www.xxxxxxx/inscription2.php, je souhaite faire un enregistrement de cette variable récupérée en get dans ma table publications mais je n'y arrive pas alors que le contenu de ma variable s'affiche bien sur ma page. Lorsque je fais l'insertion dans ma table, j'ai un 0 à la place de la valeur de la variable qui devrait être 54351 dans ce cas.

    Voici mon code :
    Code php : 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
     
    <?php 
    include 'connect.php';
     
    $id_pros = $_GET['id_pros'];
    echo 'pros ici :';
    echo $id_pros;
     
    if(isset($_POST['upload']))
    {
    	foreach($_POST['code_publi'] as $code_publi) 
    	{
    		$cSql = "INSERT INTO publications VALUES ('','".$code_publi."','".$id_pros."', NOW())";
    		mysql_query($cSql) or die(mysql_error());
    }
     
    	mysql_close();						 
     
    }
    ?>

    Merci beaucoup pour votre aide

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    bonjour,

    1- il faudrait connaitre la structure de la table (surtout format des champs) pour en dire plus.
    ....."','".$id_pros."', ...... : ici, tu mets des guillemets autour, ce qui en fait une "chaine".
    Si le format est INT dans la table, ça ne va pas.

    2- tu peux/dois passer la données en POST via un <input type="hidden" />.
    Sinon, n’importe qui peut modifier la valeur dans l'URL.

    3- mysql_ est OBSOLÈTE depuis belle lurette.
    IL faut utiliser mysqli_ ou mieux : PDO.

    4- même avec mysql_, ON NE PASSE JAMAIS DIRECTEMENT des données dans les requêtes !!

  3. #3
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci Jreaux62
    J'avais un int dans ma table pour le champ
    id int(11) Incrément automatique
    code_publication varchar(50)
    id_pros varchar(50)
    date_maj date

    Je l'ai modifié par un varchar, rien ne s'affiche mais je n'ai plus le 0. Et j'ai rajouté le champ hidden

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="id_pros" value="<?php echo $_POST['id_pros']; ?>">
    Mais je ne récupère pas toujours pas le contenu.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cSql = "INSERT INTO publications VALUES ('','".$code_publi."','".$id_pros."', NOW())";
    Tu ne nommes pas les colonnes où les valeurs seront placées : INSERT INTO publications (code_publication, id_pros, ...) VALUES (...)

    Il est probable que ta colonne id_pros se retrouve non valorisée et qu'une valeur par défaut soit affectée.

    Comme le dit jreau il faut oublier mysql_, utilise plutôt PDO et pense à bien échapper tes valeurs avec PDO::quote(), ça donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = <<<SQL
        INSERT INTO publications
        SET
            code_publication = {$pdo->quote($code_publi)},
            id_pros = {$pdo->quote($id_pros)}, -- Là on est sûr que $id_pros est bien affecté au bon endroit
            date_maj = NOW()
        SQL;
     
    echo "DEBUG : <pre>{$sql}</pre>";
     
    $pdo->query($sql);

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    J'avais un int dans ma table pour le champ
    ...
    Je l'ai modifié par un varchar
    Pourquoi ? Si les valeurs id_pros sont des entiers il n'y a pas de raison de transformer ta colonne en VARCHAR.

  6. #6
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    AVEC :
    • id INT(11) Incrément automatique
    • code_publication VARCHAR(50)
    • id_pros INT(11) -> si c'est un identifiant numérique, il faut INT, pas VARCHAR
    • date_maj DATE


    Ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    include 'connect.php';
     
    if(isset($_POST['upload']) && !empty($_POST['id_pros']) && !_POST($_GET['code_publi']) )
    {
    	foreach($_POST['code_publi'] as $code_publi) 
    	{
    		$cSql = "INSERT INTO publications VALUES (NULL,'".mysql_real_escape_string($code_publi)."',".mysql_real_escape_string($id_pros).", NOW())";
    		mysql_query($cSql) or die(mysql_error());
    	}
    	mysql_close();
    }
    ?>
    • VALUES (NULL,.... : car id est auto-incrémenté (= il sera automatiquement incrémenté)
    • VALUES (0,.... fonctionne aussi.

  7. #7
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Bonjour et merci beaucoup pour votre aide,
    Désolée de revenir si tardivement.

    Je n'ai pas réussi à récupérer ma variable $id_pros en $_POST ou $_SESSION, je n'y arrive qu'en rajoutant la variable dans l'url de mon script d'inscription, en GET, pas top mais j'ai essayé de sécuriser plus ou moins en attendant.

    Lors de la soumission de mon formulaire, l'insertion dans la base se fait mais je n'arrive toujours pas à insérer la valeur de ma variable $id_pros, elle reste à 0. Je ne vois pas comment la récupérer, je l'affiche bien début de page mais après je la perds. Est-ce qu'il faut que je fasse autrement au moment du foreach pour pouvoir l'insérer ?

    Voici mon code et merci beaucoup pour votre aide précieuse

    Code php : 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php 
    session_start();
     
    $id_pros = !empty($_GET['id_pros']) ? $_GET['id_pros'] : 0;
     
    $id_pros = $_GET['id_pros'];
    $id_pros = strip_tags($id_pros);
    $id_pros = stripslashes($id_pros);
    $id_pros = trim($id_pros);
     
     
    include 'con.php';
     
    echo "Pros1: ".$id_pros;
     
     
    if(isset($_POST['upload']))						
    {
     
    mysql_query("SET NAMES UTF8");
     
    			foreach($_POST['code_publi'] as $code_publi) {
     
    				$cSql2 = "INSERT INTO demande_publi VALUES ('','".mysql_real_escape_string($code_publi)."','" . mysql_real_escape_string($id_pros) . "', NOW())";
    				mysql_query($cSql2) or die(mysql_error());
     
    				$cSql5 = "UPDATE documentation SET qte_demande=qte_demande+1 WHERE code_publication_doc='".$code_publi."'";
     
    				mysql_query($cSql5) or die(mysql_error());	
     
    			}
     
    		  $exp = "xxxxxxxxx"; 
    		  $dest = 'xxxxxxxxxxxxxx';
    		  $entete .= 'From: ''< '.$exp.'>'."\n";
    		  $message .= "Demande de doc"."\n\n";
    		  $message .= "Email : ".$_POST['email']."\n\n";
    		  $message .= "Object : ".$_POST['objet']."\n\n";
    		  $message .= "\n\n";
    		  $message = utf8_decode($message); 		  
     
     
    		  if(mail($dest, $_POST['objet'], $message, $entete))
    		  {
    			echo "<br />";
    			echo"\n\n"; 
    			echo "<SCRIPT LANGUAGE=\"JavaScript\">document.location.href=\"xxxxxxxxxxxxxx\"</SCRIPT>";
    		   }
     
     
    	if ($data1[0] == 0) 
    	{
                session_start();
                $_SESSION['id_pros' ] = $data['id_pros'];            
                $_POST['login']    = $_POST['email'];
                $_POST['password'] = $_POST['password'];
                include "lo.php";
               	exit();
        }
     
    	mysql_close();						 
    }
     
    ?>

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cSql2 = "INSERT INTO demande_publi VALUES ('','".mysql_real_escape_string($code_publi)."','" . mysql_real_escape_string($id_pros) . "', NOW())";
    Ici rien ne dit que $id_pros tombe dans la bonne colonne. Du coup tu te retrouves peut-être avec une valeur par défaut à 0.

    Je te conseille de nommer systématiquement les colonnes utilisées par le INSERT. Cela permet d'être sûr de l'affectation et de faire évoluer ta table plus tard sans encombres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $code_publi = mysql_real_escape_string($code_publi);
    $id_pros = mysql_real_escape_string($id_pros);
    $sql = <<<SQL 
        INSERT INTO demande_publi
        SET
            colonne_code_publi = {$code_publi},
            colonne_id_pros = {$id_pros},
            colonne_timestamp = NOW()
        SQL;
    Ou avec la syntaxe traditionnelle (mais illisible) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $code_publi = mysql_real_escape_string($code_publi);
    $id_pros = mysql_real_escape_string($id_pros);
    $sql = <<<SQL 
        INSERT INTO demande_publi (colonne_code_publi, colonne_id_pros, colonne_timestamp)
        VALUES ({$code_publi}, {$id_pros}, NOW())
        SQL;

  9. #9
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    Je me rends compte que j'ai déjà apporté cette réponse, mais pas de retour de ta part

  10. #10
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci pour ta réponse, l'insertion se fait bien dans la bonne colonne puisque les autres sont bien remplies avec les bonnes infos lors de l'insertion. Le problème est que ma variable $id_pros reste vide.
    J'avais déjà testé ton code, cela me donne une erreur de syntaxe, peut-être les trois >>>. Je viens de tester à nouveau, toujours le problème de syntaxe. Est-ce que je peux faire autrement au niveau du code pour eviter les erreurs de syntaxe ? merci

  11. #11
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    l'insertion se fait bien dans la bonne colonne puisque les autres sont bien remplies avec les bonnes infos lors de l'insertion
    Ben non, ça n'a rien à voir.

    J'avais déjà testé ton code, cela me donne une erreur de syntaxe, peut-être les trois >>>
    Ce sont 3 <<< Si tu as une erreur alors soit tu copies/colles mal le script, soit tu as une très vieille version de PHP.
    Tu peux délimiter ta chaîne de manière classique sinon, avec des "

  12. #12
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Bonjour et merci pour ton aide,
    En fait, ma version de php est trop ancienne. J'ai repris la méthode ancienne :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $cSql2 = "INSERT INTO demande_publi (id, code_publi, id_pros, date_maj) 
                  VALUES ('','".$code_publi"','" . $id_pros . "', NOW())";
    mysql_query($cSql2) or die(mysql_error());

    Par contre, j'ai toujours 0 dans mon champ id_pros.
    Je ne récupère plus ma variable $id_pros lorsque je rentre dans le foreach parce qu'avant je l'ai bien avec mes echo. Il y a quelque chose à ce niveau là je pense mais ça m'échappe.

  13. #13
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    Donne ton dernier script en date

    Affiche $cSql2 juste avant exécution, qu'on voit ce que la requête a dans le ventre

  14. #14
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Le voici et merci beaucoup pour ton aide : Pour l'affichage de $cSql2, je ne suis pas sur la même machine ce soir. Si j'essaye d'afficher mon $id_pros avec un echo quand je suis dans le foreach, il ne le connait pas, je doit peut-être lui ajouter le $id_pros dans la boucle foreach ?
    Code php : 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php 
    session_start();
     
    $id_pros = !empty($_GET['id_pros']) ? $_GET['id_pros'] : 0;
     
    $id_pros = $_GET['id_pros'];
    $id_pros = strip_tags($id_pros);
    $id_pros = stripslashes($id_pros);
    $id_pros = trim($id_pros);
     
     
    include 'con.php';
     
    echo "Pros1: ".$id_pros;
     
     
    if(isset($_POST['upload']))						
    {
     
    mysql_query("SET NAMES UTF8");
     
    			foreach($_POST['code_publi'] as $code_publi) {
     
    		$code_publi = mysql_real_escape_string($code_publi);
    		$id_pros = mysql_real_escape_string($id_pros);
     
    				$cSql2 = "INSERT INTO demande_publi (id, code_publi, id_pros, date_maj) 
                  VALUES ('','".$code_publi"','" . $id_pros . "', NOW())";
    mysql_query($cSql2) or die(mysql_error());
     
    				$cSql5 = "UPDATE documentation SET qte_demande=qte_demande+1 WHERE code_publication_doc='".$code_publi."'";
     
    				mysql_query($cSql5) or die(mysql_error());	
     
    			}
     
    		  $exp = "xxxxxxxxx"; 
    		  $dest = 'xxxxxxxxxxxxxx';
    		  $entete .= 'From: ''< '.$exp.'>'."\n";
    		  $message .= "Demande de doc"."\n\n";
    		  $message .= "Email : ".$_POST['email']."\n\n";
    		  $message .= "Object : ".$_POST['objet']."\n\n";
    		  $message .= "\n\n";
    		  $message = utf8_decode($message); 		  
     
     
    		  if(mail($dest, $_POST['objet'], $message, $entete))
    		  {
    			echo "<br />";
    			echo"\n\n"; 
    			echo "<SCRIPT LANGUAGE=\"JavaScript\">document.location.href=\"xxxxxxxxxxxxxx\"</SCRIPT>";
    		   }
     
     
    	if ($data1[0] == 0) 
    	{
                session_start();
                $_SESSION['id_pros' ] = $data['id_pros'];            
                $_POST['login']    = $_POST['email'];
                $_POST['password'] = $_POST['password'];
                include "lo.php";
               	exit();
        }
     
    	mysql_close();						 
    }
     
    ?>

  15. #15
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    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 315
    Billets dans le blog
    17
    Par défaut
    Peut-être les échappements successifs de $id_pros qui posent problème, essaie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo "DEBUG1=[{$id_pros}]";
    $id_pros = mysql_real_escape_string($id_pros);
    echo "DEBUG2=[{$id_pros}]";
    foreach($_POST['code_publi'] as $code_publi) {
    	$code_publi = mysql_real_escape_string($code_publi);
    	$cSql2 = "INSERT INTO demande_publi (id, code_publi, id_pros, date_maj) 
    		VALUES ('','".$code_publi"','" . $id_pros . "', NOW())";
    	echo "DEBUG3=[{$cSql2}]";
    	mysql_query($cSql2) or die(mysql_error());

  16. #16
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci pour ta réponse mais ma version de php ne gère pas les echo "DEBUG2=[{$id_pros}]";.
    J'ai testé en commentant échappements successifs de $id_pros mais j'ai toujours un 0 dans la table

  17. #17
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Je me permet d'intervenir ^^

    Cette écriture existe probablement depuis la version 1 de PHP (perso, j'ai commencé à PHP3) donc si quelque chose ne va pas, c'est autre chose.

    Pensez à être précise : si quelque chose ne va pas, expliquez quoi et comment.
    Vous devez probablement avoir des messages erreurs, pensez à les partager c'est pas boule-de-cristal.net ici

    Sinon, je rejoint l'avis de @jreaux62 : il faudrait nous montrer la structure de la table

  18. #18
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci, oui certainement il y a autre chose et je me doute bien que ce n'est pas facile pour vous de comprendre mon problème. Je vous suis reconnaissante de prendre du temps pour m'aider.
    Je n'ai pas accès aux erreurs, l'affichage est bloqué sur le serveur, je n'ai pas accès aujourd'hui pour pouvoir les rendre accessibles.

    Voici ma table :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO `demande_publi` (`id`, `code_publi`, `id_pros`, `date_maj`) VALUES
     
    (384,	'20190804-GT8',	'0',	'2021-09-03'),
    (385,	'20191028-CP',	'testid',	'2021-09-03'),
    (403,	'20190804-GT8',	'',	'2021-09-03');

    Et la structure :
    id int(11) Incrément automatique
    code_publi varchar(50)
    id_pros varchar(100)
    date_maj date

    Le problème est que je n'arrive pas à récupérer le contenu de ma variable $id_pros alors que je peux l'afficher dans mes echos au début du script avant le foreach en fait et à partir du moment où je suis dans le foreach, il ne me reconnait plus ma variable puisque j'ai soit un 0 dans la table avant alors que j'avait mis un int, j'ai changé après en varchar et ai fait un test avec un contenu de variable en dur $id_prospect = 'testid'; juste avant l'insertion dans la table, ça a fonctionné mais si je l'enlève et essaie de récupérer la valeur réelle de la variable, je n'ai rien dans le champ dans la table.

    Merci

  19. #19
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Rebonjour,

    Concernant la structure de la table, il manque les index
    Pourriez-vous les lister ou simplement copier le code de création de la table (c'est ce qui commence par CREATE TABLE lorsque vous faites un export)

    Pour afficher les erreurs PHP, vous pouvez mettre en haut de fichier :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
    ini_set('display_errors', '1');
    ini_set('display_startup_errors', '1');

    A partir de là, il faudrait voir avec le code de @Séb. jusqu'à quel moment vous voyez les débugs (si vous ne les voyez pas du tout , c'est sûrement qu'une erreur fatale a lieu avant !)

    A ce propos, il y un problème de condition dans votre code selon moi.
    Vous vérifiez if(isset($_POST['upload'])) et par contre, vous utilisez $_POST['code_publi'] sans vérifier qu'il ne soit pas vide et qu'il s'agisse d'un array.
    Or si ce n'est pas le cas vous aurez un warning (que vous ne verrez pas sans activer l'affichage des erreurs) mais surtout, il ne se passera rien !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if(empty($_POST['code_publi'] || !is_array($_POST['code_publi'])) {
            // Utiliser un die() c'est peut-être un peu beaucoup et pas user friendly mais c'est déjà bon pour tester 
            // Il faudrait voir ce qu'il faut faire si cette condition ne passe pas : un message d'erreur ? une valeur par défaut ?
    	die("code_publi n'existe pas ou n'est pas un array");
    }
    foreach($_POST['code_publi'] as $code_publi) {
    	// ... instructions
    }

  20. #20
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    J'ai accès aux erreurs maintenant, très bien, merci pour toutes ces précisions, ça me permet d'avancer et me servira à nouveau, c'est chouette.

    Le nom des champs et variables est un peu différents comme j'ai changé de machine et suis revenue sur un script plus ancien.

    Voici la structure de ma table :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE `demande_publication` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `code_publication` varchar(50) NOT NULL,
      `id_prospect` varchar(100) NOT NULL,
      `date_maj` date NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Et voici toute ma page de code formulaire inclus qui permet à l'utilisateur de sélectionner ses publications qui remontent en dynamique via des tables. L'utilisateur arrive sur cette page car il a déjà un compte de créé que l'on repère sur la page inscription1 précédente et on envoie son identifiant, le id_prospect sur la page qui me pose problème en $_GET. J'ai rajouté les echo "DEBUG2 de Seb qui fonctionnent effectivement, j'ai du faire ajouter autre chose la première fois qui m'affichait une page blanche. Je n'ai de retour sur aucun des trois DEBUG.
    Pour les erreurs, voici celle qui est retournée :


    Notice: Undefined index: id_prospect in /var/www/xxxxx/inscription.php on line 15 soit ceci à cet endroit : $id_prospect=$_GET['id_prospect'];

    Voici le code et merci beaucoup

    Code php : 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
     
    <?php 
    ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
    ini_set('display_errors', '1');
    ini_set('display_startup_errors', '1');
     
    $id_prospect = !empty($_GET['id_prospect']) ? $_GET['id_prospect'] : 0;
     
    // username and password sent from form
    $id_prospect=$_GET['id_prospect'];
     
    // To prevent XSS injection
    $id_prospect = strip_tags($id_prospect);
     
    // To protect MySQL injection
    $id_prospect = stripslashes($id_prospect);
     
    //$id_prospect = mysql_real_escape_string($id_prospect);
     
    // trim function removes space before and after the strings
    $id_prospect = trim($id_prospect);
     
    include 'connect.inc.php';
     
    echo "Prospect1: ".$id_prospect;
     
     
    //if(isset($_POST['upload']) && (isset($_POST['code_publication'])))
    if(isset($_POST['upload']))
    {
     
    mysql_query("SET NAMES UTF8");
     
    			$checkbox1 = $_POST['chk1'];
     
    			echo "DEBUG1=[{$id_prospect}]";
     
    			$id_prospect = mysql_real_escape_string($id_prospect);
    			echo "DEBUG2=[{$id_pros}]";
     
    			foreach($_POST['code_publication_doc'] as $code_publication_doc) {
     
    				$code_publication_doc = mysql_real_escape_string($code_publication_doc);
     
    				$cSql2 = "INSERT INTO demande_publications (id, code_publication, id_prospect, date_maj) VALUES ('','".$code_publication_doc."','" . $id_prospect . "', NOW())";
    				mysql_query($cSql2) or die(mysql_error());
    				echo "DEBUG3=[{$cSql2}]";
     
    				$cSql5 = "UPDATE documentation SET qte_demande=qte_demande+1 WHERE code_publication_doc='".$code_publication_doc."'";
    				mysql_query($cSql5) or die(mysql_error());	
    			}
     
     
    		  $exp = "xxxxxxxxxxxx"; 
    		  $dest = 'xxxxxxxxxxxxx';
    		  $entete .= 'From: xxxxxxxxxxxx< '.$exp.'>'."\n";
    		  $entete .= "reply-to: ".$_POST['nom']." <".$_POST['mail'].">\r\n";
    		  $entete .= "return-path: xxxxxxxxx - ".$_POST['nom']." <".$_POST['mail'].">\r\n";
    		  $entete .= "mime-version: 1.0";
    		  $entete .= "Content-type: text/html; charset=UTF-8\r\n";
    		  $entete .= "Content-Transfer-Encoding: 8bit"; 
    		  $entete .= "x-mailer: php/" . phpversion();
    		  $entete .= "x-sender: xxxxxxxx - ".$_POST['nom']." <".$_POST['mail'].">";
    		  $entete .= "x-auth-smtp-user: localhost";
     
    		  $message .= "Demande de documentation "."\n\n";
     
    		  $message .= "Email : ".$_POST['email']."\n\n";
    		  $message .= "Object : ".$_POST['objet']."\n\n";
    		  $message .= "\n\n";
    		  $message = utf8_decode($message); 		  
     
    		  // MESSAGE
    		  // SI TOUT VA BIEN ON ENVOIE LE MAIL
    		  if(mail($dest, $_POST['objet'], $message, $entete))
    		  {
    			// MESSAGE DE CONFIRMATION
    			echo "<br />";
    			echo '<span style="background-color:#33cc66;font-size:17px;color: #ffffff;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YOUR MESSAGE HAS BEEN SENT!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>';
    			echo "<br />";
    			echo"\n\n";
    			echo"\n\n"; 
    			echo "<SCRIPT LANGUAGE=\"JavaScript\">document.location.href=\"http://xxxxxxxxxxxxxxx\"</SCRIPT>";
    		   }
     
     
    	if ($data1[0] == 0) 
    	{
                session_start();
                $_SESSION['id_prospect' ] = $data['id_prospect'];            
                $_POST['login']    = $_POST['email'];
                $_POST['password'] = $_POST['password'];
                include "log.php";
               	exit();
        }
     
    	mysql_close();						 
     
    }
     
    ?>
     
     
     
    <form  action="inscription.php" method="post" width="650">	
     
    		<p class="titre_formu_c">Check the boxes corresponding to the publications you wish to receive:</p>
     
     
     
     <!-------- ACCORDION ------------------------------------------------------------------------------------------------------------------->	
     
     <div class="container">
         <div id="accordion">
     
          <div class="card">
            <div class="card-header">
      <a class="card-link" data-toggle="collapse"  href="#menuone" aria-expanded="true" aria-controls="menuone"><span style="font-family: 'Roboto',Helvetica,Arial,Lucida,sans-serif;
    font-size: 16px;">POSTERS</span><span class="collapsed minus"><b>></b></span>
    <span class="expanded minus"><b><</b></span></a>        </div>
            <div id="menuone" class="collapse show">
              <div class="card-body">
     
    			<table width="650" class="table" >
    			   <tbody>
    				 <tr class="table-bordered" style="display: grid;grid-template-columns: repeat(auto-fill,minmax(25%, 1fr));">  
    			<?php
    			$sql ="SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.division, documentation.qte_stock, documentation.qte_demande, documentation.formulaire_affich, documentation.date_maj, categories_publications.categorie AS categorie_publication, divisions.division_titre AS division 
    			FROM documentation 
    			LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    			LEFT JOIN divisions ON documentation.division = divisions.id
    			WHERE categories_publications.id = 1 and documentation.formulaire_affich='oui'";
     
    			$resultat = mysql_query($sql,$conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    			while ($rang= mysql_fetch_array ($resultat)){ 
    			?> 		
    				    <td class="TexteCheckBoxTTTT_2">
    					<a style="text-decoration:none;" class="mustang-gallery" title="<?php echo $rang['description']; ?>" href="../images/<?php echo $rang['image']; ?>" rel="shadowbox[mustang]">
    					<img style="text-decoration:none;"  class="bordure" src="../images/<?php echo $rang['image']; ?>" alt="<?php echo $rang['description']; ?>" width="110" height="144"/></a> 
    					<br /><br />
    					<input type="checkbox" name="code_publication_doc[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['code_publication_doc']) AND in_array($rang['code_publication_doc'], $_POST['code_publication_doc'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>	
    					</td>
    			<?php 
    				}
    			?>  	   
    				</tr>   	   
    			   </tbody>
    			</table>  
     
              </div>
            </div>
          </div>
     
    <br>
     
          <div class="card">
            <div class="card-header">
      <a class="card-link" data-toggle="collapse"  href="#menutwo" aria-expanded="false" aria-controls="menutwo"><span style="font-family: 'Roboto',Helvetica,Arial,Lucida,sans-serif;
    font-size: 16px;">I CATALOGS</span><span class="collapsed minus"><b>></b></span>
    <span class="expanded minus"><b><</b></span></a>        </div>
            <div id="menutwo" class="collapse">
              <div class="card-body">
     
    			<table width="650" class="table" >
    			   <tbody>
    				 <tr class="table-bordered" style="display: grid;grid-template-columns: repeat(auto-fill,minmax(25%, 1fr));">  
    			<?php
    			$sql ="SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.division, documentation.qte_stock, documentation.qte_demande, documentation.formulaire_affich, documentation.date_maj, categories_publications.categorie AS categorie_publication, divisions.division_titre AS division 
    			FROM documentation 
    			LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    			LEFT JOIN divisions ON documentation.division = divisions.id
    			WHERE categories_publications.id = 2 and documentation.formulaire_affich='oui'";
     
    			$resultat = mysql_query($sql,$conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    			while ($rang= mysql_fetch_array ($resultat)){ 
    			?> 		
    				    <td class="TexteCheckBoxTTTT_2">
    					<a style="text-decoration:none;" class="mustang-gallery" title="<?php echo $rang['description']; ?>" href="../images/<?php echo $rang['image']; ?>" rel="shadowbox[mustang]">
    					<img style="text-decoration:none;"  class="bordure" src="../images/<?php echo $rang['image']; ?>" alt="<?php echo $rang['description']; ?>" width="110" height="144"/></a> 
    					<br /><br />
    					<input type="checkbox" name="code_publication_doc[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['code_publication_doc']) AND in_array($rang['code_publication_doc'], $_POST['code_publication_doc'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>	
    					</td>
    			<?php 
    				}
    			?>  	   
    				</tr>   	   
    			   </tbody>
    			</table>
     
              </div>
            </div>
          </div>
     
    <br>
     
          <div class="card">
            <div class="card-header">
      <a class="card-link" data-toggle="collapse"  href="#menu3" aria-expanded="false" aria-controls="menu3"><span style="font-family: 'Roboto',Helvetica,Arial,Lucida,sans-serif;
    font-size: 16px;">PUBLICATIONS</span><span class="collapsed minus"><b>></b></span>
    <span class="expanded minus"><b><</b></span></a>       </div>
            <div id="menu3" class="collapse">
              <div class="card-body">
     
    			 <table width="650" class="table" >
    			   <tbody>
    				 <tr class="table-bordered" style="display: grid;grid-template-columns: repeat(auto-fill,minmax(25%, 1fr));">  
    			<?php
    			$sql ="SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.division, documentation.qte_stock, documentation.qte_demande, documentation.formulaire_affich, documentation.date_maj, categories_publications.categorie AS categorie_publication, divisions.division_titre AS division 
    			FROM documentation 
    			LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    			LEFT JOIN divisions ON documentation.division = divisions.id
    			WHERE categories_publications.id = 3 and documentation.formulaire_affich='oui'";
     
    			$resultat = mysql_query($sql,$conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    			while ($rang= mysql_fetch_array ($resultat)){ 
    			?> 		
    				    <td class="TexteCheckBoxTTTT_2">
    					<a style="text-decoration:none;" class="mustang-gallery" title="<?php echo $rang['description']; ?>" href="../images/<?php echo $rang['image']; ?>" rel="shadowbox[mustang]">
    					<img style="text-decoration:none;"  class="bordure" src="../images/<?php echo $rang['image']; ?>" alt="<?php echo $rang['description']; ?>" width="110" height="144"/></a> 
    					<br /><br />
    					<input type="checkbox" name="code_publication_doc[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['code_publication_doc']) AND in_array($rang['code_publication_doc'], $_POST['code_publication_doc'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>	
    					</td>
    			<?php 
    				}
    			?>  	   
    				</tr>   	   
    			   </tbody>
    			</table> 
              </div>
            </div>
          </div>
    <br>	  
    	  <div class="card">
            <div class="card-header">
      <a class="card-link" data-toggle="collapse"  href="#menu4" aria-expanded="false" aria-controls="menu4"><span style="font-family: 'Roboto',Helvetica,Arial,Lucida,sans-serif;
    font-size: 16px;">CATALOGS </span><span class="collapsed minus"><b>></b></span>
    <span class="expanded minus"><b><</b></span></a>       </div>
            <div id="menu4" class="collapse">
              <div class="card-body">
     
     
    			  <table width="650" class="table" >
    			   <tbody>
     
    			<?php
    			$sql ="SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.division, documentation.qte_stock, documentation.qte_demande, documentation.formulaire_affich, documentation.date_maj, categories_publications.categorie AS categorie_publication, divisions.division_titre AS division 
    			FROM documentation 
    			LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    			LEFT JOIN divisions ON documentation.division = divisions.id
    			WHERE categories_publications.id = 4 and documentation.formulaire_affich='oui'";
     
    			$resultat = mysql_query($sql,$conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    			while ($rang= mysql_fetch_array ($resultat)){ 
    			?> 	
    				   <tr>
    				     <td class="TexteCheckBoxTTTT_22" valign="top">
    						<input type="checkbox" name="code_publication_doc[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['code_publication_doc']) AND in_array($rang['code_publication_doc'], $_POST['code_publication_doc'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>
     
    					</td>
    					   </tr> 
    			<?php 
    				}
    			?>  	   
     
    			   </tbody>
    			</table>
     
     
    	</table> 
    </fieldset>	   
    </form>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insérer valeur dans base de données JBDC
    Par Mrlaurent90 dans le forum JDBC
    Réponses: 19
    Dernier message: 30/01/2011, 21h41
  2. insérer valeur d'une cellule dans un lien
    Par joniyyy dans le forum Excel
    Réponses: 3
    Dernier message: 17/01/2009, 18h05
  3. Réponses: 10
    Dernier message: 28/06/2007, 15h27
  4. insérer image dans base de données
    Par eriz dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/04/2007, 12h03
  5. Insérer Enregistrement dans Base de données
    Par TurricanII dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/05/2006, 12h59

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