Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [PHP] » Fonction de decoupage
Login Mot de passe

2 visiteurs sur ce topic (0 membre(s), 2 invité(s) )


Auteur
Sujet : Fonction de decoupage
wTb
Vétéran
Membre # 7349

 Avatar du membre
Lieu : Paris

Messages :
5864 (1 par jour)


Score :

Message du 05-12-2006 @ 16:27   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,


J'ai un problème dans mon code et je n'arrive pas à trouver ce qui ne va pas... :o

Je recupere le contenu d'un textarea, ce sont des emails séparés par des ";", donc je decoupe chaque email en utilisant le caractere ";" comme separateur grâce à la fonction strtoken.

Voila mon code, jusque là ca marche rien de compliqué :


Code :


      if (isset($_POST['Submit']))
      {
         $tok = strtok($email,";");
         
         $i = 0;
         while ($tok !== false && $i < 200)
         {
            echo "Mot = $tok-
";
            $tok = strtok(";");
            
            echo "$i
";
            $i++;
         }
      exit ();
      }




Le contenu du textarea est dans $email. Je le decoupe et les echo m'affiche bien chaque mot decoupé.


Sauf que lorsque j'insère le code suivant pour rentrer chaque email dans ma bdd ca ne me prend jamais le premier mot... ca me crée une entrée vide :???:

Code :


            $sql = "INSERT INTO email VALUES('','$tok')";
            mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
            mysql_close();
         
            echo "<script language='Javascript'>window.location.replace('toto.php')</script>";




Ce code se trouve juste après $tok = strtok(";"); dans le while.


Si vous pouviez me donner un ptit coup de main ca ne serait pas de refus :)


Merci.
----------
"Il n'existe que deux choses infinies, l'univers et la bêtise humaine... mais pour l'univers, je n'ai pas de certitude absolue."
Albert Einstein

Q9550@3.4Ghz, Asus P5E, 8Go DDR2 OCZ Reaper, Asus GTX580 OC, SSD Samsung 840Evo + Raptor 150go + 4To.
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.73 par jour)


Score :

Message du 05-12-2006 @ 16:55   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Code :


$sql = "INSERT INTO email VALUES('','$tok' ) ;
mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error()) ;
mysql_close() ;



pourquoi tu ne donne pas le nom des champs à remplir par ta requête insert ?

EDIT : Soul, viens ici régler le probléme d'insertion de ton code dans le code contenu dans les balises code


[message édité le 05-12-2006 @ 16:56 Par chani]
----------
chani_tth sur PSN ;)
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2063 (0.34 par jour)




Message du 06-12-2006 @ 0:05   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

bon en fait ton probleme vient des cotes au niveau de l'image
Code :


('','$tok<b>'<</b>img src='images/smilies/wink.gif' alt=';)' title=';)'/>";

moi j'ecrirai plutot

('',"$tok\'images/smilies/wink.gif\' alt=\';)\' title=\';)\'/>");

enfin bon c'est peut etre pas tres clair mais c'est des imbrications de cote que vient le probleme :D

sinon tu peux aussi faire :

$valeur = $tok . '<img...';

puis

$sql = "INSERT INTO email VALUES('',addslashes($valeur));



@+ Fred

[message édité le 06-12-2006 @ 8:38 Par frednet]
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.73 par jour)


Score :

Message du 06-12-2006 @ 8:24   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Frednet, le code original de wtb est celui que j'ais repris dans mon message. les insertion d'images sont dues à un bug du forum... ;)
----------
chani_tth sur PSN ;)
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2063 (0.34 par jour)




Message du 06-12-2006 @ 8:42   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Oups... :D

dans ce cas je suis d'accord avec toi Chani, il faudrait preciser le nom des champs. Par ailleurs si on en croit le site www.php.net et bien strtok renvoie un segment de chaine. c'est donc une chaine qui est renvoyee et non pas un tableau...

Moi j'utiliserai explode() de la facon suivante :

Code :


$emails = "email1; email2; email3",

$t_emails = explode(';', $emails, 200);

foreach ($t_emails as email) {
unset($sql);

$sql = "INSERT INTO email( ' email ' ) VALUES( ' $email ' ) ;

mysql_query($sql) or die('Erreur SQL ! ' .$sql . ' ' .mysql_error()) ;
mysql_close() ;
}



Dans ce cas, pas besoin de gerer la limite des 200 emails car c'est la fonction explode qui s'en charge.

@+ Fred

[message édité le 06-12-2006 @ 8:50 Par frednet]
- Haut de page -
wTb
Vétéran
Membre # 7349

 Avatar du membre
Lieu : Paris

Messages :
5864 (1 par jour)


Score :

Message du 06-12-2006 @ 19:33   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Ah oui ca a l'air pas mal ca, je vais essayer.

Merci pour vos reponses.
----------
"Il n'existe que deux choses infinies, l'univers et la bêtise humaine... mais pour l'univers, je n'ai pas de certitude absolue."
Albert Einstein

Q9550@3.4Ghz, Asus P5E, 8Go DDR2 OCZ Reaper, Asus GTX580 OC, SSD Samsung 840Evo + Raptor 150go + 4To.
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.032 secondes