10345 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,
j'ai le code suivant:
$firmenname="NameF";
$firmenname =$firmenname. "::";
$maj = fopen("sauv.txt","r+"); // On ouvre le fichier en lecture/écriture
fseek($maj,0); // On se place en début de fichier
fputs($maj,$firmenname);
fclose($maj);

S'il vous plait je veux savoir pourquoi le résultat dans le fichier texte me parait comme ça:
::meF::

C'est à dire il ya effacement des deux premiers lettres du nom "NameF"
(je vais vous expliquer mon objectif: je veux mettre la variable $firmenname dans le fichier 'sauv.txt' en effacant le contenue de fichier avant l'opération de sauvegarde: j'ai essayé avec "$maj = fopen("sauv.txt","w+"); mais quand j'exécute cette instruction la variable $firmenname ainsi que tous les variables se vident. C'est pour cette raison je vais travailler avec $maj = fopen("sauv.txt","r+") el mettant des séparateur entre les valeurs pour sélectionner celle souhaitée.
Merci Smiley smile
Salut

Et donc si tu enlèves cette ligne $firmenname =$firmenname. "::"; tu as bien "NameF" dans ton fichier ?
Cela doit venir d'ailleurs, car si je prend ton code tel quel, pour moi, ça fonctionne parfaitement.
Du coup, utilise des var_dump :

$firmenname="NameF";
$firmenname =$firmenname. "::";
var_dump($firmenname);
$maj = fopen("sauv.txt","r+"); // On ouvre le fichier en lecture/écriture
var_dump($firmenname);
fseek($maj,0); // On se place en début de fichier
var_dump($firmenname);
fputs($maj,$firmenname);
var_dump($firmenname);
fclose($maj);

Modifié par JENCAL (11 Feb 2019 - 12:01)
J'ai essayé de récupérer la longueur de $firmenname sans $firmenname =$firmenname. "::"; et l'envoyer au fichier il m'affiche 0. Il me géne ce programme là Smiley lol
voila le code :
$long=strlen($firmenname);
fputs($maj,$firmenname);
fputs($maj,$long);
le résultrat est :
0ameF
C'est à dire il éfface le premier lettre pour afficher la taille qui est zéro
JENCAL, voila le code :
<?php
session_start();
require 'pgs/class.php';
$Class= new Insertion();
require 'pgs/connexion.php';

if(isset($_POST) == true){
    //generate unique file name
    $fileName = basename($_FILES["file"]["name"]);
    //file upload path
$firmenname=$_POST['idd'];
$firmenname= str_replace(" ", "_", $firmenname);
$long=strlen($firmenname);

$maj = fopen("sauv.txt","r+"); // On ouvre le fichier en lecture/écriture
fseek($maj,0); // On se place en début de fichier
fputs($maj,$long); 
fputs($maj,$firmenname);
$targetDir = "upload/vollmacht/".$firmenname."/";
  //allow certain file formats

    $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);
    $allowTypes = array('pdf','png','jpg','jpeg');
    if(in_array($fileType, $allowTypes)){
          if (file_exists($targetFilePath)) {
              $response['status'] = 'exist';

             }
          else{
        //***********upload file to server
        if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
            //insert file data into the database if needed
            //........
            $response['status'] = 'ok';
        }
else{
            $response['status'] = 'err';
       }
       //*****************************
       }

    }else{
        $response['status'] = 'type_err';
    }
    //render response data in JSON format
    echo json_encode($response);
}
?>

j'ai essayé var_dump($firmenname), il m'affiche string(0) malgré que la chaine s'affiche dans mon fichier .txt.
Noter bien que ce code marche bien si j'ai récupéré idd en url (j'ai testé ca dans une autre page php puisque j'ai passé une variable php en url) mais pour ce cas j'ai qu'une variable javascript (est ce que je peux le passer en url )
La question généralisé: Comment on passe une variable javascrip en url Smiley smile Smiley confused car je pense que ajax me cause tous ces problème Smiley decu
Modifié par developeurdusamedi (11 Feb 2019 - 13:33)
$firmenname=$_POST['idd'];
$firmenname= str_replace(" ", "_", $firmenname);
$long=strlen($firmenname);

var_dump($firmenname)

Si le var_dump te renvoie 0 c'est que ta variable est vide. Donc JE PENSE que ton fichier est ancien et écrase ce qu'il y a déjà (probale).

J'imagine que dans ton fichier y'avait déjà "meF::" et qu'avec ta concaténation entre ... rien et ."::" il n'y a du coup que "::" qui s'inscrit dans le fichier (en position 0)

donc ::meF::.

Efface le contenue de ton fichier, et tu verras que t'aura rien du tout.

Il faut commencer par comprendre POURQUOI il n'y a rien dans ta variable. Le problème n'est pas ton fputs...
Une autre façon pour m'aider, est ce que tu sais pourquoi si j'écris comme ca (pour écraser l'ancien valeur avant de sauvegarder ma variable dans le fichier )
$maj = fopen("sauv.txt","w+"); // On ouvre le fichier en lecture/écriture
fseek($maj,0); // On se place en début de fichier
fputs($maj,$firmenname);  

le contenue de ma variable $firmenname se vide Smiley bawling Smiley bawling
ta variable $firmenname ne doit pas être remplie c'est tout. elle est surment vide depuis le début.
Si tu remplace
fputs($maj,$firmenname);
par
fputs($maj,"NAME");

Tu auras bien "NAME" en position 0 de ton fichier.