Bonjour,

Depuis peu j'essaye de me mettre au PHP et MySQL.
Mais je suis bloqué, je n'arrive pas à ajouter des valeurs dans ma BDD.

Voici mon code :


<html>
    <head>
		<title>TEST</title>
    </head>
	
    <body>
	
		<?php																			
		$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
		
		if(isset($_POST["Valider"]))
		{
			$sql = 'INSERT INTO t_test (nom_cab, adresse) VALUES '.$_POST['nom'].', '.$_POST['adresse'].'';
			mysql_query($sql);
		}
		?>
	
	
		<form action="test.php" method="post">
		Nom : <input type="text" name="nom">
		Adresse : <input type="text" name="adresse">
		<input type="submit" value="Valider">
		</form>
		
    </body>
</html>


Merci pour votre aide
Bonjour et merci à toi pour ta réponse.

J'avais essayé aussi cette partie de code, la voici :


<body>
	
		<?php
		ini_set('display_errors','off');
		
		$base = mysql_connect ('localhost', 'root', '');
		mysql_select_db ('test', $base) ;
		
		if(isset($_POST["Valider"]))
		{
			$sql = 'INSERT INTO t_test (nom_cab, adresse) VALUES '.$_POST['nom'].', '.$_POST['adresse'].'';
			mysql_query($sql);
		}
		?>
	
	
		<form action="test.php" method="post">
		Nom : <input type="text" name="nom">
		Adresse : <input type="text" name="adresse">
		<input type="submit" value="Valider">
		</form>
		
    </body>


Tu peux voir que je n'utilise plus le PDO pour me connecter à la base et la première ligne :

ini_set('display_errors','off');

permet d'enlever un message d'erreur qui apparait lorsque je n'utilise pas PDO.

Mais toujours aucune données ressort dans ma BDD.
Administrateur
Deux pistes :

Les données doivent être entourées de () (après VALUES) et de préférence entre quotes.

$sql = 'INSERT INTO t_test (nom_cab, adresse) VALUES (\''.$_POST['nom'].'\',\' '.$_POST['adresse'].'\')';


Bonus mais indispensable : il faut absolument vérifier les données dans $_POST avant de les insérer. De la sorte n'importe qui pourra très vite attaquer ta base de données voire l'effacer en quelques secondes.

Des fonctions telles que mysql_real_escape_string ou des expressions régulières peuvent aider.
Bonjour Dew, non cela ne fonctionne toujours pas.

Après ce n'est pas bien grave, si cela n'est pas protégé, je compte m'en servir uniquement en local.
OU alors, étant donné que mysql est obsolète, passer directement à PDO, comme tu avais déjà tenté de le faire.

Ta requête deviendrait alors :

$req = $bdd->prepare("INSERT INTO t_test(nom_cab, adresse) VALUES( :nom_cab, :adresse)");
$req->bindValue(':nom_cab', $_POST['nom'], PDO: [langue]ARAM_STR);
$req->bindValue(':adresse', $_POST['adresse'], PDO: [langue]ARAM_STR);
$req->execute();


Edit : PDO :: PARAM_STR sans les espace ...
Modifié par J_B (14 Oct 2015 - 19:02)
Bonjour et merci pour ta réponse, je viens d'essayer mais toujours rien.
Alors, je me demande si le problème viendrait pas de la base de données, voici ma base "test" :
upload/60161-Capture.PNG

Et sinon voici le code en utilisant PDO :


    <body>
	
		<?php
		ini_set('display_errors','off');
		
		//$base = mysql_connect ('localhost', 'root', '');
		//mysql_select_db ('test', $base);
		$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
		
		if(isset($_POST["Valider"]))
		{
			//$sql = 'INSERT INTO t_test (nom_cab, adresse) VALUES '.$_POST['nom'].', '.$_POST['adresse'].'';
			//$sql = 'INSERT INTO t_test (nom_cab, adresse) VALUES (\''.$_POST['nom'].'\',\' '.$_POST['adresse'].'\')';
			
			$req = $bdd->prepare("INSERT INTO t_test(nom_cab, adresse) VALUES( :nom_cab, :adresse)");
			$req->bindValue(':nom_cab', $_POST['nom'], PDO::ARAM_STR);
			$req->bindValue(':adresse', $_POST['adresse'], PDO::ARAM_STR);
			$req->execute();
			
			//mysql_query($sql);
		}
		?>
	
	
		<form action="test.php" method="post">
		Nom : <input type="text" name="nom">
		Adresse : <input type="text" name="adresse">
		<input type="submit" value="Valider">
		</form>
		
    </body>
Ton input submit n'est pas bon, il manque le name.
Tu n'envoie rien à la base de donnée parce que tu ne répond pas à la condition de ton if.

<input type="submit" value="Valider" name="Valider">


Maintenant ça devrait être bon Smiley smile