recuperation des info dans la base de donnees

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

recuperation des info dans la base de donnees

Par Babyhay  -  57 reponses  -  Le 28/06/2017 07:09  -  Editer  - 

bonjour a vous tous...
voila ma question:
j'ai un formulaire Html dont je veux recuperer les donnees par mail est aussi sur ma base , mais lorsque le formulaire est valider j;ai recu les donnees seuelement par mail sans l'enregistrement dans ma base etant dis que la connection de ma base est correcte.

voici la page du traitement de mon formulaire


    <?php  
    session_start();//on démarre la session  
    // $errors = [];  
      $errors = array(); // on crée une vérif de champs  
      if(!array_key_exists('alcatel', $_POST) || $_POST['alcatel'] == '') {// on verifie l'existence du champ et d'un contenu  
      $errors ['alcatel'] = "return and select your model";  
      }  

      if(!array_key_exists('name', $_POST) || $_POST['name'] == '') {// on verifie l'existence du champ et d'un contenu  
      $errors ['name'] = "return and enter your name";  
      }  

     if (  
        !$imei = filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === [0-9]{15}   
        || !filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === FALSE)   
    {  
        exit ('return and enter your imei');  
    }  

    if(!array_key_exists('mail', $_POST) || $_POST['mail'] == '' || !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {// on verifie existence de la clé  
      $errors ['mail'] = "return and enter your Mail";  
      }  

    $servername = "";  
    $username = "";  
    $password = "";  
    $dbname = "";  

    // Create connection  
    $conn = new mysqli($servername, $username, $password, $dbname);  
    // Check connection  
    if ($conn->connect_error) {  
        die("Connection failed: " . $conn->connect_error);  
    }   

    $name = $_POST['model'];  
    $numero = $_POST['name'];  
    $mail = $_POST['mail'];  
    $mail = $_POST['provider'];  
    $mail = $_POST['imei'];  
    $sql = 'INSERT INTO alcatel (model, name, email)  
    VALUES ('. ($_POST['model']) .' ,  '. ($_POST['name']) .' , '. ($_POST['mail']) .' , '. ($_POST['provider']) .' , '. ($_POST['imei']) .')';  



    if ($conn->query($sql) === TRUE) {  
        echo "New record created successfully";  
    } else {  
        echo "Error: " . $sql . "<br>" . $conn->error;  
    }  

    $conn->close();  




    //On check les infos transmises lors de la validation  
      if(!empty($errors)){ // si erreur on renvoie vers la page précédente  
      $_SESSION['errors'] = $errors;//on stocke les erreurs  
      $_SESSION['inputs'] = $_POST;  
      header('Location:alcatel.html/');  
      }else{  
      $_SESSION['success'] = 1;  
      $headers  = 'MIME-Version: 1.0' . "\r\n";  
      $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";  
      $headers .= 'FROM:' . htmlspecialchars($_POST['mail']);  
      $to = 'xxxxxxxxxxx@gmail.com'; // Insérer votre adresse email ICI  
      $subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']);  
      $message_content = '  
      <table>  
      <tr>  
      <td><b>bonjour,je voudrais unlock mon portable alcatel:</b></td>  
      </tr>  
      <tr>  
      <td>'. $subject . '</td>  
      </tr>  
      <tr>  
      <td><b>voici les coordonnes de mon portable:;</b></td>  
      </tr>  
      <tr>  
      <td>mon portbale est un alcatel::::>>>'. htmlspecialchars($_POST['alcatel']) .'</td>  
      </tr>  
      <tr>  
      <td>l/imei de mon portable est le suivant::::>>>'. htmlspecialchars($_POST['imei']) .'</td>  
      </tr>  
      <tr>  
      <td>et le provider de mon portable est::::>>>'. htmlspecialchars($_POST['provider']) .'</td>  
      </tr>  
       <tr>  
      <td>est aussi mon mail est::::==>>'. htmlspecialchars($_POST['mail']) .'</td>  
      </tr>  
      <tr>  
      <td>Merci de m/aider,message de la part de:::>>>'. htmlspecialchars($_POST['name']) .'</td>  
      </tr>  
      </table>  
      ';  


      mail($to, $subject, $message_content, $headers);  
      header('location:https://index.html');  
      }  





    ?>  

merci a l'avance pour votre aide , les etoiles c'est pour bien permettre la visibiliter de ma question

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 28/06/2017 08:18  -  Haut de page  - 

Salut,
est-ce que l'opération fait état d'une erreur d'exécution de la requête d'insertion ?

 
Par Babyhay  -  Le 28/06/2017 14:43  -  Haut de page  - 

non pas d'erreuur,la redirection et le mail fonctionne tres bien,le probleme c;'est seulement l'enregistrement dans la base/...

 
Par Cyrano  -  Le 28/06/2017 16:59  -  Haut de page  - 

Ok, donc le message « New record created successfully » s'affiche dans la page de résultat ?

 
Par Babyhay  -  Le 28/06/2017 17:59  -  Haut de page  - 

non,ca ne s'affiche pas , le donnees ne sot pas enregistrer en plus daans la base,je ne vois pas ou est le probleme

 
Par Cyrano  -  Le 28/06/2017 18:24  -  Haut de page  - 

Si je me fie au code montré plus haut et si le message de confirmation d'enregistrement réussi ne s'affiche pas davantage, alors logiquement le message d'erreur devrait s'afficher.

Alors un truc à tester : Faire afficher la requête SQL générée et la tester directement avec la console MySQL et voir quel résultat ça retourne.

 
Par Babyhay  -  Le 28/06/2017 19:07  -  Haut de page  - 

je ne sais si c'est de ca que vous parlez mais j'obtiens ca:

Error
Static analysis:

12 errors were found during analysis.

Unexpected character. (near "[" at position 82)
Unexpected character. (near "]" at position 90)
Unexpected character. (near "[" at position 92)
Unexpected character. (near "]" at position 100)
Unexpected character. (near "[" at position 102)
Unexpected character. (near "]" at position 110)
Unexpected character. (near "[" at position 112)
Unexpected character. (near "]" at position 120)
Unexpected character. (near "[" at position 122)
Unexpected character. (near "]" at position 130)
Unexpected character. (near "[" at position 132)
Unexpected character. (near "]" at position 140)
SQL query:

INSERT INTO alcatel(id, Model, Name, email, imei, provider) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6])

MySQL said: Documentation

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[value-1],[value-2],[value-3],[value-4],[value-5],[value-6])' at line 1

 
Par Cyrano  -  Le 28/06/2017 19:24  -  Haut de page  - 

Hé ben voilà, il ne faut pas chercher plus loin.

Les valeurs attendues étant des chaines de caractères, elles devraient être encadrées par des guillemets ou des apostrophes, cette même requête devrait donc être comme ceci :

INSERT INTO alcatel(id, Model, Name, email, imei, provider)
VALUES ('[value-1]','[value-2]','[value-3]','[value-4]','[value-5]','[value-6]')

Donc lorsque la requête est construite en PHP, il faudrait mettre les bons caractères :

$sql  = "INSERT INTO alcatel (model, name, email)";
$sql .= "VALUES ('". ($_POST['model']) ."' , "'. ($_POST['name']) .'" , "'. ($_POST['mail']) ."' , '". ($_POST['provider']) ."' , '". ($_POST['imei']) ."')";

Mais là encore, il reste un problème de conflit entre les apostrophes encadrant les valeurs et celles des index de $_POST, et en outre la requête pointe vers trois colonnes, mais fournit six valeurs; Donc pour faire quelque chose de propre et plus facilement lisible, il va falloir procéder autrement :

$model = $_POST['model'];
$name  = $_POST['name'];
$email = $_POST['email'];
$sql  = "INSERT INTO alcatel (model, name, email)";
$sql .= "VALUES '". $model ."', '". $name ."' , '". $email ."')";

J'ai mis uniquement trois valeurs à insérer, à ajuster sur ce modèle pour mettre les bonnes valeurs dans les bonnes colonnes.

 
Par Babyhay  -  Le 28/06/2017 19:38  -  Haut de page  - 

toujours meme chose ,j'ai recu le mail mais ca n'enregistre pas dans la base , lorsque j'attribut une valeur dans la page de traitement , j'ai recu les valeurs dans la base,,je pense que peux etre la valeur dans $_post ne fonctionne pas pour la base

 
Par Cyrano  -  Le 28/06/2017 22:06  -  Haut de page  - 

Hé, je suis pas voyante ! Sans les messages d'erreur ni le moindre bout de code, je ne devine pas.

J'apporte l'aide autant que possible, mais je ne fais pas le code pour les autres. Un petit minimum de logique serait bienvenu. Je ne connais pas la structure de la table à laquelle sont destinées les données, je ne sais pas quelles modifications ont été faites sur la construction de la requête : donc me dire « ça marche toujours pas » ne peut en aucun cas me permettre d'indiquer où chercher une solution quelconque.

 
Par Babyhay  -  Le 29/06/2017 18:11  -  Haut de page  - 

