Probleme avec $_POST

Eléphanteau du PHP | 16 Messages

17 nov. 2015, 12:33

Bonjour à tous!
j'ai une BDD qui contient le nom et l'id de mes label afin de pouvoir les modifier à n'importe quel moment et puis j'ai générer un code php qui affiche ces label et des input comme ceci :
function affiche_label($idlabel){
	global $bdd;
$strSQL = 'SELECT `id_label`, `Nom` FROM `label` WHERE `id_parent` = '.$idlabel;
$resultat = requete_SQL($strSQL);
$menu_retour = '<ul>';
while ($tabl_result = $resultat->fetch(PDO::FETCH_ASSOC)) {
    $tabid  = $tabl_result['id_label'];
	$label = $tabl_result['Nom'] ;
    $tabnom = str_replace(' ','',$tabl_result['Nom']);
    $menu_retour .= "<li id='li_$tabid'>";
    $menu_retour .= "    <label id='lab_$tabid' for='inp_$tabid'>$label</label>";
    $menu_retour .= "    <input id='inp_$tabid' name='$tabnom' type='text' />";
    $menu_retour .= "</li>";                
}
$menu_retour .= '</ul>';
	
	return $menu_retour;
}
Comme vous pouvez le voir j'ai attribué des id et des name a l'input et sa fonctionne bien mais mon problème est comment faire une insertion dans la BDD dynamiquement?
Je m'explique :
j'ai le code suivant :
function inserer()
{
	$dsn='mysql:dbname=baseadsl; host=localhost';
	$user='root';
	$password='';
	$connex=new pdo($dsn,$user,$password);
	$sql='insert into nvllinstallation(Ref_ticket) values(?)';
	$rows=$connex->prepare($sql);
	$rows->bindParam(1,$RefTicket);
											
	$RefTicket=$_POST['Referenceticket'];
											
	$rows->execute(); 
}

if(isset($_POST['valider']))
{
	inserer();
}
je veut que le name dans le $_POST ($_POST['name']) soit dynamique,mais je n'ai trouvé aucune solution! :?
Pouvez vous me venir en aide?? :)

Mammouth du PHP | 737 Messages

17 nov. 2015, 14:55

Salut,

J'ai pas tout compris...Tu peux reformuler stp merci ?

Mega
;)
Dyslexics are teople poo

Mammouth du PHP | 571 Messages

17 nov. 2015, 15:19

tu veux peut être insérer une référence du ticket dans ta table, tu peux procéder ainsi:
function inserer( $ref_du_ticket )
{
  $dsn='mysql:dbname=baseadsl; host=localhost';
  $user='root';
  $password='';
  $connex=new pdo($dsn,$user,$password);
  $sql='insert into nvllinstallation(Ref_ticket) values(?)';
  $rows=$connex->prepare($sql);
  $rows->bindParam(1,$ref_du_ticket);
                                            
return  $rows->execute(); 
}

//le formulaire a été soumis et la référence du ticket a été renseignée : on insère cette refèrence
if(isset($_POST['valider']) && !empty($_POST['Referenceticket']) )
{
//on passe en paramètre de la fonction inserer() la ref du ticket
$insertionOK =  inserer($_POST['Referenceticket']);
if( $insertionOK === TRUE )
  echo "la référence  {$_POST['Referenceticket']} a bien été insérer dans la table";
else
 echo "Impossible d'insérer la ref";
}

Eléphanteau du PHP | 16 Messages

17 nov. 2015, 16:01


J'ai pas tout compris...Tu peux reformuler stp merci ?

Mega
;)
mon problème est :
Premièrement : il y a $_POST['Referenceticket'] et où Referenceticket peut être modifier car ce nom est stocker dans ma BDD et peut être modifier à tout moment....je veux ce nom soit dynamique selon la modification apporter au BDD, j'ai déjà toute essayer mais pas de succès.
Deuxièmement : si il y a plusieurs champ à récupérer,comment puis je faire cela??? :?: :cry:

Mammouth du PHP | 2278 Messages

18 nov. 2015, 14:09

Si je comprends bien, il y a
1 un formulaire d'où provient le $_POST['Referenceticket']
dans ce formulaire, il y a, je suppose des trucs du genre:
consultation de la BDD pour y trouver la valeur de Référenceticket
<input type = 'text' name = 'Referenceticket' value = '$Referenceticket' />
2 et le code qui nous est montré.

Chaque fois qu'on va repasser dans le formulaire, la BDD sera consultée et le Référenceticket sera actualisé...
Pour plusieurs champs il suffirait de retourner un tableau (sérialisé ou nom)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

18 nov. 2015, 14:18

Bonjour,
foreach ($_POST as $nom => $valeur) {...}
Tu disposes ainsi dans la boucle du nom et de la valeur. Je ne sais pas si ca répond à ta question.

Eléphanteau du PHP | 16 Messages

18 nov. 2015, 14:56

Si je comprends bien, il y a
1 un formulaire d'où provient le $_POST['Referenceticket']
dans ce formulaire, il y a, je suppose des trucs du genre:
consultation de la BDD pour y trouver la valeur de Référenceticket
<input type = 'text' name = 'Referenceticket' value = '$Referenceticket' />
2 et le code qui nous est montré.

Chaque fois qu'on va repasser dans le formulaire, la BDD sera consultée et le Référenceticket sera actualisé...
Pour plusieurs champs il suffirait de retourner un tableau (sérialisé ou nom)
à vrai dire si une valeur est passer dans l'input,j'aimerais actualisé le mot en rouge $_POST['Referenceticket'] si elle été modifié ou non car c'est le name de l'input et ce name peut être modifier à tout moment.
Bonjour,
foreach ($_POST as $nom => $valeur) {...}
Tu disposes ainsi dans la boucle du nom et de la valeur. Je ne sais pas si ca répond à ta question.

j'ai pas toute à fait compris Mazarini :priere: ,est ce que tu peut m'éclairer un peut plus

ViPHP
ViPHP | 2577 Messages

18 nov. 2015, 16:42

Pour chaque élément du tableau $_POST, le code dans la boucle sera exécuté avec $nom et $valeur renseigné.
Par exemple si tu as un tableau ($correspondance) qui permet la conversion 'Referenceticket modifier' => 'Referenceticket' ainsi que tout les autres tu pourrais faire :
foreach ($_POST as $nom => $valeur) {
   $ancienNom = $correspondance[$nom];
   $tableAncienIndice[$ancienNom] = $valeur;   
}
Ainsi tu aurais un nouveau tableau avec les bons indices.
Si c'est pour faire une mise à jour d'une table, il te faut obligatoirement une correspondance pour savoir dans quelle colonne mettre la donnée.

Remarque, si c'est un formulaire qui sert à faire une lettre et que tu ignores quelles sont les variables :
$lettre = 'Bonjour {nom} {prenom} bla bla bla';
foreach ($_POST as $nom => $valeur) {
   $lettre = str_replace($lettre,'{'.$nom.'}',$valeur);
}