Partage

impossible de relie mon site a ma base de donné

mysql

5 juin 2018 à 2:11:59

bonjour 

voila je viens vers vous car j'ai un problème ,impossible de récupérer le formulaire html que j'ai crée 

je voudrais récupérer les info pour les insérer dans ma base de donné mysql 

j'ai crée une page php puit j'ai ajouter un include dans ma page html

je travaille sous uwamp 

voici le code :


$con= mysqli_connect('localhost ' , 'root' , 'root');
 
mysqli_select_db($con, 'ma bdd');
if ("con")  echo "echec";
mysqli_query('INSERT INTO `ma table` (nom,email,adresse)VALUES (['$nom'],['$email'],['$adresse'])');

 il me sort une erreur a toutes les lignes.

merci cordialement

Vous êtes demandeur d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur web junior

Je postule
Formation
en ligne
Financée
à 100%
5 juin 2018 à 6:29:19

Bonjour,

Le string de connexion semble erroné en ligne 1 : quel est le nom de la base de données ?

Voir la doc : http://php.net/manual/fr/function.mysqli-connect.php

A+

8 juin 2018 à 1:03:06

bonjour 

je ne vois pas se que ses string je vien de commencer a apprendre a codée

pouvez vous m'en dire un peu plus le nom de ma base de donné c'est prop-vehi

apparemment c'est a la ligne 5 ses le "$nom" qui comporte une erreur j'ai regarder un  tuto sur youtube

ses exactement pareil sauf que pour lui sa marche et pour moi sa marche pas

merci cordialement 

-
Edité par BoubouAlba 8 juin 2018 à 3:04:00

8 juin 2018 à 5:14:11

Salut, qlq trucs, c'est pas très sécurisé tu risque les injections SQL (Des personnes pourront dump ta base de donné et volé des informations), après, tu semble pas définir tout se que tu as mis dans l'insertion, je pourrais avoir ton formulaire html stp ? Merci
11 juin 2018 à 2:03:24

bonjour

voila mon formulaire

<form method="post" action="connect.php">

<br />

<h4 class="nom">votre nom<h/4>
<br />
<input type="text" name="nom" placeholder="votre nom" />
<br />
<br />

<h4 class="email">votre email<h/4>
<br />
<input type="email" name="email"  placeholder="votre email" required="required"/>
<br />
<br />
<h4 class="commentaire">adresse<h/4>
<br />
<textarea name="adresse" placeholder="adresse "></textarea>
<br />
<br />
<input class="bouton" type="submit" name="valider" value="valider" />


</form>
<br />

merci cordialement

12 juin 2018 à 2:12:47

bonjour

il y a t'il quelqu'un pour m'aider je suis perdu 

il y a mon formulaire et mon fichier de connexion php mysql je ne vois pas ou et l'erreur

voici mon formulaire

<form method="post" action="connect.php">

<br />

<h4 class="nom">votre nom<h/4>
<br />
<input type="text" name="nom" placeholder="votre nom" />
<br />
<br />

<h4 class="email">votre email<h/4>
<br />
<input type="email" name="email"  placeholder="votre email" required="required"/>



<br />
<br />
<h4 class="commentaire">adresse<h/4>
<br />
<textarea name="adresse" placeholder="adresse"</textarea>
<br />
<br />
<input class="bouton" type="submit" name="valider" value="valider" />


</form>
<br />

voici maintenant mon fichier de connexion qui s'appelle connect.php

$nom=$_POST['nom'];
$email=$_POST['email'];
$adresse=$_POST['adresse'];

$con= mysqli_connect('localhost ' , 'root' , 'root');
 
mysqli_select_db( 'ma bdd');

mysqli_query ("INSERT INTO ma table (nom,email,adresse)VALUES (['$nom'],['$email'],['$adresse'])" )

puis j'enregistre et la sur mon navigateur il me sort sa:

merci

cordialement

-
Edité par BoubouAlba 12 juin 2018 à 2:26:23

13 juin 2018 à 4:12:37

: https://pastebin.com/Pw7JP4XD (un peu de galères avk openclassrooms mobile ^^)

Je précise quand même que ton code fait très négligé, par exemple tu vérifie pas si l'email existe déjà, ni si c'est un format email....

-
Edité par FrancDurotin 13 juin 2018 à 4:27:22

13 juin 2018 à 6:50:26

Faut éviter à le faire passer de simple requète procédurale à requète poo à message d'erreur sophistiqué, il débute seulement.

Pour le code:
$con= mysqli_connect('localhost ' , 'root' , 'root');
mysqli_select_db( 'ma bdd');

