Mysql

Statut
N'est pas ouverte pour d'autres réponses.

U.S. Marine

Touriste
Bonjour , je voudrais bien savoir comment enregistré dans ma BDD ce que je récupère d'une autre page. Ici pour exemple, je récupère le champ "nom" sur la page "récapitulatif" ces données viennent de la page "enregistrement". Je récupère tout dans un tableau d'où les <tr>. Comment et où dois-je mettre INSERT INTO. Au bas de ma page j'ai un bouton "enregistré ", dois-je mettre mon code sql là ???

page récapitulatif:

<tr>
<td align=right>nom :</td>
<td align=right:colere:?php echo $_POST['nom'];?:colere:/td>

</tr>


<INPUT type="button" value="Enregister">
 

Jereck

Α & Ω
Staff
Tes commandes SQL ne se trouvent pas coté client !
 
1er
OP
U

U.S. Marine

Touriste
Ok, mais comment faire alors pour enregistré les données, avec echo $_POST ça peut fonctionner ou pas ? Peut-être dans les inputs de la page enregistrement?

INSERT INTO jeux_videos VALUES('', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')

Ici on entre tout de suite les données.

Je suis perdu :pfiou:
 

SkYlEsS

Elite
Je ne savais pas le siteduzéro si difficile à comprendre ...
 
1er
OP
U

U.S. Marine

Touriste
Problème résolut :p, mais je voudrais savoir une chose, j'ai deux requête sql " INSERT INTO " dans mon script php, les deux enregistre dans une table différente. Comment dois-je écrire le code :-'.


ex:

INSERT INTO donnees_perso (id, nom, prenom) VALUES('','$nom','$prenom')

et

INSERT INTO connexions (id, id_pc, phone) VALUES('','$id_pc','$phone')
 

Ahava

Revenant
Tout dépend de ce que tu veux stocker comme information, et où !


Ta première requête sert, je présume, à enregistrer un nouveau user.

La deuxième, à enregistrer ses "connections" possibles...


J'en sais rien, j'invente la sémantique...
 
1er
OP
U

U.S. Marine

Touriste
J'ai un formulaire, le début sert à enregistrer les info personnels de l'user, la seconde partie du formulaire enregistre le login et pass plus d'autre petite info.
Je ne vois pas où je peut mêtre ma requête pour qu'elle enregistre.

Ce code si enregistre les données perso.

<?php
// On commence par récupérer les champs
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['rue'])) $rue=$_POST['rue'];
else $rue="";

if(isset($_POST['numero'])) $numero=$_POST['numero'];
else $numero="";

if(isset($_POST['boite'])) $boite=$_POST['boite'];
else $boite="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['localite'])) $localite=$_POST['localite'];
else $localite="";


// On vérifie si les champs sont vides
if(empty($nom) OR empty($prenom) OR empty($rue) OR empty($numero) OR empty($boite) OR empty($cp) OR empty($localite))
{
echo '<font color="red">Attention, seul le champs <b>boite</b> peut rester vide !</font>';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
//Requête n°1

// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('intranet',$db) or die('Erreur de selection '.mysql_error());

// on écrit la requête sql
$sql = "INSERT INTO donnees_perso (id, nom, prenom, rue, numero, boite, code_postal, localite) VALUES('','$nom','$prenom','$rue','$numero','$boite','$cp','$localite')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

// on ferme la connexion
mysql_close();
}


?>
 

ozilrit

Elite
Aie aie aie, je repasserai ce soir.
 

Jereck

Α & Ω
Staff
Ben, tu l'a faite ta requète SQL dans ton code ...
 
1er
OP
U

U.S. Marine

Touriste
J'ai un formulaire avec les données des personnes et une partie avec les données de connexions ( login, password ), la requête que j'ai, enregistre bien dans la table "données_perso". Ce que ne je parviens pas à faire c'est ajouter la requête pour enregistré les autre info dans la table "connexions". Est-ce que je dois fermer la première connexions de la bdd, est-ce que je dois ajouter la seconde requête juste après la première ???

Voici le script pour la partie des données de connexions.

<?php
// On commence par récupérer les champs
if(isset($_POST['id_pc'])) $nom=$_POST['id_pc'];
else $id_pc="";

if(isset($_POST['phone'])) $prenom=$_POST['phone'];
else $phone="";

if(isset($_POST['login'])) $rue=$_POST['login'];
else $login="";

if(isset($_POST['password'])) $numero=$_POST['password'];
else $password="";



if (empty($id_pc) OR empty($phone) OR empty($login) OR empty($password))
{
echo '<font color="red">Attention, seul le champs <b>téléphone</b> peut rester vide !</font>';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base

$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO connexions (id, id_pc, phone, login, password) VALUES('','$id_pc','$phone','$login','$password')";


mysql_select_db('intranet',$db) or die('Erreur de selection '.mysql_error());


// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}



?>
 
1er
OP
U

U.S. Marine

Touriste
Voilà le code au complet avec mes deux requêtes. La seconde requête pose qlq petit pb, elle enregistre des champs vide dans la table " connexions". Si on pouvait m'aider à corriger.








<?php
// On commence par récupérer les champs
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['rue'])) $rue=$_POST['rue'];
else $rue="";

if(isset($_POST['numero'])) $numero=$_POST['numero'];
else $numero="";

if(isset($_POST['boite'])) $boite=$_POST['boite'];
else $boite="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['localite'])) $localite=$_POST['localite'];
else $localite="";


if(isset($_POST['id_pc'])) $nom=$_POST['id_pc'];
else $id_pc="";

if(isset($_POST['phone'])) $prenom=$_POST['phone'];
else $phone="";

if(isset($_POST['login'])) $rue=$_POST['login'];
else $login="";

if(isset($_POST['password'])) $numero=$_POST['password'];
else $password="";


// On vérifie si les champs sont vides
if(empty($nom) OR empty($prenom) OR empty($rue) OR empty($numero) OR empty($boite) OR empty($cp) OR empty($localite) OR empty($id_pc) OR empty($phone) OR empty($login) OR empty($password))
{
echo '<font color="red">Attention, seul le champs <b>boite</b> peut rester vide !</font>';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{


// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('intranet',$db) or die('Erreur de selection '.mysql_error());

// on écrit la requête sql
$sql = "INSERT INTO donnees_perso (id, nom, prenom, rue, numero, boite, code_postal, localite) VALUES('','$nom','$prenom','$rue','$numero','$boite','$cp','$localite')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on écrit la requête sql
$sql = "INSERT INTO connexions (id, id_pc, phone, login, password) VALUES('','$id_pc','$phone','$login','$password')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

// on ferme la connexion
mysql_close();
}


?>
 

Maleki

Pain in the ass !
C'est tout à fait normal. Tu stockes tes données dans les mauvaises variables.

PHP:
if(isset($_POST['id_pc'])) 
  $id_pc = $_POST['id_pc']; 
else 
  $id_pc = ""; 

if(isset($_POST['phone'])) 
  $phone = $_POST['phone'];
else 
  $phone = "";

if(isset($_POST['login'])) 
  $login = $_POST['login'];
else 
  $login = "";

if(isset($_POST['password'])) 
  $password = $_POST['password'];
else 
  $password = "";
 
1er
OP
U

U.S. Marine

Touriste
ok, je vois où je me suis gouré.

Super ça fonctionne, merci Maleki
 

Calvin80

Respect is key
ca sent l'injection sql à plein nez ;)
 

ozilrit

Elite
Ainsi que des erreurs dans les conditions :
if(isset($_POST['id_pc']))
$id_pc = $_POST['id_pc'];
else
$id_pc = "";
  • Le champs d'un formulaire est toujours défini, même s'il est vide. isset($_POST['id_pc']) renverra donc toujours vrai.
if(empty($nom) OR empty($prenom) OR empty($rue) OR empty($numero) OR empty($boite) OR empty($cp) OR empty($localite) OR empty($id_pc) OR empty($phone) OR empty($login) OR empty($password))
  • La précédence des opérateurs : or est différent de ||.
  • Une liste de conditions en ligne comme celle-ci est un poid pour le ZE, il vaut mieux tester condition par condition.
  • empty renvoit également true si la valeur est 0 ou "0" ou "false" (string, oui oui).
Ainsi pour toutes ces bonnes raisons (qui, je n'en doute pas, seront vivement critiquées sans le moindre argument), il vaut mieux remplacer les deux blocs par :

if (isset ($_POST['nom']{0}))
/* Gagné, le champs est rempli : qu'il soit "Salut", "0" ou "false" */
else
/* Perdu, le champs est vide : "" */

/* etc */


Aie aie aie, je repasserai ce soir.
\o/ mieux vaut tard que jamais !
 

KAMI

spim spam spoum
Si je peux peut me permettre un petit ajout pour ce qui est la gestion des messages d'erreur ^^

Ma méthode est la suivante :

PHP:
$arrayerror=Array(); //création d'un tableau

/*VÉRIFICATION DES DONNÉES*/
if(isset($_POST[nom])){ //verification que la variable du formulaire est bien passée
     if(empty($_POST[nom])){
         $array_push($arrayerror,"Merci de rentrer le nom"); // on force l'insertion dans le tableau
      }
}else{
    array_push($arrayerror,"Erreur de passage de variable"); // on force dans le tableau
}

if(count($arrayerror) > 0){ /*si il y a des entrée dans le tab on affiche cela veut dire qu'il y a des erreurs*/
  echo('<ul>');
   echo('Les erreurs suivantes ont été trouvées');
    foreach($arrayerror as $key){
         echo('<li>.$key.</li>');
     }
  echo('</ul>');
}

if(count($arrayerror) == 0){
//si il n'y a pas d'entrée dans le tableau ça veut dire que le formulaire est rempli correctement et que les actions (injection SQL par exemple) peuvent être éxécutées
}
 

KAMI

spim spam spoum
Bon petit soucis, je ne sais pas éditer mon message précédent et il y a des erreurs au niveau de mes variables POST j'ai oublié les '' dans les crochets ^^
 

Jereck

Α & Ω
Staff
Bon petit soucis, je ne sais pas éditer mon message précédent et il y a des erreurs au niveau de mes variables POST j'ai oublié les '' dans les crochets ^^
en fait, apparement, faire
$truc = $_POST[Machin];
et
$truc = $_POST['Machin'];
marchent tous les deux d'après ce qu'on m'a dit ...

juste que le premier truc prendre 10x plus de temps ...
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut