Exploitation valeurs d'un formulaire dans une requête SQL

Eléphanteau du PHP | 12 Messages

02 oct. 2013, 15:48

Bonjour je ne trouve pas le texte a taper pour :
- récuperer la valeurde la variable du formulaire $nom
- inserer cette valeur dans value-2

C'est mysql qui ai créer la requete $sql,

Image


Le probleme c'est que je ne sait pas adapter cette requette a mon probleme, je commence vraiment a desesperer et pourtant
ca doit etre hyper simple pour un pro
Je suis certain qu'en 30 secondes c'est résolu, alors que moi j'y suis depuis deux jours et je n'avance pas...oh secours

<br />
    Veuillez taper votre nom :
</p>
 
<form action="" method="post">
<p>
 <input onClick="ds_sh(this);" id="nom" name="nom" value="<?php echo($nom);  // date entree vide?>" style="cursor: text" />
    <input type="submit" value="Valider" />
</p>
</form>

<?php
echo "texte saisi $nom";//pour tester le resultat
?>
<?php
include './includes/config.php'; // ok pour ouverture de BD


// C'EST ICI QUE JE NE SAIS PAS CE QUE JE DOIT METTRE COMME "VALUE-2"
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

$sql = 'INSERT INTO `client`(`client_id`, `client_nom`, `client_date1`, `client_date2`, `client_passwd`, `client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12])';

?>
Modifié en dernier par moogli le 06 oct. 2013, 21:43, modifié 2 fois.
Raison : Titre plus clair

Eléphant du PHP | 116 Messages

02 oct. 2013, 16:06

Salut,

Tu devrais te lire un bon tuto pour voir comment marche PHP avec les fonctionnalités web et pour communiquer avec ta base de données... J'ai peur que ta requête ne soit pas très très efficace ! :-)

Et aussi, pour la prochaine fois, ça serait bien de mettre un sujet un peu plus explicite !

A+,
Computarelier
@+,
Computarelier

Mammouth du PHP | 2278 Messages

02 oct. 2013, 16:20

<?PHP
//Je préfère tout faire en PHP car ça évite d'intercaler du php un peu partout dans le HTML
//mettre ça toutes les fois où on n'est pas sûr de ce qui passe d'un module à l'autre
//il est normal que la première fois on ait un array() : tableau vide
print_r($_POST);
$passage = isset($_POST['passage']) ? $_POST['passage']+1: 1;
// vérifie que $passage a changé de valeur
print "<br />";
var_dump($passage);
if ($passage == 1)
{
$chaine = "
<br />
Veuillez taper votre nom :
</p>

<form action = '' method='post'>
<p>
<input id='nom' name='nom' value='' />
<!--ajout ce cet input caché qui te permet de savoir si on est déjà passé et d'agir en conséquence-->
<input type ='hidden' name ='passage' value = '$passage' />
<input type='submit' value='Valider' />

</p>
</form>";

print "$chaine";
}
else
{
$nom = $_POST['nom'];
print "vous vous nommez ".$nom;
//on suppose que la connexion à la base est faite
//il faudrait savoir si client_id est autoincrement
//S'il est autoincrement, tu peux supprimer `client_id`, et [value-1],

// $sql = 'INSERT INTO `client` (`client_id`, `client_nom`, `client_date1`, `client_date2`, `client_passwd`,
`client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`)
VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12])';
//il faut remplacer [value-2] par '$nom'; mais pour les autres il faudrait que tu ajoutes des input dans ton formulaire.
//Dans l'immédiat tu peux essayer de remplacer value-3... par ''...


}
?>


A suivre
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

02 oct. 2013, 16:53

Merci de ta reponse (sirakawa)
j'ai donc remplacer ce que tu ma conseiller

Parse error: syntax error, unexpected T_VARIABLE in /homez.108/lambertt/www/test.php on line 40

dur dur....c'est pas evident

LIGNE 40 $sql = 'INSERT INTO `client`(`client.......
<p>
<br />
    Veuillez taper votre nom :
</p>
 
euillez taper votre nom :
</p>

<form action = '' method='post'>
<p>
<input id='nom' name='nom' value='' />
<!--ajout ce cet input caché qui te permet de savoir si on est déjà passé et d'agir en conséquence-->
<input type ='hidden' name ='passage' value = '$passage' />
<input type='submit' value='Valider' />

