Passage d'un array associatif vers un indexé

Résolu/Fermé
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
- 26 févr. 2009 à 01:01
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
- 27 févr. 2009 à 17:29
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é...

5 réponses

Bonjour

$names_final = array_keys($tab_init);
0
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207
26 févr. 2009 à 01:13
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
0
ç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.
0
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207
27 févr. 2009 à 12:04
Merci,
Y a t'il la possibilité de rendre lisible le type des Champs des tables de données afin de controler le format de saisie lors du retour $_Post?
0
toto > Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019

27 févr. 2009 à 14:24
Je ne sais pas ce que tu appelles "rendre lisible" mais tu peux connaître les types des champs par plusieurs moyens : la fonction PHP mysql_field_type et la requete mysql SHOW COLUMNS FROM `matable` par exemple
0
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207 > toto
27 févr. 2009 à 14:48
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);
?>
0
toto > Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019

27 févr. 2009 à 15:13
Je ne peux pas te dire grand chose sur cette erreur avec la fonction mysql_fieldflags, il n'y a pas d'appel à cette fontion dans le code que tu montres ! Regarde le nom de fichier et le numéro de ligne du message d'erreur pour voir où le problème se situe
0
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207 > toto
27 févr. 2009 à 16:26
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.
0
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207
26 févr. 2009 à 16:25
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fallentree
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
207
27 févr. 2009 à 17:29
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...
0