Dans mysqli_select_db() tu dois avoir 2 choses:
1. la requète mysqli_connect('localhost ' , 'root' , 'root'); (donc tu peux utiliser la variable $con)
2. le nom de la base de donnée

Donc suffit de changer:
mysqli_select_db( 'ma bdd');
par
mysqli_select_db($con, 'ma bdd');

Faut savoir encore 2 chose:
1. dans le nom de base de donnée et le nom de la table, tu peux pas avoir d'espace.
Donc tu dois changer "ma base", "ma table" par "ma_base", "ma_table"
2. tu dois avoir crée une base "ma_base" et une table "ma_table", pour pouvoir les utiliser, s'ild existent pas ça marchera pas.


Et dans:
$con= mysqli_connect('localhost ' , 'root' , 'root');
faut faire attention à ne pas ajouter d'espaces inutile, ici il y avait une éspace après localhost
$con= mysqli_connect('localhost' , 'root' , 'root');


Pour venir au message d'érreur sur ton image le voici:
mysqli_query() expects at 2 least 2 parameters, 1 given .../connect.php on line 6
En traduction, il dit que la fonction mysqli_query() attend 2 paramètre mais que 1 est présent.
Il donne aussi l'information sur quel fichier: .../connect.php à la ligne 6
Et à la ligne 6 du fichier connect.php tu avais bien: mysqli_select_db( 'ma bdd');

J'espère que ça t'aurais aider.

-
Edité par h3qd5h0t 13 juin 2018 à 7:07:21

16 juin 2018 à 2:04:04

bonjour 

j'ai cliquer sur le lien que vous m'aviez  modifier il marche nickel 

 par contre kan j'essaye de ratacher un autre site web 

il ya l'erreur suivante qui s'affiche

pourtant j'ai fais un copier coller du code entier, j'ai juste changer  les variable les nom de la bdd et le nom de la table

j'ai exactement le même code pour mon premier site sa marche pour le deuxième sa bloque je ne vois pas d'erreur

voici mon code

$nom = $_POST["nom"] ;
$prenom = $_POST["prenom"] ;

$con = new mysqli('localhost', 'root', 'root', 'recup' ) ;
if ($con->connect_error) {
    die("Echec de connexion avec mysqli: " . $con->connect_error);
}
$tmpr = $con->prepare("INSERT INTO `info` (nom,  prenom) VALUES (?, ?, ?)");
$tmpr->bind_param("sss", $nom, $prenom);
$tmpr->execute();
?>



merci cordialement

-
Edité par BoubouAlba 16 juin 2018 à 2:07:10

16 juin 2018 à 11:38:52

2 colonnes pour 3 valeurs/paramètres et ça ne te choque pas ?

Idem au bind, tu "déclares" 3 paramètres ("sss") et n'en bindes que 2 ...

Ca me paraît tout de même bizarre si les erreurs étaient gérées (cf mysqli_report), mysqli ne le signale pas.

-
Edité par julp 16 juin 2018 à 11:41:45

18 juin 2018 à 2:25:28

bonjour 

j'ai modifier les "sss" par"ss" a marcher hier, puis  aujourd'hui sa ne fonctionne plus 

il y a cette erreur qui s'afiche

voila mon code

$nom=$_POST["nom"];
$prenom=$_POST["prenom"];

$con=new mysqli('localhost','root','root','ma_bdd');
if ($con->connect_error){die("erreur de connexion".$con->connect_error);}

$tmpr=$con->prepare("INSERT INTO 'ma_table'(nom,prenom)VALUES(?,?)");
$tmpr=bind_param("ss",$nom,$prenom);
$tmpr=execute();


merci cordialement

18 juin 2018 à 11:50:07

Tu m'expliques pourquoi tu as changé des -> en = ?

Du coup :

  1. ça devient un appel de fonction, qui n'existe pas, au lieu d'un appel de méthode
  2. tu fais une affectation (= écraserais ton objet mysqli_stmt)

Un peu de logique aussi dans ce que vous faites.

19 juin 2018 à 1:30:55

bonjour 

moi je n'ai rien changer il et comme sa depuis le début 

par contre je suis vraiment un débutant,

en faite qu'es qu'il il faudrait changer quoi dans ce code pour qu'il soit valide ?

merci cordialement

19 juin 2018 à 15:37:25

 Voir différence.

$tmpr=$con->prepare("INSERT INTO 'ma_table'(nom,prenom)VALUES(?,?)");
$tmpr=bind_param("ss",$nom,$prenom);
$tmpr=execute();
 