Mais j"obtiens pas de message d'erreur,la redirection se fait normalement et j'ai recu les données par mail....je ne vois pas quoi dire

 
Par Cyrano  -  Le 29/06/2017 18:18  -  Haut de page  - 

Non mais c'est pas vrai ...

Et si tu utilisais la même méthode que celle utilisée avant pour débusquer les erreurs et que tu me montrais un peu les modifications et les résultats ?

 
Par Babyhay  -  Le 29/06/2017 18:23  -  Haut de page  - 

Vous m"avez donnez ce code pour la recuperation dans la base:

$model = $_POST['model'];
$name = $_POST['name'];
$email = $_POST['email'];
$sql = "INSERT INTO alcatel (model, name, email)";
$sql .= "VALUES '". $model ."', '". $name ."' , '". $email ."')";

Je vais vous envoyez la page de modification plustard pour voir

 
Par Cyrano  -  Le 29/06/2017 19:27  -  Haut de page  - 

Ok, maintenant il faut faire afficher la requête avec un

var_dump($sql);

Et m'afficher ce que ça donne. Éventuellement tester la requête si elle a l'air correcte à l'affichage, directement en console MySQL et observer le résultat.

 
Par Babyhay  -  Le 01/07/2017 16:43  -  Haut de page  - 

toujoours rien,ok voici la structure de ma table

name    type            collation                       null    default

Model    varchar(200)    latin1_swedish_ci        No                None
Name    varchar(200)    latin1_swedish_ci        No    None
email    varchar(80)    latin1_swedish_ci        No    None
imei    int(16)                                    No    None
provider    int(11)                            No    None    

et voici le nouveau code modifier

<?php
session_start(); //on démarre la session
// $errors = [];
$errors = array(); // on crée une vérif de champs
if(!array_key_exists('alcatel', $_POST) || $_POST['alcatel'] == '')
{ // on verifie l'existence du champ et d'un contenu
    $errors['alcatel'] = "return and select your model";
}

if(!array_key_exists('name', $_POST) || $_POST['name'] == '')
{ // on verifie l'existence du champ et d'un contenu
    $errors['name'] = "return and enter your name";
}

if(!$imei = filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === [0-9]{15}
|| !filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === FALSE
)
{
    exit('return and enter your imei');
}

if(!array_key_exists('mail', $_POST) || $_POST['mail'] == '' || !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
{
    // on verifie existence de la clé
    $errors['mail'] = "return and enter your Mail";
}

$servername = "";
$username   = "";
$password   = "";
$dbname     = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if($conn->connect_error)
{
    die("Connection failed: " . $conn->connect_error);
}

$model = $_POST['model'];
$name  = $_POST['name'];
$email = $_POST['mail'];
$email = $_POST['imei'];
$email = $_POST['provider'];
$sql  = "INSERT INTO alcatel (model, name, email, imei, provider)";
$sql .= "VALUES '" . $model . "', '" . $name . "' , '" . $mail . "' , '" . $imei . "' , '" . $provider . "')";
var_dump($sql);

if($conn->query($sql) === TRUE)
{
    echo "New record created successfully";
}
else
{
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

//On check les infos transmises lors de la validation
if(!empty($errors))
{
    // si erreur on renvoie vers la page précédente
    $_SESSION['errors'] = $errors; //on stocke les erreurs
    $_SESSION['inputs'] = $_POST;
    header('Location:https://alldeviceunlock.com/Unlock-alcatel/Unlock-alcatel-OT-one-touch.html/');
}
else
{
    $_SESSION['success'] = 1;
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $headers .= 'FROM:' . htmlspecialchars($_POST['mail']);
    $to = 'myemail@gmail.com'; // Insérer votre adresse email ICI
    $subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']);
    $message_content = '
<table>
  <tr>
    <td><b>bonjour,je voudrais unlock mon portable alcatel:</b></td>
  </tr>
  <tr>
    <td>' . $subject . '</td>
  </tr>
  <tr>
    <td><b>voici les coordonnes de mon portable:;</b></td>
  </tr>
  <tr>
    <td>mon portbale est un alcatel::::>>>' . htmlspecialchars($_POST['alcatel']) . '</td>
  </tr>
  <tr>
    <td>l/imei de mon portable est le suivant::::>>>' . htmlspecialchars($_POST['imei']) . '</td>
  </tr>
  <tr>
    <td>et le provider de mon portable est::::>>>' . htmlspecialchars($_POST['provider']) . '</td>
  </tr>
  <tr>
    <td>est aussi mon mail est::::==>>' . htmlspecialchars($_POST['mail']) . '</td>
  </tr>
  <tr>
    <td>Merci de m/aider,message de la part de:::>>>' . htmlspecialchars($_POST['name']) . '</td>
  </tr>
</table>
';

    mail($to, $subject, $message_content, $headers);
    header('location:index.html');
}
 
Par Cyrano  -  Le 01/07/2017 17:08  -  Haut de page  - 

Un petit minimum d'attention ne serait pas superflu.

1> $model = $_POST['model'];    
2> $name  = $_POST['name'];    
3> $email = $_POST['mail'];    
4> $email = $_POST['imei'];    
5> $email = $_POST['provider'];    
6> $sql  = "INSERT INTO alcatel (model, name, email, imei, provider)";    
7> $sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')"; 

On ne fait jamais de copier/coller quand on code !
Ensuite, je vois bien le var_dump, mais il faudrait s'en servir : ça doit afficher la requête générée dans la page et l'erreur devrait alors être évidente.

Dans la requête, il y a une erreur, il manque une parenthèses, ensuite il y a deux valeurs qui ne sont jamais envoyées parce que les variables correspondantes ne sont jamais définies.

Ha si, un détail : pour voir les messages s'afficher, commenter la ligne de redirection en bas, de façon à ne pas quitter la page et voir s'afficher les erreurs.
J'ai numéroté exprès les lignes de code ci-dessus : regarde donc les lignes 4, 5 et 7.

 
Par Babyhay  -  Le 04/07/2017 05:02  -  Haut de page  - 

wow,je sais mais qu;il ne faut pas copier/coller le code mais parfois quand on a plus de temps ,on est dans l'obligation quand meme.....je veux explique un peu de plus mon objectif....je crois que vous savez bien comment fonctionner les mails de confirmations?mon but , je souhaites que lorsque le client soumis le formulair pour que j;ai recu les donnees en premier par mail,et apres pour que le client recois un email de confirmation ,et cet email va contenir un lien paypal correspond a son numero id, comme les site d;inscription qui envoie un lien de confirmation, et ce lien se compose aussi de l'emai de la personne qui vient faire l;inscription...mais de preference,je veux faire ca de ma part avec paypal...je crois que vous allez me comprendre quand meme

 
Par Cyrano  -  Le 04/07/2017 08:45  -  Haut de page  - 

Je comprends fort bien, et ça reste une très mauvaise excuse.

Vouloir gagner du temps en faisant du copier/coller est une des manière les plus efficaces pour perdre au contraire beaucoup de temps, et là, c'est précisément le cas.

J'ai montré précédemment où se trouvaient les erreurs. La requête est construite à partir de cinq variables : $model, $name, $mail, $imei et $provider : où sont définies les deux dernières ?
J'ai indiqué également un certain nombre d'informations pour déboguer tout ça.

Monter un site de commerce en ligne, ça ne s'improvise pas, il s'agit de transactions et il s'agit de l'argent des clients. Si le site est mal fait, les clients risquent fort de perdre leur argent et ... le site risque fort d'intéresser la répression des fraudes même s'il n'y a pas de fraude.
Il y a des questions de sécurité qui doivent être prises avec le plus grand sérieux, et il vaut mieux prendre quelques minutes de plus pour bien faire les choses que de bâcler un boulot pour devoir par la suite passer des heures à corriger les bogues.

Enfin, dernière observation : soignez la qualité de votre code, il sera d'abord plus facile à relire au besoin, et encore plus facile à corriger en cas d'erreur : je faisais un jour remarquer sur un autre forum à des codeur qui bâclaient leur code : Si vous codez de la même manière que vous écrivez en français, ne soyez pas surpris que le code ne fonctionne pas et là aussi je suis très tenté de faire la même observation. Il ne faut pas croire qu'on va gagner du temps en essayer d'aller plus vite en écrivant comme un goret. Que ce soit en français ou en code, il faut que ce qui est écrit puisse être compris par le destinataire, donc par une autre personne ou un serveur.

 
Par Babyhay  -  Le 04/07/2017 15:40  -  Haut de page  - 

Donc une seule variable qui n'esf pas definit peux empecher de recevoir tous les autres variables?

 
Par Cyrano  -  Le 04/07/2017 15:57  -  Haut de page  - 

Ce n'est pas du tout ça... dites, j'espère que vous ne montez pas un vrai site de commerce en ligne professionnel parce qu'à ce rythme, vous allez droit vers un mur, et un solide.

Une variable non définie empêche le fonctionnement correct d'un code, tout simplement. Si le code doit expédier quelque chose, le résultat ne sera pas bon, ou bien si ça doit enregistrer quelque chose, ça ne fonctionnera pas.

Réfléchissez un instant, reprenez l'extrait de code que j'ai mis plus haut pour souligner les erreurs : à la ligne 7, quelle est la valeur de la valeur $email ?


Important

Il est indispensable de bien comprendre que sur ce forum, on s'adresse aux gens qui débutent et on va tâcher de leur montrer comment corriger leurs erreurs, personne ne les corrigera à leur place.
Je devrais dire « je vais tâcher de leur montrer » parce qu'en réalité je suis le seul à répondre ici. Mais c'est pareil, j'essaye de montrer où se trouvent les erreurs : mais ce n'est pas à moi de les corriger.

Il est indispensable d'exercer sa logique, de réfléchir aux implications de telle ou telle action. Si on ne définit pas une variable, que va-t-il se passer ? Comment va réagir l'interpréteur PHP ?

 
Par Babyhay  -  Le 05/07/2017 06:51  -  Haut de page  - 

la valeur email c'est mail , c'est bien definie ,car j;ai recu tout sans rien perdre dans l'email

 
Par Cyrano  -  Le 05/07/2017 08:34  -  Haut de page  - 

Pas du tout, et je ne parle pas de ce qui est reçu dans l'envoi par courriel, je parle de l'extrait de code cité plus haut en précisant la ligne.

Le code s'exécute ligne après ligne dans l'ordre où il est écrit. Relisez ce bout de code et pour chaque ligne décrivez ce qu'il se passe : si vous ne pouvez pas le faire, je m'interrogerai en me demandant par quel mystère vous programmez. On est dans les bases de la programmation là.

J'ai donné plus tôt aussi une manière de « voir » ce qui se passe dans le code en faisant afficher des éléments avec var_dump. Utilisez ça pour vous aider à voir.

 
Par Babyhay  -  Le 05/07/2017 09:01  -  Haut de page  - 

vous parlez de "commentaire"?

 
Par Cyrano  -  Le 05/07/2017 09:04  -  Haut de page  - 

Dites, je veux bien vous aider, mais il va falloir y mettre un peu du vôtre là. Ce code que vous avez montré, c'est vous qui l'avez écrit ou bien ce sont des bouts récupérés et assemblés au petit bonheur pour tenter de faire quelque chose ??

Parce que là, j'ai l'impression que je parle chinois et que vous ne comprenez strictement rien de ce que j'explique ???

 
Par Babyhay  -  Le 05/07/2017 09:05  -  Haut de page  - 

ja'i resolu les ligne que vous avez dites,en remplcant par leurs valeurs

 
Par Cyrano  -  Le 05/07/2017 09:07  -  Haut de page  - 

Je n'ai pas de boule de cristal, je ne vois pas les correctifs : montrez-moi ça que je puisse au moins vous dire si ça va dans le bon sens.

 
Par Babyhay  -  Le 05/07/2017 09:09  -  Haut de page  - 

je comprend tres bien,mais pour preciser je ne connais pas trop en Php,je suis uun etudiant en genie elctromecanique,je ne faisais pas le language php,mais je connais quelques notions du php lorsque j'etais dans la faculte Genie informatique et j;ai laisse ce faculte longtemps deja...c'est a cause de ca que je ne connais pas tous ce que tu dis

 
Par Cyrano  -  Le 05/07/2017 09:14  -  Haut de page  - 

Bon, je recommence. Un peu plus tôt j'ai montré ceci :

1> $model = $_POST['model'];    
2> $name  = $_POST['name'];    
3> $email = $_POST['mail'];    
4> $email = $_POST['imei'];    
5> $email = $_POST['provider'];    
6> $sql  = "INSERT INTO alcatel (model, name, email, imei, provider)";    
7> $sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')"; 

Ces lignes sont directement extraite du code original, j'y a ajouté des numéros de ligne pour faciliter le suivi. Ce code comporte des erreurs aux lignes 4, 5 et 7. J'ai également précisé le coté néfaste du copier/coller. Avec ces indices, il reste à identifier les erreurs et à les corriger.

Et la question que je posais en particulier, toujours par rapport à ce bout de code : Que vaut la variable $email à la ligne 7 ?

 
Par Babyhay  -  Le 05/07/2017 09:20  -  Haut de page  - 

Code corrigé :

$model = $_POST['model'];  
$name  = $_POST['name'];    
$mail = $_POST['mail'];    
$imei = $_POST['imei'];    
$provider = $_POST['provider'];    
$sql  = "INSERT INTO alcatel (model, name, email, imei, provider)"; //ce sont les nom de colonnes de ma table   
$sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')"; //ce sont les valeur a inserer dans la table

voici la correction de ce code , je le faisais deja,je met des petits commentaires pour expliquer mieux

 
Par Cyrano  -  Le 05/07/2017 09:23  -  Haut de page  - 

Ok, mais il reste une erreur ligne 7, et pour la voir, il faut faire afficher la requête SQL avec var_dump($sql); pour avoir la requête réelle qui sera exécutée ensuite

 
Par Babyhay  -  Le 05/07/2017 09:36  -  Haut de page  - 

$model = $_POST['model'];
$name = $_POST['name'];
$mail = $_POST['mail'];
$imei = $_POST['imei'];
$provider = $_POST['provider'];
$sql = "INSERT INTO alcatel (model, name, email, imei, provider)"; //ce sont les nom de colonnes de ma table
$sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')"; //ce sont les valeur a inserer dans la table
$alcatel = mysql_insert_id();
var_dump($alcatel);

c'est correcte comme ca?

 
Par Cyrano  -  Le 05/07/2017 09:39  -  Haut de page  - 

Non.

Est-ce que vous savez ce que retourne la fonction mysql_insert_id() ?

À quoi sert le « var_dump($alcatel); » ?

J'ai dit plus haut ce qu'il fallait faire afficher, et ce n'est pas ça.

 
Par Babyhay  -  Le 05/07/2017 09:41  -  Haut de page  - 

ok je comprend,tu veux parler de mettre la requete juste apre la fermeture quotes de VAlUES>?

 
Par Cyrano  -  Le 05/07/2017 09:43  -  Haut de page  - 

Voilà, ensuite exécuter la page pour faire afficher la requête.

Et pour que ça marche, j'ai indiqué plus ôt qu'il fallait commenter la ligne de redirection en fin de code header('Location..') pour empêcher la sortie de page, le temps de finir de déboguer ça.
Autre option, faire suivre le var_dump d'un die().

 
Par Babyhay  -  Le 05/07/2017 09:57  -  Haut de page  - 

maintenant j'obtien l'erreur "page not found" etandisque la page est la

 
Par Cyrano  -  Le 05/07/2017 10:03  -  Haut de page  - 

Mais c'est désespérant : vous ne semblez pas vous rendre compte que je ne peux pas vous aider sans un minimum d'éléments ????

Montrez-moi le code tel qu'il est modifié !

 
Par Babyhay  -  Le 05/07/2017 10:09  -  Haut de page  - 

ok...

<?php
session_start();//on démarre la session
// $errors = [];
  $errors = array(); // on crée une vérif de champs
  if(!array_key_exists('alcatel', $_POST) || $_POST['alcatel'] == '') {// on verifie l'existence du champ et d'un contenu
  $errors ['alcatel'] = "return and select your model";
  }

  if(!array_key_exists('name', $_POST) || $_POST['name'] == '') {// on verifie l'existence du champ et d'un contenu
  $errors ['name'] = "return and enter your name";
  }

 if (
    !$imei = filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === [0-9]{15} 
    || !filter_input(INPUT_POST, 'imei', FILTER_VALIDATE_INT, $range) === FALSE) 
{
    exit ('return and enter your imei');
}

if(!array_key_exists('mail', $_POST) || $_POST['mail'] == '' || !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {// on verifie existence de la clé
  $errors ['mail'] = "return and enter your Mail";
  }

$servername = "91.216.107.162";
$username = "xxxxxxx";
$password = "xxxxxxx";
$dbname = "xxxxxxxxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$model = $_POST['model'];  
$name  = $_POST['name'];    
$mail = $_POST['mail'];    
$imei = $_POST['imei'];    
$provider = $_POST['provider'];    
$sql  = "INSERT INTO alcatel (model, name, email, imei, provider)"; //ce sont les nom de colonnes de ma table   
$sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')";
var_dump($sql); //ce sont les valeur a inserer dans la table

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)

if(!empty($errors)){ // si erreur on renvoie vers la page précédente
  $_SESSION['errors'] = $errors;//on stocke les erreurs
  $_SESSION['inputs'] = $_POST;
  header('Location..') ;
  }else{
  $_SESSION['success'] = 1;
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . htmlspecialchars($_POST['mail']);
  $to = 'xxxxxxxx@gmail.com'; // Insérer votre adresse email ICI
  $subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']);
  $message_content = '
  <table>
  <tr>
  <td><b>bonjour,je voudrais unlock mon portable alcatel:</b></td>
  </tr>
  <tr>
  <td>'. $subject . '</td>
  </tr>
  <tr>
  <td><b>voici les coordonnes de mon portable:;</b></td>
  </tr>
  <tr>
  <td>mon portbale est un alcatel::::>>>'. htmlspecialchars($_POST['alcatel']) .'</td>
  </tr>
  <tr>
  <td>l/imei de mon portable est le suivant::::>>>'. htmlspecialchars($_POST['imei']) .'</td>
  </tr>
  <tr>
  <td>et le provider de mon portable est::::>>>'. htmlspecialchars($_POST['provider']) .'</td>
  </tr>
   <tr>
  <td>est aussi mon mail est::::==>>'. htmlspecialchars($_POST['mail']) .'</td>
  </tr>
  <tr>
  <td>Merci de m/aider,message de la part de:::>>>'. htmlspecialchars($_POST['name']) .'</td>
  </tr>
  </table>
  ';
  mail($to, $subject, $message_content, $headers);
  header('Location..');
  }


?>
 
Par Cyrano  -  Le 05/07/2017 10:17  -  Haut de page  - 

Ok, donc ça devrait afficher la requête avant enregistrement. On va simplifier :

$model      = $_POST['model'];  
$name       = $_POST['name'];    
$mail       = $_POST['mail'];    
$imei       = $_POST['imei'];    
$provider   = $_POST['provider'];    
$sql  = "INSERT INTO alcatel (model, name, email, imei, provider)"; //ce sont les nom de colonnes de ma table   
$sql .= "VALUES '". $model ."', '". $name ."' , '". $mail ."' , '". $imei ."' , '". $provider ."')"; //ce sont les valeur a inserer dans la table
var_dump($sql); // On affiche la requête générée
die(); // On arrête le script le temps du débogage

J'ai réaligne le bout de code et ré-ajusté les commentaires. Testez-ça et montrez-moi le résultat.

 
Par Cyrano  -  Le 05/07/2017 10:21  -  Haut de page  - 

Il me vient à l'esprit un détail : vous testez ça en local sur votre machine ou bien sur le serveur d'un hébergeur en ligne ?

 
Par Babyhay  -  Le 05/07/2017 10:24  -  Haut de page  - 

pour bien dire,meme moi je commence a desesperer et depatienter,je ne pense pas que ca vient du serveur parce que j;ai un forum dont j;utiliser le logiciel flubb,les tables fonctionne tres bien,et quand je met une valeur dans la page de traitement ca rentre dans la base de donnees , je ne voois pas d'ou cela vient , je pensais que ce sont les donnees dans $_post qui sont impossible de recuperer pour la base mais je ne crois ps....je ne pense pas que si j;utiliser quelques bout de code de logiciel fluxbb je vais arriver car je vois qus les codes sont un peu avancer et moi je ne suis pas a ce niveau

 
Par Cyrano  -  Le 05/07/2017 10:30  -  Haut de page  - 

Et pourtant l'erreur est visible.

On va tenter une autre approche. Écrivez-moi la requête SQL d'insertion avec des valeurs (juste pour le test sans l'exécuter) comme si elle était écrite en dur avec des valeurs au lieu de variables. Et pas en PHP, en SQL directement.

Exemple :

INSERT INTO matable(colonne1, colonne2) ...etc..;

Et montrez-moi ça.

Quant à piquer des bouts de code ailleurs, ça ne fonctionnera pas mieux tant que vous ne comprendrez pas COMMENT ça doit fonctionner, donc mauvaise idée.

 
Par Babyhay  -  Le 05/07/2017 10:44  -  Haut de page  - 

INSERT INTO alcatel(id, Model, Name, email, imei, provider) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6]) , voici ce que vous m;avez demandez

 
Par Babyhay  -  Le 05/07/2017 10:46  -  Haut de page  - 

ce formulaire est tapez par moi , c;est lorsque je veux faire une chose dont je connais pas je fais recherche google

 
Par Cyrano  -  Le 05/07/2017 10:50  -  Haut de page  - 

Bon, cette requête telle quelle ne pourrait aboutir qu'à une erreur. Mettez des valeurs comme si vous alliez exécuter cette requête en console pour que l'insertion fonctionne.

 
Par Babyhay  -  Le 05/07/2017 10:59  -  Haut de page  - 

je ne comprend pas,vous pouvez me donnner un exemple?

 
Par Cyrano  -  Le 05/07/2017 11:03  -  Haut de page  - 

La requête montré est un copier/coller récupéré ailleurs, ce n'est pas ce que je demande.

Là, il faut construire une requête qui va insérer 5 valeurs dans une table. Utilisez des valeurs test et écrivez la requête en SQL telle qu'elle devrait être faite pour fonctionner directement.

L'exemple de base :

INSERT INTO matable(colonne) VALUES('valeur');

Ça, c'est directement exécutable dans une console MySQL, alors que l'exemple montré ne fonctionnera pas : observez attentivement, voyez les différences et dites-moi ce que vous remarquez.

Note :

Le SQL est un langage, comme le PHP, comme le français, avec un vocabulaire, une syntaxe et une grammaire. Ça ne s'improvise pas, et il est absolument indispensable d'en maitriser les bases fondamentales.

 
Par Babyhay  -  Le 05/07/2017 11:04  -  Haut de page  - 

c'est pas copier coller.je l'ai pris dans phpmyadmin de ma base

 
Par Cyrano  -  Le 05/07/2017 11:07  -  Haut de page  - 

Observez les différences entre l'exemple que j'ai donné et l'exemple que vous avez montré.

 
Par Babyhay  -  Le 05/07/2017 11:09  -  Haut de page  - 

et pourtant je crois j;avais deja essayer ce que vous venez me donner,je vais l'integrer de nouveau

 
Par Cyrano  -  Le 05/07/2017 11:13  -  Haut de page  - 

Mais répondez donc aux question, sinon on y sera encore à Noël.

Qu'est-ce que vous observez comme différences entre les deux requête ? (sans chercher midi à 14h00)

 
Par Babyhay  -  Le 05/07/2017 11:19  -  Haut de page  - 

toujours meme choses,mest ce que vous pensez que je peux faire l'email que je dois recu provient directement de la base que plutot dans le traitment form?

 
Par Cyrano  -  Le 05/07/2017 11:28  -  Haut de page  - 

Stop, on ne s'éparpille pas....

Aucun courriel ne peut être envoyé par la base. C'est expédié par Apache avec du code PHP. Et pour l'instant, on essaye de résoudre l'insertion de données dans la base. De toute évidence, vous ne connaissez pas du tout le SQL, on est pas sortis de l'auberge.

Dans une requête SQL, il y a les éléments du langage lui-même, et des valeurs sous la forme de chaînes de caractères. On utilise des caractères spéciaux pour séparer ces chaines de caractères du langage SQL lui-même. C'est ce qu'il faudrait que vous observiez. Est-ce que vous avez compris pourquoi votre exemple de requête ne peut pas marcher alors que l'exemple basique que j,ai montré peut fonctionner ?

 
Par Babyhay  -  Le 05/07/2017 11:32  -  Haut de page  - 

non je ne comprend pas,je pense que l;explication est necessaire,mais si vous me dites que l'email se fait par apache etc...et moi je ne connais pas le language sq;,mais comment l'email de confirmation va fonctionnner?

 
Par Cyrano  -  Le 05/07/2017 11:35  -  Haut de page  - 

Ok, je vais essayer de simplifier :

Vous avez écrit « VALUES([valeur]) »
Alors que j'ai écrit « VALUES('valeur') »

C'est plus clair là ?

 
Par Babyhay  -  Le 05/07/2017 11:40  -  Haut de page  - 

oui , si toutes fois que je fais la reprogrammation de mon formulaire , est ce que ca ne vas pas marcher ?

 
Par Cyrano  -  Le 05/07/2017 11:46  -  Haut de page  - 

Bon alors on va procéder autrement.

Vous ne connaissez apparemment ni le SQL ni le PHP, je peux aider des débutants, mais pas former quelqu'un qui n'a absolument aucune connaissance. Il faut commencer par les bases, je suggère donc fortement de suivre les tutoriels qui sont sur ce site. Il y a aussi les cours sur OpenClassroom

Le développement WEB, c'est au minimum 5 langages : HTML, PHP, SQL, JavaScript et CSS. Même si on se limite aux trois premiers, il faut maitriser les bases fondamentale et je n,ai pas le temps de faire des cours complets là-dessus. Il y a des kilomètres de tutoriels et de cours en ligne qui répondent à ce besoin.

La programmation n'est pas une activité qu'on bricole comme un vélo en testant un truc de temps en temps en espérant que ça marche, surtout s'il est question de vendre quelque chose sur Internet. C'est une activité qui requiert quelques connaissances de base, un grand sens de la logique et de la discipline.
Suivez les tutos et exercez-vous. Posez des questions si un point ou un autre n'est pas clair.

 
Par Babyhay  -  Le 05/07/2017 11:50  -  Haut de page  - 

ok,j;ai pas de temps pour lire les cours,mais je vais quand meme resoudre ca,,apres l'insertion dans la base de donnees , vous pense que ce ne serais pas difficile pour l'email de confirmation?

 
Par Cyrano  -  Le 05/07/2017 11:57  -  Haut de page  - 

J'avais cru comprendre que l'envoi du courriel fonctionnait et que seule l'insertion ne fonctionnait pas ?

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !