Page 1 sur 1

une variable que fputs ne veut pas envoyer

Posté : 15 févr. 2007, 20:28
par Davee
Bonjour
J'ai volontaire laissé une bonne partie du code pour bien voir ce que j'ai voulu faire. C'est la honte mais c'est si vite passé.

J'explique:
j'ai deux chaînes $list et $read (deux bonne copines :) hi)
une que que je récupère par un formulaire,
et l'autre dans un fichier texte.

Avec Array_diff je les compare et ressort les élément qui manque de l'une pour les retourner dans une variable $résult,
je veux par la suite inscrire le résultat dans le fichier txt.

tout ceci pour ajouter au fichier texte les élément du formulaire sans qu'il y en aie en double.

Sauf que la réponse est la suivante.
Notice: Array to string conversion in c:\program files\easyphp1-8\www\sitephoto\incoptiontext.php on line 30
<?php
//____________________________________________
$listsup=$_POST["listsup"];

$fichier= "menuOptionText.txt";
$opentable = fopen($fichier, "a+");
$read= fread ($opentable, filesize($fichier));

$expread=explode (',',$read);
$explist=explode (',',$listsup);

  $result = array_diff ($explist,$expread);
  print_r($expread);
  echo'<br>';
  print_r($explist);
  echo'<br>';
  print_r($result);

 fputs( $opentable,$result);
fclose($opentable);
?>
Quelqu'un peut-il me sortir de là
merci beaucoup d'avance.

David.

Posté : 15 févr. 2007, 22:32
par Truc
Salut,

Qu'est ce qui te fait dire que c'est fputs() qui ne fait pas son travail ?
ca serait bien de donner la ligne qui va avec le message d'erreur :-k

Sinon regarde le type de retour de la fonction fread() et celui de file() :wink:

Posté : 15 févr. 2007, 22:54
par Davee
Salut,

Qu'est ce qui te fait dire que c'est fputs() qui ne fait pas son travail ?
ca serait bien de donner la ligne qui va avec le message d'erreur :-k
Ben en fait le numéro de ligne de l'erreur que j'ai donné plus haut correspond à la ligne fputs, mais en fait, c'est peut-être les variables qui vont pas, je me demande s'il faudrait pas que je passe par les expressions régulière (même si je sais pas du tout comment faire pour l'instant)
ou utiliser une fonction qui transforme les donnée tableau en chaine decaractère toute simple. mais je sais pas si ça existe.
en fait je sais pas grand chose.
Sinon regarde le type de retour de la fonction fread() et celui de file() :wink:
fread lis les données en binaire et file renvoie tout dans un tableau.
...
c'est dur la vie.
...
je vais voir du coté de ces fonctions, si je trouve quelque chose.
David.

Posté : 15 févr. 2007, 23:47
par Davee
Glory holy!!!!
comme dirais ioda.
trouvée la formule j'ai. bête ai-je été!
  foreach ($result as $num => $val){
  $rslt= $val.',';
 fputs( $opentable,$rslt);
avec foreach en fait je distribue la valeur que je veux. m'en fou de l'autre...m'en fou!

array_diff compare les tableaux et resssort les éléments qu'il ne trouve pas dans le premier.
le résultat est traité en boucle par foreach dont j'utilise qu'une seul valeur, je laisse tomber l'index (on m'a dit qu'il fallait jamais montrer du doigt).

index que j'ai nommée par la variable $num, si jai bien compris.

David.

Posté : 15 févr. 2007, 23:57
par Truc
index que j'ai nommée par la variable $num, si jai bien compris.
c'est ça....

encore une fonction ?
regarde implode()....... elle devrait faire ce que tu fait avec la boucle foreach()

Posté : 16 févr. 2007, 00:04
par Davee
Merci
oui, j'ai regardé et d'ailleurs j'ai changé le code. à vrai dire je me suis tâté entre implode et join :) c'est bon d'avoir le choix.

mais, J'ai mis résolu un peu vite car quand il enregistre les variables dans le fichier texte il me met un espace au bout. il faut donc que je touve un moyen de l'enlever ou de placer la virgule avant.
la virgule est importante c'est mon élément séparateur.

Donc je cherche encore?
Mais si vous avez des idées alors c'est en vous remerciant d'avance que je les acepterais volontier.

David.

Posté : 16 févr. 2007, 00:08
par Truc
justement tu ne devrais pas avoir le même souci avec implode()
$tab = array('elem_1','elem_2','elem_3');
$chaine = implode(',',$atb);
echo $chaine; // affichera elem_1,elem_2,elem_3
pour enlever des espaces trim()