Calcul de "maxlength" pour <input> après requète SQL

cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007 - 17 févr. 2006 à 11:16
cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007 - 18 févr. 2006 à 15:05
Bonjour !

Je cherche à créer une fonction qui me permette d'insérer automatiquement le chiffre maxlength dans un input en fonction de la valeur retournée par une requete sql. (j'ai simplifié mes explications ici car en fait, je cherche à générer automatiquement un formulaire suite à une requete sql)

Explication :

1. j'effectue une requète en sql qui me retourne les propriété d'un champ.
exemple : varchar(150)
2. je mets cette valeur dans une variable $string
exemple : $string = 'varchar(150)';
3. j'essaie de créer une fonction qui me retourne uniquement les chiffres de la chaîne $string pour les affecter à maxlength (c'est là où je bloque)
exemple :
function maxLength ($string) {
$length = str_replace($rowlength, !is_int($rowlentgh), 'a');
// traitement sur la chaine
return $length;
}

4. j'insert maxlength dans ma balise suivant la valeur retournée
exemple : <?php echo ' ; ?>

Ceci est mon idée de départ, mais si vous avez une solution plus rapide à me proposer, elle est la bienvenue ! Merci d'avance à ceux qui prendront le temps de me lire et de m'aider,

PatX.

5 réponses

cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007
17 févr. 2006 à 11:19
PS : ne pas tenir compte de la ligne :

$length = str_replace($rowlength, !is_int($rowlentgh), 'a');

dans la fonction maxLength(), c'était juste un test pour moi ;)
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
17 févr. 2006 à 11:58
mysql_field_len(),
Retourne la longueur maximale du champ spécifié
0
thomvaill Messages postés 366 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 février 2007 2
17 févr. 2006 à 14:36
http://fr.php.net/manual/fr/function.mysql-field-len.php

Thomvaill
IRC : Thomas (irc.heliosnet.org:6667 #programmation)
0
cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007
17 févr. 2006 à 21:48
la fonction que vous m'avez indiqué (mysql_field_len, de même que mysql_fetch_lengths) retourne le nombre de caractères contenus pour un champ, par exemple, si dans le champ "titre_film" j'ai l'entrée "furtif", cela me retournera le nombre de caractères qui composent le mot "furtif", c'est à dire 6. En pratique :

$requete = "SELECT titre_film FROM films WHERE id='2' ";
$resultat = mysql_query ($requete);
$length = mysql_field_len($resultat)

me renverra après traitement un tableau dans lequel :
$length[0] vaudra 1 // id = 2, donc un seul caractère
$length[1] vaudra 6 // titre_film = furtif donc 6 lettres

dans mon cas, c'est le nombre maximal de caractères qui seront insérés dans ma base de données en fonction des types de champs : varchar(40), int(3) etc ... ce qui donne :

$requete = "SHOW COLUMNS FROM films WHERE id='2' ";

$resultat = mysql_query ($requete);

$length = mysql_field_len($resultat)



me renverra après traitement un tableau dans lequel :

$length[0] vaudra 12 // le nom du champ étant " id_interview ", donc 12 caractères

$length[1] vaudra 7 // le type étant " int(11) " donc 7 caractères

Problème : je ne veux pas récupérer 7 pour mon maxlength, puisqu'en fait, ce sont jusqu'à 11 caractères que je peux insérer : int(11). C'est la où ça bloque toujours, dans mon formulaire à remplir, le champ "titre du film" doit ressembler au final à

J'espère que j'ai été assez clair, merci encore pour votre dévouement !
0

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

Posez votre question
cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007
18 févr. 2006 à 15:05
à force de chercher je suis tombé sur les bons mots clés et voilà la solution postée par Ranouf :

http://phpcs.com/codes/CREER-FORMULAIRE-PARTIR-REQUETE-SQL_35400.aspx

enjoy
0