Passage d'un array associatif vers un indexé
Résolu
Fallentree
Messages postés
2309
Date d'inscription
Statut
Membre
Dernière intervention
-
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
La valeur $_Post de mon <form> est du type array associatif.
On me propose une réindexaion du tableau :
$tab_final = array_values($tab_init); // Réindexation du tableau
Ainsi $tab_final[$i] existera.
En plus de cela, je voudrais récupérer le name des indexes.
Comment faire pour récupérer les champs du tableau, comme $_Get[$i]->name?
Faudrait il transformer le formulaire pour revevoir un $_Get au lieu d un $_Post?
Dans mon cas, cela n'est pas possible, $_Get est déja valuèe par l'appel de ma page .php .
Je vous demande cela afin de pouvoir finaliser une requête SQL.
Merki, zep baune nuité...
La valeur $_Post de mon <form> est du type array associatif.
On me propose une réindexaion du tableau :
$tab_final = array_values($tab_init); // Réindexation du tableau
Ainsi $tab_final[$i] existera.
En plus de cela, je voudrais récupérer le name des indexes.
Comment faire pour récupérer les champs du tableau, comme $_Get[$i]->name?
Faudrait il transformer le formulaire pour revevoir un $_Get au lieu d un $_Post?
Dans mon cas, cela n'est pas possible, $_Get est déja valuèe par l'appel de ma page .php .
Je vous demande cela afin de pouvoir finaliser une requête SQL.
Merki, zep baune nuité...
A voir également:
- Passage d'un array associatif vers un indexé
- Passage qwerty azerty - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Vers quelle adresse web renvoie ce lien - Guide
- Test passage windows 11 - Guide
- Passage à windows 11 gratuit - Guide
5 réponses
Donc 2 tableaux :
- le premier avec les valeurs
- le deuxième avec les champs "indices"
C'est ça??
$rox1=array_keys($_POST);
$rox2=array_values($_POST);
for ($i=0;$i< (count($Rox1)-1);$i++)
{
if ($i==0)
$Sqli= stripslashes($Rox1[$i])."='".stripslashes($Rox2[$i])."'";
else
$Sqli= $Sqli.",".stripslashes($Rox1[$i])."='".stripslashes($Rox2[$i])."'";
}
Merci
- le premier avec les valeurs
- le deuxième avec les champs "indices"
C'est ça??
$rox1=array_keys($_POST);
$rox2=array_values($_POST);
for ($i=0;$i< (count($Rox1)-1);$i++)
{
if ($i==0)
$Sqli= stripslashes($Rox1[$i])."='".stripslashes($Rox2[$i])."'";
else
$Sqli= $Sqli.",".stripslashes($Rox1[$i])."='".stripslashes($Rox2[$i])."'";
}
Merci
ça marche sans doute, mais c'est une très très mauvaise manière d'utiliser les tableaux associatifs, ils sont faits pour simplifier la vie, mais tel que tu les utilises tu te la compliques !
$Sqli="";
foreach ($_POST as $key=>$value) $Sqli.= stripslashes($key)."='".stripslashes($value)."',";
if (strlen($Sqli)) $Sqli=substr($Sqli,0,-1); // enlève la , à la fin
D'autre part c'est en général très très dangereux de faire une boucle sur toutes les valeurs d'un tableau venant de l'extérieur comme $_POST. Un petit malin peut ainsi modifier des champs que tu n'avais pas prévus. Il vaut mieux (toujours en général) faire toi-même la liste des variables à prendre en compte.
$Sqli="";
foreach ($_POST as $key=>$value) $Sqli.= stripslashes($key)."='".stripslashes($value)."',";
if (strlen($Sqli)) $Sqli=substr($Sqli,0,-1); // enlève la , à la fin
D'autre part c'est en général très très dangereux de faire une boucle sur toutes les valeurs d'un tableau venant de l'extérieur comme $_POST. Un petit malin peut ainsi modifier des champs que tu n'avais pas prévus. Il vaut mieux (toujours en général) faire toi-même la liste des variables à prendre en compte.
Yep! but an error/Warning :
Warning: mysql_fieldflags(): supplied argument is not a valid MySQL result resource in C:\wamp\www\.php on line
Que sygnificados ?
Le test du code tout court ne revoie pas de warning ...
<?php
$serveur = "localhost";
$user= "root";
$passwd = "";
$bdd = "photo";
$connex = mysqli_connect($serveur, $user, $passwd, $bdd);
$sql="SHOW COLUMNS FROM user";
Aff_SQL($sql,$connex);
Aff_SQLhere($sql,$connex);
mysqli_close($connex);
?>
Warning: mysql_fieldflags(): supplied argument is not a valid MySQL result resource in C:\wamp\www\.php on line
Que sygnificados ?
Le test du code tout court ne revoie pas de warning ...
<?php
$serveur = "localhost";
$user= "root";
$passwd = "";
$bdd = "photo";
$connex = mysqli_connect($serveur, $user, $passwd, $bdd);
$sql="SHOW COLUMNS FROM user";
Aff_SQL($sql,$connex);
Aff_SQLhere($sql,$connex);
mysqli_close($connex);
?>
Cette fonction sortie du programme principale ne renvoie de warning.
Elle renvoie un warning correspondant à la ligne de l'appel: $flags = mysql_fieldflags($result, 0);
Cette fonction alias ne fonctionne pas... Et, elle était encore présente dans le code source...
Elle avait pour vocation d'afficher les Primary Key autrement que par show...
Pardon, c'était une erreure de ma part. Merci pour votre lecture.
D'autre part, je recherche éventuellement un booktain sur le SQL.
Editeur: Collection PerfectMicro, Campuspress , ENI, Eyrolles , Dunod , Informatique Professionnelle ...
Faut-il qu'il traite du SQL ou de MySQL ou d'APACHE?
Auriez vous une suggestion à ce sujet ?
https://www.chapitre.com/search/Default.aspx?themeId=5475
Merci d'avance.
Elle renvoie un warning correspondant à la ligne de l'appel: $flags = mysql_fieldflags($result, 0);
Cette fonction alias ne fonctionne pas... Et, elle était encore présente dans le code source...
Elle avait pour vocation d'afficher les Primary Key autrement que par show...
Pardon, c'était une erreure de ma part. Merci pour votre lecture.
D'autre part, je recherche éventuellement un booktain sur le SQL.
Editeur: Collection PerfectMicro, Campuspress , ENI, Eyrolles , Dunod , Informatique Professionnelle ...
Faut-il qu'il traite du SQL ou de MySQL ou d'APACHE?
Auriez vous une suggestion à ce sujet ?
https://www.chapitre.com/search/Default.aspx?themeId=5475
Merci d'avance.
c'est vrai que c'est bien pratique...
je souligne le fait de la possible manipulation du Post ... Mais pourquoi faire ???
D'autre part, mon idée serait d'éviter de manipuler l'index (clef primaire) lors de l'implémentation de la requête SQL. En fait l'Update à fonctionner une fois sans doute lorsque la requête fut privée de sa clef ...
Mais, je ne sais pas la retrouver de façon informelle dans la table.
Il semble que mysql_fieldflags(,, primary_key"); pourait convenir mais l'aide sqli ne l'incorpore pas ...
Merci d'avance.
je souligne le fait de la possible manipulation du Post ... Mais pourquoi faire ???
D'autre part, mon idée serait d'éviter de manipuler l'index (clef primaire) lors de l'implémentation de la requête SQL. En fait l'Update à fonctionner une fois sans doute lorsque la requête fut privée de sa clef ...
Mais, je ne sais pas la retrouver de façon informelle dans la table.
Il semble que mysql_fieldflags(,, primary_key"); pourait convenir mais l'aide sqli ne l'incorpore pas ...
Merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
man est l'équivalent de l'extension /? après les commande DOS .
exple: man show <=> show /?
Le résultat serait le contenu de l'aide http://www.ens.math-info.univ-paris5.fr/mysql/show-database-info.html .
Dans une simple fenêtre au lieu d'une lecture de la racine http://www.ens.math-info.univ-paris5.fr/mysql
où il y a 50 références...
Ce serait une idée ça ... Genre Google Toolbar pour developpeur ...
A suivre...
exple: man show <=> show /?
Le résultat serait le contenu de l'aide http://www.ens.math-info.univ-paris5.fr/mysql/show-database-info.html .
Dans une simple fenêtre au lieu d'une lecture de la racine http://www.ens.math-info.univ-paris5.fr/mysql
où il y a 50 références...
Ce serait une idée ça ... Genre Google Toolbar pour developpeur ...
A suivre...