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 :

test de !Empty() qui ne teste pas, apparemment :/


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut test de !Empty() qui ne teste pas, apparemment :/
    Salut

    Je ne comprend pas ce qui se passe avec mon code :/ pourtant il me semble juste.


    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
     
    if( isset($_POST['valide']) ) 
    {
    	if(!empty($_POST['pseudo'])and !empty($_POST['pass'])and !empty($_POST['email']) )
    	{
    		$ok=0; // 0=Tous les champs sont correctement remplis.
    		$info='';
    		$pseudo=htmlspecialchars($_POST['pseudo']);
    		$pass=htmlspecialchars($_POST['pass']);
    		$passhash=password_hash($pass, PASSWORD_DEFAULT);
    		$email=htmlspecialchars($_POST['email']);
     
                   // tests champs 1 donne $ok=1 si le champ est mauvais.
                   // tests champs 2 donne $ok=2 si le champ est mauvais.
                   // tests champs 3 donne $ok=3 si le champ est mauvais.
                   // tests champs 4 donne $ok=4 si le champ est mauvais.
              }
              else
              {
    	       $info="Erreur : Tous les champs doivent êtres corrects !";
              }
     
    	if ($ok==0)
    	{
                   // Enregistrement dans la base
                   $info="C'est enregistré !";
            }
     
            // ici j'affiche $info.
            echo $info;
    }
    Quand j'oublie un champ ou que j'en mets aucun, il donne l'erreur indiquée ci-dessus.
    Quand je remplis bien tous les champs, il valide sans rien dire, mais rien ne s'enregistre dans la base, car $ok vaut plus que 0 apparemment.
    On remarque que le 4eme test de champ, n'est pas inclu dans les tests des Empty, mais c'est parce que c'est un champ radio et je sais pas comment tester son empty mais c'est pas important puisque je le teste ensuite non ? (dans les 4 tests de champs)

    EDIT : Désolé, ça venait de ce que j'avais mis plus que 4 champs dans l'insertion BDD, avec (?,?, etc...)


    EDIT : SALUT !!!
    Mon probleme est résolu mais il me cause un autre soucis :
    Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\beserious\index.php on line 156
    C'est cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DB->insert("INSERT INTO identité(activation,genre,pseudo,pass,mail,jour,heure) VALUES(?,?,?,?,?,?,?)",array($activation,$genre,$pseudo,$passhash,$email,$jour,$heure));
    Ma question est : ça veut dire quoi cette erreur systeme PHP ?

    MON CODE EN ENTIER :
    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
    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
    <?php
     
    if( isset($_POST['valide']) ) 
    {
    	include ('connection.php');
     
    	if(!empty($_POST['genre'])and !empty($_POST['pseudo'])and !empty($_POST['pass'])and !empty($_POST['email']) )
    	{
    		$ok=0; // 0=Tous les champs sont correctement remplis.
    		$info='';
    		$pseudo=htmlspecialchars($_POST['pseudo']);
    		$pass=htmlspecialchars($_POST['pass']);
    		$passhash=password_hash($pass, PASSWORD_DEFAULT);
    		$email=htmlspecialchars($_POST['email']);
     
    		// ici on vérifie si le genre a été choisi.
    		if(!isset($_POST['genre']))
    		{
    			$info=$info.'<span class="erreur">GENRE</span> : "un homme" ou "une femme" !<br/>';
    			$ok=1;
    		}else $genre=$_POST['genre'];
     
    		// ici on teste si le pseudo a été saisi et s'il a plus de 7 caractères.
    		if(($pseudo=='') or (strlen($pseudo)<8))
    		{
    			$info=$info.'<span class="erreur">PSEUDO</span> : Il doit avoir au moins  8 caractères !<br/>';
    			$ok=2;
    		}
     
    		// ici on teste si le mot de passe est inférieur à 8 caractères.
    		if(mb_strlen($pass)<8)
    		{
    			$info=$info.'<span class="erreur">MOT DE PASSE</span> : Il doit avoir au moins  8 caractères !<br/>';
    			$ok=3;
    		}
     
    		// ici on teste si l'email saisi est bien une adresse email.
    		if(filter_var($email, FILTER_VALIDATE_EMAIL)==false)
    		{
    			$info=$info.'<span class="erreur">EMAIL</span> : IL n\'est pas valide !<br/>';
    			$ok=4;
    		}
     
    		// ici on teste si tout est OK.
    		if($ok==0)
    		{
     
    			$jour=date("j-m-Y");
     
    			$heure=date("H:i:s");
    			// ici on crée un code INT aléatoire pour activation du compte.
    			$activation=mt_rand(1000000, 100000000);
     
    			// ici Insertion dans la base, du membre et de son code d'activation.
    			$DB->insert("INSERT INTO identité(activation,genre,pseudo,pass,mail,jour,heure) VALUES(?,?,?,?,?,?,?)",array($activation,$genre,$pseudo,$passhash,$email,$jour,$heure));
    			$info="<span class='gras'>$pseudo</span> :<p/>inscrit !<p/>
    			Un code pour activer votre compte va être envoyé par mail<p/>";
     
     
    		}
    	}
    	else
    	{
    		$info="Erreur : Tous les champs doivent êtres corrects !";
    	}
     
    	$variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />
    				<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>
    				<div class=\"panneau\" id=\"panneau\">
    				<div id=\"contenu\">$info<br/>
    				<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/></div></div>
    				<script language=\"javascript\">
    				centre_pannel();
    				</script>
    				</html>";
     
    	echo htmlspecialchars_decode($variable);
     
    }
     
     $pdo = null;
     
     
    ?>

  2. #2
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 547
    Points : 14 923
    Points
    14 923
    Billets dans le blog
    9
    Par défaut
    Salut,

    deux remarques :
    - avec ton approche si plusieurs valeurs sont mauvaises, $ok vaut quoi ?
    - c'est contre-intuitif de considérer $ok == 0 comme indicateur de bonne continuation

    Tu ne devrais pas utiliser and mais &&, un jour tu vas avoir un effet de bord avec and et tu ne comprendras pas pourquoi
    # Dans la Création, tout est permis mais tout n'est pas utile...

  3. #3
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Salut

    Merci Rawsrc pour ton aide !!!

    $ok vaut le chiffre qui lui est donné dans la ligne de test, $ok=1 pour le premier test, etc... chaque test donne un numéro pour $ok, ça me permet de savoir où se situe l'erreur de saisie. C'est seulement quand y a plus d'erreurs de saisie que $ok=0 et que l'enregistrement se fait, et $info vaut "c'est enregistré !".

    Pour le and je savais pas, merci beaucoup

  4. #4
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Salut

    C'est pour le fatal erreur, rien ne s'inscrit dans la base et pourtant les champs sont bien remplis.

    Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\beserious\index.php on line 156
    C'est la ligne $DB INSERT() qui est la ligne 156.

    Je remet mon code ici parce que j'ai peur qu'on le voit pas bien dans le premier post :

    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
    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
    <?php
     
    if( isset($_POST['valide']) ) 
    {
    	include ('connection.php');
     
    	if(!empty($_POST['genre'])and !empty($_POST['pseudo'])and !empty($_POST['pass'])and !empty($_POST['email']) )
    	{
    		$ok=0; // 0=Tous les champs sont correctement remplis.
    		$info='';
    		$pseudo=htmlspecialchars($_POST['pseudo']);
    		$pass=htmlspecialchars($_POST['pass']);
    		$passhash=password_hash($pass, PASSWORD_DEFAULT);
    		$email=htmlspecialchars($_POST['email']);
     
    		// ici on vérifie si le genre a été choisi.
    		if(!isset($_POST['genre']))
    		{
    			$info=$info.'<span class="erreur">GENRE</span> : "un homme" ou "une femme" !<br/>';
    			$ok=1;
    		}else $genre=$_POST['genre'];
     
    		// ici on teste si le pseudo a été saisi et s'il a plus de 7 caractères.
    		if(($pseudo=='') or (strlen($pseudo)<8))
    		{
    			$info=$info.'<span class="erreur">PSEUDO</span> : Il doit avoir au moins  8 caractères !<br/>';
    			$ok=2;
    		}
     
    		// ici on teste si le mot de passe est inférieur à 8 caractères.
    		if(mb_strlen($pass)<8)
    		{
    			$info=$info.'<span class="erreur">MOT DE PASSE</span> : Il doit avoir au moins  8 caractères !<br/>';
    			$ok=3;
    		}
     
    		// ici on teste si l'email saisi est bien une adresse email.
    		if(filter_var($email, FILTER_VALIDATE_EMAIL)==false)
    		{
    			$info=$info.'<span class="erreur">EMAIL</span> : IL n\'est pas valide !<br/>';
    			$ok=4;
    		}
     
    		// ici on teste si tout est OK.
    		if($ok==0)
    		{
    			$jour=date("j-m-Y");
     
    			$heure=date("H:i:s");
    			// ici on crée un code INT aléatoire pour activation du compte.
    			$activation=mt_rand(1000000, 100000000);
     
    			// ici Insertion dans la base, du membre et de son code d'activation.
    			$DB->insert("INSERT INTO identité(activation,genre,pseudo,pass,mail,jour,heure) VALUES(?,?,?,?,?,?,?)",array($activation,$genre,$pseudo,$passhash,$email,$jour,$heure));
    			$info="<span class='gras'>$pseudo</span> :<p/>inscrit !<p/>
    			Un code pour activer votre compte va être envoyé par mail<p/>";
     
    		}
    	}
    	else
    	{
    		$info="Erreur : Tous les champs doivent êtres corrects !";
    	}
     
    	$variable="<html><head><meta charset=\"UTF-8\"><title>Inscription</title><link rel=\"stylesheet\" href=\"erreurs.css\" />
    				<script type=\"text/javascript\" src=\"js/erreurs.js\"></script></head>
    				<div class=\"panneau\" id=\"panneau\">
    				<div id=\"contenu\">$info<br/>
    				<input type=\"button\" id=\"fermer\" value=\"fermer\" onclick=\"ferme()\"><br/></div></div>
    				<script language=\"javascript\">
    				centre_pannel();
    				</script>
    				</html>";
     
    	echo htmlspecialchars_decode($variable);
     
    }
     
     $pdo = null;
     
     
    ?>

  5. #5
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 985
    Points : 11 615
    Points
    11 615
    Par défaut
    Salut
    Citation Envoyé par amateurprg Voir le message
    Salut

    C'est pour le fatal erreur, rien ne s'inscrit dans la base et pourtant les champs sont bien remplis.

    Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\beserious\index.php on line 156

    C'est la ligne $DB INSERT() qui est la ligne 156.
    Plutôt ligne 54 dans code posté, non ?
    ProgElecT
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  6. #6
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 547
    Points : 14 923
    Points
    14 923
    Billets dans le blog
    9
    Par défaut
    il faut que tu lises un peu la doc, c'est utile tu sais
    empty() vérifie déjà si la valeur est isset() et si == '', donc refaire les tests ($pseudo == '') ou (!isset($_POST['genre'])) ne sert strictement à rien.
    Ensuite, tu ne dois pas utiliser htmlspecialchars() pour échapper les données avant de les insérer en base de données. La base de données a son propre mécanisme d'échappement, htmlspecialchars() correspond au mécanisme d'échappement d'un navigateur. D'ailleurs, les caractères pouvant poser problème entre un navigateur et une base de données ne sont pas du tout les mêmes, donc respecte cette logique : à chaque univers, ses mécanismes.

    Jamais d'accents en informatique, JAMAIS, ta table identité c'est juste catastrophique.
    J'ai essayé de reprendre ton code mais c'est pas facile :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
     
    // échappement des caractères dangereux
    $hsc = function($p) { return htmlspecialchars((string)$p, ENT_QUOTES, 'utf-8'); };
     
    if (isset($_POST['valide'])) {
        include 'connection.php';
     
        $msg = [];
     
        if (empty($_POST['genre'])) {
            $msg[] = '<span class="erreur">GENRE</span> : "un homme" ou "une femme" !<br/>';
        }
     
        if (empty($_POST['pseudo']) || (mb_strlen($_POST['pseudo']) < 7)) {
            $msg[] = '<span class="erreur">PSEUDO</span> : 8 caractères minimum !<br/>';
        }
     
        if (empty($_POST['pass']) || (mb_strlen($_POST['pass']) < 7)) {
            $msg[] = '<span class="erreur">MOT DE PASSE</span> : 8 caractères minimum !<br/>';
        }
     
        if (empty($_POST['email']) || (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)) {
            $msg[] = '<span class="erreur">EMAIL</span> : invalide !<br/>';
        }
     
        if (empty($msg)) {
            $now = new DateTime();
            $data = [
                ':activation' => mt_rand(1000000, 100000000),
                ':genre'      => $_POST['genre'],
                ':pseudo'     => $_POST['pseudo'],
                ':pass'       => $_POST['pass'],
                ':mail'       => $_POST['email'],
                ':jour'       => $now->format('d-m-Y'),
                ':heure'      => $now->format('H:i:s')
            ];
            $sql = 'INSERT INTO identité (activation, genre, pseudo, pass, mail, jour, heure) VALUES (:activation, :genre, :pseudo, :pass, :mail, :jour, :heure)';
            // ici tu dois préparer la requête et l'exécuter : faut voir le code de connection.php
            // exemple :
            $stmt = $db->prepare($sql);
            $exec = $stmt->execute($data);
            if ($exec) {
                $msg[] = <<<html
    <p><span class="gras">{$hsc($_POST['pseudo'])}</span> : inscrit !<p/>
    <p>Un code pour activer votre compte va être envoyé par mail<p/>
    html;
            } else {
                $msg[] = 'Erreur système à la création du profile';
            }
        }
    } else {
        $msg = ['Soumission invalide'];
    }
    ?>    
    <html>
    <head>
    <meta charset="utf-8">
    <title>Inscription</title>
    <link rel="stylesheet" href="erreurs.css" />
    <script type="text/javascript" src="js/erreurs.js"></script>
    </head>
    <body>
    <div class="panneau" id="panneau">
      <div id="contenu"><?= implode('', $msg) ?><br/>
          <input type="button" id="fermer" value="fermer" onclick="ferme()"><br/>
      </div>
    </div>
    <script>centre_pannel();</script>
    </body>
    </html>
    # Dans la Création, tout est permis mais tout n'est pas utile...

  7. #7
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Plutôt ligne 54 dans code posté, non ?
    Tu as raison ProgElect
    Je donnais le numéro dans mon éditeur moi, pour etre en accord avec le numéro du fatal error, mais tu as raison la prochaine fois j'indiquerais le numéro de ligne donné par le code posté, c'est mieux et plus simple

    Rawsrc :

    Pour le premier isset j'en avais besoin pour connaitre la valeur de $genre, mais pour les autres champs j'ai pas utilisé isset, mais juste '$nom_de_champ'.pour avoir leur valeur et la tester.
    J'ai lu partout sur le net que Empty faisait deux choses et remplaçait mieux isset, alors que isset en faisait qu'une, c'est pour ça que j'ai pas utilisé isset pour les autres champs.

    A propos de l'échappement des caractères, merci de m'avoir appris ça, je suis content, car moi je faisais avec une manière que j'ai apprise sur les sites de tutos PHP
    Dorénavant j'essaierais de respecter la logique que tu m'a montré, à force je deviendrais un bon programmeur
    Est-ce que la BDD échappe automatiquement ou il faut une instruction ?

    Ah c'est vrai ce que tu dis pour les accents, j'ai continué comme ça parce que je voyais que ça marchait mais t'as raison il vaut mieux que je fasse ça plus correctement pour que ça devienne une habitude.

    Merci beaucoup d'avoir corrigé mon code, c'est sympa, je vais l'essayer, le mien comme tu dis est catastrophique et il fonctionne pas (comme je l'ai dis), je vais reussir mon programme cette fois, enfin j'espère, si je fais pas de bêtises, lol.

  8. #8
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            if ($exec) {
                $msg[] = <<<html
    			<p><span class="gras">{$hsc($_POST['pseudo'])}</span> : inscrit !<p/>
    			<p>Un code pour activer votre compte va être envoyé par mail<p/>
    			html;
            } else {
                $msg[] = 'Erreur système à la création du profile';
            }
    Dans cette partie, il manque pas une appostrophe ou guillemet ? Car ça me rend la suite du code tout gris.

  9. #9
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 547
    Points : 14 923
    Points
    14 923
    Billets dans le blog
    9
    Par défaut
    Salut,

    le problème vient que tu ne respectes pas la notation heredoc qui t'oblige à avoir la balise fermante en début de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			$msg[] = <<<html
    			<p><span class="gras">{$hsc($_POST['pseudo'])}</span> : inscrit !<p/>
    			<p>Un code pour activer votre compte va être envoyé par mail<p/>
    html;
    # Dans la Création, tout est permis mais tout n'est pas utile...

  10. #10
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Une balise fermante en début de ligne ? LOL, moi j'ai apris sur le net et chaque fois on disait qu'il fallait une balise d'ouverture au début et une balise de fermeture à la fin, alors la mettre au début c'est bizarre pour moi, je vais lire la doc, merci beaucoup rawsrc
    Sur le code que tu me montre ci-dessus, c'est quoi la balise de fermeture ? moi j'ai juste fait copier/collé du grand code que tu m'a donné, j'ai rien changé.

    C'est ce truc là ? : "<<<"

  11. #11
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 547
    Points : 14 923
    Points
    14 923
    Billets dans le blog
    9
    Par défaut
    clique sur mon lien dans mon message précédent (doc php), toutes les explications y sont.
    Balise ouvrante : <<<html, fermante html;
    # Dans la Création, tout est permis mais tout n'est pas utile...

  12. #12
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Aaaaaah merci beaucoup Rawsrc !!!



    J'ai dis que j'allais la lire mais j'étais occupé après :/
    je vais voir ça là

    N'empêche ça me paraît pas logique de mettre une balise fermante au début, je trouve ça même débile, logiquement on sait pas où est la fin.
    Ah d'accord, c'est l'identifiant de fin

  13. #13
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 547
    Points : 14 923
    Points
    14 923
    Billets dans le blog
    9
    Par défaut
    depuis PHP 7.3, la position de la balise fermante est beaucoup plus souple maintenant
    # Dans la Création, tout est permis mais tout n'est pas utile...

  14. #14
    Membre expert Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    mars 2009
    Messages
    1 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : mars 2009
    Messages : 1 780
    Points : 3 741
    Points
    3 741
    Par défaut
    À noter qu'à partir de PHP 7.3, il n'est plus obligatoire de placer la balise fermante d'un heredoc (ou nowdoc) en début de ligne. (L'idée étant de ne pas casser l'indentation, mais dans ce cas, tous les espaces en début de ligne de la chaîne seront ignorés).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  15. #15
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Merci beaucoup de m'avoir permis d'apprendre ça
    J'ai regardé un peu mais je me demande s'il y a vraiment une amélioration par rapport à ce qu'on faisait avant.

    EDIT : Grace à toi j'ai appris en un seul code que tu m'a donné : les array de variables, les array de html, une bonne façon d'écrire mes tests de champs, et de mettre $msg[] plutôt que $info="" et un autre truc que j'ai appris aussi mais me souviens plus le nom.
    C'est génial, j'ai progressé avec ça !!!

    Y a une chose que j'ai besoin de savoir sur ton code, pourquoi tu fait la connexion dés que les tests de champs ont été reussi, puisque juste avant les tests y a déjà include qui fait une connexion. ? (connexion.php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            $sql = 'INSERT INTO identité (activation, genre, pseudo, pass, mail, jour, heure) VALUES (:activation, :genre, :pseudo, :pass, :mail, :jour, :heure)';
            // ici tu dois préparer la requête et l'exécuter : faut voir le code de connection.php
            // exemple :
            $stmt = $db->prepare($sql);
            $exec = $stmt->execute($data);
            if ($exec) {....}

    là c'est mon fichier de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    	// Utilisation de try catch
    	try {
    		$strConnection = 'mysql:host=localhost;dbname=membres';
    		$arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8");
                    $pdo = new PDO($strConnection, 'root', '', $arrExtraParam);
    		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    	}
    	catch(PDOException $e) {
    		$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
    		die($msg);
    	}
    ?>

  16. #16
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : août 2008
    Messages : 16 005
    Points : 32 783
    Points
    32 783
    Par défaut
    Bonjour,

    @amateurprg
    Ton enthousiasme fait plaisir à voir...

    ...MAIS :
    Citation Envoyé par rawsrc Voir le message
    il faut que tu lises un peu la doc, c'est utile tu sais
    C'est vrai qu'on peut paraitre comme des DIEUX avec notre "savoir"...

    Mais... arrête de blablater... et LIS LA DOC !!...
    ... et tu verras que... toi aussi, tu pourras tutoyer les "Dieux".

    Ainsi soit-il...
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  17. #17
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Lol, merci jréaux pour le conseil et ta remarque

    Sinon les docs et tutos j’arrête pas d'en regarder sur développez et ailleurs aussi pas mal, oui il m'a dit ça, de lire la doc, mais je l'ai regardé pour connaitre les hérédocs comme il m'a conseillé.

    Tes tutos m'ont beaucoup servis, j'ai regardé aussi comment t'avais fait ton gestionnaire de news, j'espère l'adapter pour mon site
    Merci beaucoup pour tes contributions !


    C'est vrai qu'on peut paraitre comme des DIEUX avec notre "savoir"...

    Mais... arrête de blablater... et LIS LA DOC !!...
    ... et tu verras que... toi aussi, tu pourras tutoyer les "Dieux".

    Ainsi soit-il...
    LOL

  18. #18
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : août 2008
    Messages : 16 005
    Points : 32 783
    Points
    32 783
    Par défaut
    En fait,... j'ai menti.

    On n'est pas des DIEUX.


    Cela dit, on essaie juste de PARTAGER notre savoir, nos connaissances, notre expérience.

    En espérant que tu reprennes le flambeau tantôt... petit Padawan...
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  19. #19
    Membre habitué

    Homme Profil pro
    sans
    Inscrit en
    octobre 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : octobre 2019
    Messages : 205
    Points : 145
    Points
    145
    Par défaut
    Cela dit, on essaie juste de PARTAGER notre savoir, nos connaissances, notre expérience.

    En espérant que tu reprennes le flambeau tantôt... petit Padawan...
    Ah ouais,ça j'aimerais bien ça voudrait dire que je serais devenu assez bon pour le faire et c'est mon but de devenir bon en programmation.
    Déjà que même avec mon faible niveau j'essaie d'aider les autres dans les posts car par exemple en création de jeux simples je sais bien faire

Discussions similaires

  1. .empty() qui ne fonctionne pas
    Par Vincent Valentine dans le forum jQuery
    Réponses: 4
    Dernier message: 04/03/2015, 17h51
  2. Test d'un dossier FTP qui n'exise pas
    Par speed034 dans le forum Langage
    Réponses: 1
    Dernier message: 03/06/2008, 19h47
  3. test qui ne marche pas
    Par debutantasp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/03/2008, 14h44
  4. Un test if qui ne fonctionne pas correctement
    Par Shinjuku dans le forum Langage
    Réponses: 6
    Dernier message: 26/02/2008, 11h52
  5. [RegEx] Test d'un format spécifique qui ne fonctionne pas
    Par Alvaten dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2008, 09h25

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