Utilisation fonction recherche dans une chaine de caractere

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Utilisation fonction recherche dans une chaine de caractere

par dread » 03 déc. 2007, 10:53

Merci pour vos réponses.
Je vais essayer tout ca.
Bonne continuation à tout le monde.

par Aureusms » 02 déc. 2007, 22:52

Et si tu fais :
if (in_array("2",$_POST['type'])) { ...
}
Comme cela tu reste en format tableau.

par dread » 01 déc. 2007, 13:34

Désolé si je ne suis pas clair.

Voici le code contenant les checbox listées dynamiquement:
<?php while($famille=mysql_fetch_assoc($rs_famille)) { 
			
	$query_creation = "SELECT * FROM tbl_creation WHERE famille_creation='".$famille['id_famille']."'";
	$rs_creation = mysql_query($query_creation);		
			
	echo '<tr>
	<td align="right"><b>'.$famille['nom_famille'].'</b></td><td>';
	while($creation=mysql_fetch_assoc($rs_creation)) { echo
	$creation['nom_creation'].' <input type="checkbox" name="type[]" id="type[]" value="'.$creation['id_creation'].'"'; if(strstr($row_rs_client['famille_client'],$creation['id_creation'])) { echo 'checked="checked"';} echo ' /> | ';} echo '</td>
	</tr> ';
	} ?>
Comme je le disais, la valeur de mes checkbox, envoyée en POST par mon formulaire, peut être un nombre compris entre 1 et 19.
Je fais un implode des valeurs récupérées comme suit:
implode(',',$_POST['type'])
Ce qui permet de récupérer quelque chose comme ca: 1,5,14,18 par exemple dans un seul champs de ma bdd.

Ensuite, en fonction des cases cochées, je crée autant d'enregistrements que de valeurs entre ",". Pour cela, j'ai besoin de vérifier la présence de ces valeurs pour creer les bons enregistrements.
Dans mon exemple, creer un enregistrement pour la valeur 1, un autre pour la valeur 5 puis 14 puis 18.

C'est pour cela que voulais utiliser la fonction strstr() pour vérifier cette présence:
if(strstr(implode(',',$_POST['type']),"2")) //si on trouve "2" dans la chaine alors creer un enregistrement
Seulement j'avais pas pensé au nombre composé de deux chiffres.
C'est pour cela qu'il me faudrait une syntaxe qui dise: si tu trouve exactement le nombre 14 alors ...
ou encore si tu trouves exactement le nombre 1 alors ...

Voila!! j'espere avoir été plus clair mais je suis conscient de ne pas utiliser la bonne technique.
Peut être devrais-je affecter des lettres comme valeur à mes checkbox?

par Aureusms » 01 déc. 2007, 13:26

Ne fais pas l'implode() mais utilise in_array() plutôt.

par zeus » 01 déc. 2007, 13:11

Donne nous le code de ton formulaire et le code PHP de récupération.

J'avoue ne pas avoir compris ton explication

Utilisation fonction recherche dans une chaine de caractere

par dread » 01 déc. 2007, 13:02

Bonjour à tous,

Je rencontre des difficultés à utiliser la fonction strstr() avec des nombres composés de deux chiffres.

En effet, j'ai un formulaire composé de cases à cocher dont la valeur est un nombre pouvant aller de 1 à 19.

Je récupère les valeurs cochées dans un champs unique en les séparant par une "," avec la fonction implode().

Ensuite pour creer des enregistrements, je fait une recherche avec strstr() sur ce que j'obtient.

le problème, c'est que si une case à cocher à la valeur "14" et que je fais une recherche sur cette valeur, il trouve bien le "14" mais m'incorpore aussi ceux ayant pour valeur "1" et "4".

Comment limiter ma recherche au nombre "14" et pas au chiffres le composant.

En espérant avoir été assez précis et clair et sur mon souci, merci par avance.