$tmpr=$con->prepare("INSERT INTO 'ma_table'(nom,prenom)VALUES(?,?)");
$tmpr->bind_param("ss",$nom,$prenom);
$tmpr->execute();

 C'est pour ces truc que j'avais dit sur mon premier message: "Faut éviter à le faire passer de simple requète procédurale à requète poo à message d'erreur sophistiqué, il débute seulement."

Le procédurale et le poo sont différent à l'écriture, faut s'y connaître et différencier pour bien utiliser.

Encore dans mon premier message, j'avais bien spécifier les erreurs simple, une fois compris tu pouvais continuer à utiliser ton code en procédurale. Mais bon tu choisis ce que tu veux, mais sache juste qu'il existe 2 type d'écritue php procédurale et poo (ainsi pour la base de donnée mysqli poo et procédurale, dans ton premier code c'est procédurale celui commentaire à la fin c'est du poo/mysqli poo).

-
Edité par h3qd5h0t 19 juin 2018 à 15:45:40

20 juin 2018 à 0:39:48

bonjour 

je ne comprend pas j'ai exactement le même code sur un autre site internet( mais il y a a pas les même variable) et sa marche

j'ai essayer de mettre les -> a la place de= sa ne marche pas non plus  toujours la même erreur sa doit être qu'une petite erreur

mais je vois pas laquelle .

merci cordialement

20 juin 2018 à 8:21:50

"je ne comprend pas j'ai exactement le même code sur un autre site internet( mais il y a a pas les même variable) et sa marche"
Peut-être que la base de donnée diffère du tiens.

Donne nous le code php et l'erreur afficher.

-
Edité par h3qd5h0t 20 juin 2018 à 8:24:42

21 juin 2018 à 0:10:57

bonjour

voila mon formulaire

<form method="post" action="new.php">
<input type="text" name="nom"/>
<br />
<br />
<input type="text" name="prenom"/>
<br />
<br />
<input type="submit" name"submit" values="valider"/>
</form>

voila mon fichier de connexion

$nom = $_POST["nom"] ;
$prenom = $_POST["prenom"] ;

$con = new mysqli('localhost', 'root', 'root', 'recup' ) ;
if ($con->connect_error) {
    die("Echec de connexion avec mysqli: " . $con->connect_error);
}
$tmpr = $con->prepare("INSERT INTO `info` (nom,  prenom) VALUES ($nom, $prenom");
$tmpr->bind_param("ss", $nom, $prenom);
$tmpr->execute();

et voici l'erreur

ma base de donné c'est recup et ma table c'est info j'utilise uwanp et dans ma table il y a deux colonnes nom et prenom

merci cordialement

21 juin 2018 à 0:29:11

  1. Tu bindes 2 paramètres qui n'existent pas.
  2. Il manque la ) censée terminer VALUES(

VALUES ($nom, $prenom"); => VALUES (?, ?)");

21 juin 2018 à 0:35:13

Je m'y connais pas trop en poo et mysqli poo, d'après le site php, ce truc devrait fonctionner:

$tmpr = $con->prepare("INSERT INTO 'info' (nom,prenom) VALUES (?, ?)");
$tmpr->bind_param('ss', $nom, $prenom);
$tmpr->execute();
// printf("%d Row inserted (nombre d'insertion).\n", $tmpr->affected_rows);
$tmpr->close();

Mettre directement des variables comme values fonctionne sur du mysqli écrit en procedurale.
Sur l'écriture poo mysqli tu utilises une autre méthode avec ? au lieu du variable et ajoute une nouvelle ligne pour lier tes variables aux "?".

Si ton but est de faire quelques simples page et ne plus toucher, tu peux continuer comme ça à regrouper du code fonctionnel pour arriver à ton but.

Mais si tu comptes faire beaucoup de code ou faire un code compliquer et continuer à coder, je te conseil de commencer à bien suivre/étudier un tutoriel sur php pdo (si tu suis déjà pas de soucis).

-
Edité par h3qd5h0t 21 juin 2018 à 0:59:10

22 juin 2018 à 0:25:05

bonjour
j'ai essayer tous se que vous m'aviez dit de faire j'ai copier le code que vous m'aviez ecris , toujours cette erreur 
quand vous me dite que je bind des paramètre qui n'existe pas du coup je doit faire quoi pour supprimer  cette erreur?
merci cordialement
22 juin 2018 à 8:25:22

Réfléchir et arrêter de copier coller bêtement sans comprendre.

(Un jour je vais mettre une petite forkbomb dans un exemple pour voir si le mec copie sans comprendre xd)

impossible de relie mon site a ma base de donné

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown