insertion en boucle

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 : insertion en boucle

Re: insertion en boucle

par xzena » 18 oct. 2011, 13:04

Ok.merci

Re: insertion en boucle

par moogli » 18 oct. 2011, 11:24

non, ça c'est un problème d'encodage XD

regarde dans les tutos y a une explication.


@+

Re: insertion en boucle

par xzena » 17 oct. 2011, 14:28

hmmm donc c'est pour cela dans ma BD certains donnés comme les accents sont transformé en des caractères de genre @..
alors faut que je remplace le addelashes par mysql_real_escape_string ?
Merci à vous .

Re: insertion en boucle

par moogli » 15 oct. 2011, 19:41

mysql_real_escape_string
addslashes

la différence est indiquée dans la doc.

si tu ne veux pas lire, en gros l'un est fait pour l'autre sert a ajouter de \ devant certainnes valeur mais forcément toute celle qui peuvent poser problème en SQL !


@+

Re: insertion en boucle

par xzena » 13 oct. 2011, 17:16

c'est quoi la différence svp ? parce que dans tout mon projet j'ai utilisé addslashes ??

Re: insertion en boucle

par stealth35 » 13 oct. 2011, 16:12

c'est pas addslashes mais mysql_real_escape_string qu'il faut faire

Re: insertion en boucle

par xzena » 13 oct. 2011, 15:20

enfin!! :D voilà il faut faire ça : addslashes($m3) et non '.addslashes($m3[$i]).'"
si jamais quelqu’un a le même problème il peut suivre mes étapes de code..
Merci.

Re: insertion en boucle

par xzena » 13 oct. 2011, 14:53

voilà c'est réglé!mais je sais pas pourquoi il m'enregistre que le 1er chiffre de chaque code par exemple le code 123 il prends que le 1 :cry:
voilà mon code please si quelqu'un peut en jeter un coup d’œil pour voir pourquoi j'arrive pas à enregistrer toute la 3éme partie d'un champ sélectionné dans mon table : :(

if(isset($_POST['submit']))
	{
   if (!empty($_POST['cyc_visite'])  && !empty($_POST['nomm']) &&   !empty($_POST['liste']) && !empty($_POST['nom'])) {

	$nomM="";
		foreach($_POST['nom'] as $v)
		   $nomM.=$v."/";
		$code=explode('(',$_POST['nomm']);
		$code1=$code[1];
		$code2=explode(')',$code1);
		$code3=trim($code2[0]);

// pour compter le NB d'element slectionné				
		$nom = $_POST['nom'];
		$nom_text = implode(',',$nom);
	        $nb=sizeof($nom);
	        $i=0;
	echo "Nombre des elements selectione  : $nb <br> <br>";
	 //pour séparer le champ $nom afin d'en extraire et enregistrer juste sa 3eme partie cad: le chiffre entre ()
	for($i=0;$i<$nb;$i++){
	$m = explode ('(' ,$nom[$i]);
	$m1 = $m[1] ;
	$m2 = explode (')' , $m1  );
	$m3 = trim($m2[0]);
    echo $m3 ."</br>";
	 print_r($m3[$i])  ."</br>";


//$nom[$i]: c'est le tableau où je stocke les éléments selectionnés pour les enregistrer un par un après via une boucle 
	echo "-----> $nom[$i] <br> ";	
	
	//insert
	$sql='INSERT INTO aff(liste,cyc_visite,datetime,region,ville,secteur,nomm,nom,code,pharam_id) VALUES("'.addslashes($_POST['liste']).'","'.addslashes($_POST['cyc_visite']).'","'.addslashes($_POST['datetime']).'","'.addslashes($_POST['region']).'","'.addslashes($_POST['ville']).'","'.addslashes($_POST['secteur']).'","'.addslashes($_POST['nomm']).'","'.addslashes($nom[$i]).'","'.addslashes($code3).'","'.addslashes($m3[0]).'")';
		
	$rs = mysql_query($sql) or die("requete incorecte");
	}
	echo "Insertion dans la base de donnees est ok	<br> ";	
			
        if(isset($qer)){
            echo '<h2 style="color:green;font-size:8" >La Visite a ete Bien Enregistree</h2>';
        }else{
            echo mysql_error();
        }

    }else {
        
        echo '<h3 class="jaw">Les champs * sont obligatoires </h3>';
    
    }
}

?>

Re: insertion en boucle

par xzena » 12 oct. 2011, 14:30

merci moogli pour ta réponse,j'ai essayé d'ajouter foreach mais il me donne cet erreur:
Warning: Invalid argument supplied for foreach() in C:\wamp\www\fishier\fichier1.php on line 141
Insertion dans la base de données est ok
ligne : foreach( $nom[$i] as $i) {
le $nom[$i] c'mon tableau déja declaré

encore merci pour votre aide apprécié et toutes mes excusés.

Re: insertion en boucle

par moogli » 10 oct. 2011, 21:47

salut,

Utilise une boucle foreach pour parcourir le tableau et faire la requete à chaque fois

en gros
<?php
foreach( $tablo as $ligne) {
// le explode
// la erquete sql
}
?>

Re: insertion en boucle

par xzena » 10 oct. 2011, 19:01

voilà il m'affiche qu'un seul id et non le tableau! :(
et voilà qui empêche les autres id à se récupérer:
Notice: Uninitialized string offset: 1
Notice: Uninitialized string offset: 2
..alors j'ai cherché beaucoup sur ce type d'erreur et j'ai pas vraiment trouvé une solution pour mon cas! :(

Re: insertion en boucle

par xTG » 10 oct. 2011, 18:37

On voit déjà deux erreurs d'index, donc il y a fort à parier que ton array n'est pas comme tu l'attends.
En cas de valeur manquante il est donc normal de se retrouver avec un id égal à 0.

Utilises la fonction print_r() pour afficher le contenu de ton array.

Re: insertion en boucle

par xzena » 10 oct. 2011, 16:45

voilà ce qu'est s'affiche en cas d'insertion:
7Array7) Array-----> Nommedecin1 prenom (7)
2Array2) Array-----> Nommedecin2 prenom (2)
1Array1) Array-----> Nommedecin3 prenom (1)

Notice: Uninitialized string offset: 1 in C:\wamp\www\site\fishier\cycle.php on line 176

Notice: Uninitialized string offset: 2 in C:\wamp\www\site\fishier\cycle.php on line 176
Insertion dans la base de donnees est ok .
la ligne 176:
$sql='INSERT INTO aff(liste,cyc_visite,datetime,region,ville,secteur,nomm,nom,code,pharam_id) VALUES("'.addslashes($_POST['liste']).'","'.addslashes($_POST['cyc_visite']).'","'.addslashes($_POST['datetime']).'","'.addslashes($_POST['region']).'","'.addslashes($_POST['ville']).'","'.addslashes($_POST['secteur']).'","'.addslashes($_POST['nomm']).'","'.addslashes($nom[$i]).'","'.addslashes($code3).'","'.addslashes($m3[$i]).'")';
Mon souci c'est que un seul et seul ID(dans cet exemple le num 1) qui s'enregistre dans le champ pharam_id et non TOUT les id(7,2) de tout les médecins entrés! m
j'espère seulement me dire comment faire pour que ma boucle enregistre l'id de chaque médecin enregsitrée?
MERCI A VOUS

Re: insertion en boucle

par xTG » 10 oct. 2011, 14:51

Tu fais un echo de $m3 j'en déduis donc que ce n'est pas un array.
Or tu l'utilises comme tel. Où est l'erreur ? Ta façon de l'afficher ou de l'utiliser ?

insertion en boucle

par xzena » 10 oct. 2011, 13:58

salut,
SVP je vous explique mon problème:
j'ai fait une boucle d'insert correcte ,après j'ai voulu qu'un champ 'médecin' je voulais le séparer pour enregistrer son id indépendamment dans un autre champ(déjà 'médecin' contient cette format: nom+prenom+(id))
alors j'ai utilisé la fonction explode comme ceci pour obtenir un var d'id que je vais insérer:
$m = explode ('(' ,$nom[$i]);
	$m1 = $m[1] ;
	$m2 = explode (')' , $m1  );
	$m3 = trim($m2[0]);
    echo $m3;//içi il m'affiche tout les id
code'insert:
for($i=0;$i<$nb;$i++){
	$sql='INSERT INTO aff(liste,cyc_visite,datetime,region,ville,secteur,nomm,nom,code,pharam_id) VALUES("'.addslashes($_POST['liste']).'","'.addslashes($_POST['cyc_visite']).'","'.addslashes($_POST['datetime']).'","'.addslashes($_POST['region']).'","'.addslashes($_POST['ville']).'","'.addslashes($_POST['secteur']).'","'.addslashes($_POST['nomm']).'","'.addslashes($nom[$i]).'","'.addslashes($code3).'","'.addslashes($m3[$i]).'")';
Et ça marché cad :si j'effectue une insert dans ma DB je trouve le champ médecin remplie ainsi que l'id ,mais le souci c'est qu'un seul ID qui s'enregistre et non l'id de tout les médecins enregistrés!
par exemple:
si j'enregistre 3 médeicns,voilà ce que je trouve dans la DB(le dernier id qui s’enregistre):
medecin1 : xxx id: 0
medecin2: yyy id:0
medeccin3: zzz id=1

je sais que c'est compliqué un petit peu mas prière si quelqu’un peut m'aider sera gentil