</p>
</form>";


<?php
print "$chaine";


$nom = $_POST['nom'];
print "vous vous nommez ".$nom;

?>


<?php
echo "texte saisi $nom";//pour tester le resultat
?>
<?php
include './includes/config.php'; // ok pour ouverture de BD


// C'EST ICI QUE JE NE SAIS PAS CE QUE JE DOIT METTRE COMME "VALUE-2"
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

$sql = 'INSERT INTO `client`(`client_nom`, `client_date1`, `client_date2`, `client_passwd`, `client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`) VALUES ('$nom';"test","test","test","test","test","test","test","test","test","test")';

?>

<?php
/*reponse de sirakawa


print "$chaine";
}
else
{
$nom = $_POST['nom'];
print "vous vous nommez ".$nom;

//on suppose que la connexion à la base est faite
//il faudrait savoir si client_id est autoincrement	
//S'il est autoincrement, tu peux supprimer `client_id`, et [value-1],

//	$sql = 'INSERT INTO `client` (`client_id`, `client_nom`, `client_date1`, `client_date2`, `client_passwd`, 
`client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`) 
VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12])';
//il faut remplacer [value-2] par '$nom'; mais pour les autres il faudrait que tu ajoutes des input dans ton formulaire.
//Dans l'immédiat tu peux essayer de remplacer value-3... par ''...



?>

*/





Mammouth du PHP | 2278 Messages

02 oct. 2013, 17:02

C'est moi qui suis nul:
//il faudrait savoir si client_id est autoincrement
//S'il est autoincrement, tu peux supprimer `client_id`, et [value-1],
/* version originale
$sql = 'INSERT INTO `client` (`client_id`, `client_nom`, `client_date1`, `client_date2`, `client_passwd`,
`client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`)
VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12])';*/
//il faut remplacer [value-2] par '$nom'; mais pour les autres il faudrait que tu ajoutes des input dans ton formulaire.
//Dans l'immédiat tu peux essayer de remplacer value-3... par ''...
Essaie simplement ça:
$sql = "INSERT INTO `client` (`client_nom`) VALUES ($nom)";
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

02 oct. 2013, 17:26

merci...Sarakawa .

Le formulaire fonctionne bien - plus de message d'erreur mais rien d'inserer dans la BD

Voici le lien pour tester ce formulaire http://www.lambert-thierry.be/test.php

voici les code d'acces a la BD - le pass est valide3810 - base de donne test tu peux faire ce que tu veux dedans !!!!

Image

voici le script modifier suivant tes conseils
<p>
<br />
    Veuillez taper votre nom :
</p>
 
euillez taper votre nom :
</p>

<form action = '' method='post'>
<p>
<input id='nom' name='nom' value='' />
<!--ajout ce cet input caché qui te permet de savoir si on est déjà passé et d'agir en conséquence-->
<input type ='hidden' name ='passage' value = '$passage' />
<input type='submit' value='Valider' />

</p>
</form>";


<?php
print "$chaine";


$nom = $_POST['nom'];
print "vous vous nommez ".$nom;

?>


<?php
echo "texte saisi $nom";//pour tester le resultat
?>
<?php
include './includes/config.php'; // ok pour ouverture de BD

$sql = "INSERT INTO `client` (`client_nom`) VALUES ($nom)"; // modifier suivant conseil de sarakawa

//$sql = 'INSERT INTO `client`(`client_nom`, `client_date1`, `client_date2`, `client_passwd`, `client_adresse`, `client_cp`, `client_ville`, `client_note`, `client_tel`, `client_gsm`, `date_ajout`) VALUES ('$nom';"test","test","test","test","test","test","test","test","test","test")';

?>

Mammouth du PHP | 2278 Messages

02 oct. 2013, 17:47

<?php
include './includes/config.php'; // ok pour ouverture de BD
//il faut ajouter du code pour se connecter et ouvrir la bdd
$mysqli = new mysqli('localhost', 'lambert_base', 'my_password', 'my_db');
if ($mysqli->connect_error)
{
die('Erreur de connexion (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
else
{
$sql = "INSERT INTO `client` (`client_nom`) VALUES ($nom)"; // modifier suivant conseil de sarakawa
$resultat = $mysqli->query($sql);
if ($resultat === true)
{
$message = "Insertion faite";
}
else
{
$message = "Insertion ratée";
}
print "$message";
}
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

02 oct. 2013, 18:01

Merci Sarakawa mais helas

"insertion ratée"
<p>
<br />
    Veuillez taper votre nom :
</p>
 
euillez taper votre nom :
</p>

<form action = '' method='post'>
<p>
<input id='nom' name='nom' value='' />
<!--ajout ce cet input caché qui te permet de savoir si on est déjà passé et d'agir en conséquence-->
<input type ='hidden' name ='passage' value = '$passage' />
<input type='submit' value='Valider' />

</p>
</form>";


<?php
print "$chaine";


$nom = $_POST['nom'];
print "vous vous nommez ".$nom;

?>


<?php
echo "texte saisi $nom";//pour tester le resultat
?>


<?php
include './includes/config.php'; // ok pour ouverture de BD
//il faut ajouter du code pour se connecter et ouvrir la bdd
$mysqli = new mysqli('mysql5-2.1000gp', 'lamberttbase', 'valide3810', 'lamberttbase');
if ($mysqli->connect_error) 
{
die('Erreur de connexion (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
else
{
$sql = "INSERT INTO `client` (`client_nom`) VALUES ($nom)"; // modifier suivant conseil de sarakawa
$resultat = $mysqli->query($sql);
if ($resultat === true)
{
$message = "Insertion faite";
}
else
{
$message = "Insertion ratée";
}
print "$message";
}
?>

Mammouth du PHP | 2278 Messages

02 oct. 2013, 18:11

essaie ceci:
$sql = "INSERT INTO `client` (`client_nom`) VALUES ($nom)"; // modifier suivant conseil de sarakawa
print "$sql";
//et de le mettre dans phpmyadmin
$resultat = $mysqli->query($sql);
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 79 Messages

02 oct. 2013, 18:13

Bonjour l'ami,

Je vais te donner des outils qui vont te permettre de travailler simplement avec une interaction avec un base de donnée.

1ère Étape : Les outils !

Je t'invite à télécharger ces outils (gratuit) :

Netbeans : C'est un ide, c'est à dire une application qui va te permettre de codé plus facilement grâce à l'auto complétion (tu tapes 3 lettres sa écrit le reste).
https://netbeans.org/downloads/index.html (colonne PHP)

MySQL Workbench : C'est un application qui va te permettre de schématiser ta base de données.
http://dev.mysql.com/get/Downloads/MySQ ... mysql.com/

Wamp (win) / Lamp (mac) : application regroupant un packaging (PHP, Mysql, autres) sur le service Apache (serveur web).

2ème Etape : Classe / objet View et PDO !

Si vous n'avez jamais fait de PHP objet ce n'est pas bien grave, il faut voir ces classes comme des outils avec des fonctions à disposition pour faire certain traitement. Je vous invite donc à place l'élément qui va suivre dans un fichier nommé par exemple "view.php" dans un dossier "class" de votre répertoire racine, sachant que l'objet "PDO" est intégré à PHP.

Image

Télécharge le fichier "view.php" : http://www.e-system.fr/data/view.rar

La classe "view" possède une fonction important : load( $filename ), avec "$filename" le chemin d'un fichier HTML ou PHTML (PHP + HTML). Celle-ci permet d'importer se fichier et de pouvoir y ajouter très simplement des variables. Vous avez tous jouer à un jeu en cours d'anglais, ou dans un texte le professeur remplacer un mot ou une suite de mots par un trait. C'est un peu la même logique, le texte représente le code HTML, les traits les variables PHP ou l'on peut mettre ce que l'on désire.

Exemple pour l’exploitation de l'objet de vue (classe "view") :

Image

Télécharger cette étape ici : http://www.e-system.fr/data/result1.rar

Si vous regarder le code source de la page index.php, comme par magie les variables ont été replacer par les valeurs données dans l'index.

Mise en relation entre un base de données et l'objet de vue "view" :

SQL rataché pour créer la base de donnée et la table utilisateur :

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Table `dbname`.`utilisateur`
-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `dbname`.`utilisateur` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `nom` VARCHAR(45) NULL ,
  `prenom` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Image

Télécharger cette étape ici : http://www.e-system.fr/data/result2.rar

Voyer bien l'exploitation de la boucle foreach() dans le fichier "main.phtml" ainsi que la condition pour afficher un résultat ou non.

Comment insérer des données dans la base de données ?

Image

Attention j'ai fait une erreur 'INSERT INTO utilisateur' et pas 'utisateur' >< !

Voilà, vous avez deux outils en main pour faire tout ce que vous voulez en séparant les fichiers de vu ("view") et le traitements. Reste plus qu'a vous créer un système qui gère le requête de votre site, exemple avec le query de l'url :

index.php?page="accueil"

J’espère que cette petite explication vous sera bénéfique. En vous souhaitant une bonne programmation, à vos clavier, 3,2,1, GO !

Ciao.

Eléphanteau du PHP | 12 Messages

03 oct. 2013, 10:39

Je remercie vivement sarakawa, embryon, et orenx22 qui m’a donné des outils, qui ensemble et séparémént m’ont donné la solution

quand a la reponse de fœtus citée ici

Salut,

Tu devrais te lire un bon tuto pour voir comment marche PHP avec les fonctionnalités web et pour communiquer avec ta base de données... J'ai peur que ta requête ne soit pas très très efficace !

Et aussi, pour la prochaine fois, ça serait bien de mettre un sujet un peu plus explicite !


Ce n’est pas la peine de perdre ne fusse que 5 secondes pour copier coler ce message

1 quand on fait appel au forum, c’est qu’on a lu et relu et qu'on a tester et retest - on vient au forum quand c'est presque désesperer
2 N’a tu jamais été débutant ?
3 qu’est ce que ta réponse apporte a la collectivité de plus ?
4 Il fut intéressant de lire ma question et de chercher une solution

En conclusion, je peux meme moi comme HYPER débutant répondre a toutes les questions du forum
En repondant Exactement ce que tu m’a répondu

Désolé l’ami, au lieu de répondre à xx message essaye de trouver une solution aux problèmes posés, ce que les gens que je remercie on fait

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 oct. 2013, 15:33

peux être ne t'es tu pas poser la question de qui viens sur un forum et comment on fait pour recherche un message sur un forum.
hors ton titre n'est en rien explicite (comme demande dans la charte que tu as accepté d'ailleurs) et ne permet pas de savoir de quoi il en retourne du coup on ne lit pas ton sujet alors qu'il pourrait être utile à quelqu'un .

ceci dit si la fonction de recherche servait à quelque chose il y aurait moins de sujet :mrgreen:

et puisse que tu n'aprécie pas certaine réponse sache simplement que le but du forum et l'apprentissage du langage et l'aide à l'apprentissage. Toi tu demande à ce que l'on te le fasse.

ce que tu souhaite faire fait partie de la plus part des tutos de base sur des sites comme http://lephpfacile.com ou http://www.phpdebutant.org et ton ne reflète en rien la compréhension de ce tuto.

Pour revenir sur ta demande, elle n'est pas clair, le français approximatif (j'ai moi aussi du mal mais j'essais de faire des efforts pour avoir une syntaxe correct ;) ).

perso je t'aurais orienté vers des tutos expliquant la récupération de valeur d'un formulaire et comment utiliser une base de données ;)

être débutant tout le monde l'est cela n'exclus la recherche et de poser une question correctement lorsque l'on ne trouve pas seul (une question bien posé, c'est comme un problème bien posé quasiment tous est fait ;)).

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

03 oct. 2013, 16:44

Bonjour,
L'objet de ma demande n'était peut etre pas tres clair, j'en convient, mais j'ai quand même reçu des réponses cohérentes. - Ok je ferai mieux la prochaine fois

L'objet de mon dernier message était bien, me semble t'il, de remercier les membres qui m'ont aider malgré le titre de ma demande
Mais je regrette quand un membres me repond qu'il faut lire les tutos, c'est une evidence

J'ai BIEN remercier les membres qui ont pris la peine de lire autrement qu'en diagonale mes messages, et encore une fois je les remercie
Mais quand un message d'un membre ne sert strictement a rien je le dis aussi

Merci a vous de passer du temps pour les autres
cordialement

Mammouth du PHP | 2278 Messages

04 oct. 2013, 09:14

Coucou,
Pourrais-tu changer le titre de ton message?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD