2017-07-07 3 views
1

J'ai un script HTML contenant un formulaire, ce formulaire soumet une valeur Name à un script PHP. Dans ce script PHP, j'ouvre deux fichiers texte différents, le premier fichier est d'obtenir le numéro à l'intérieur, puis l'incrémenter de 1. L'autre fichier est d'ouvrir puis écrire le nouveau nombre incrémenté avec la valeur Nom de la publication. Le premier fichier dont seul le numéro commence à l'intérieur de "0" et c'est là que j'ai des problèmes. Lors de l'exécution du code, rien ne se passe, le formulaire est soumis parfaitement et le script PHP est appelé. Mais la seule valeur dans les deux fichiers texte différents est "0" dans les deux. Au lieu de cela, il devrait avoir "1" dans le fichier "amount.txt" et "Texte à apparaître: 1 Autre texte: Nom" dans le fichier "textContent.txt".Valeur d'incrémentation dans un fichier texte et écriture de texte dans un autre

Je ne suis pas tout à fait sûr d'où je me trompe, pour moi, il semble théoriquement correct.

Ci-dessous la partie PHP, qui est la partie qui ne fonctionne pas.

$nam = $_POST['Name']; 

$pastAmount = (int)file_get_contents('/user/site/amount.txt'); 
$fileOpen1 = '/user/site/amount.txt'; 
$newAmount = $pastAmount++; 
file_put_contents($fileOpen1, $newAmount); 

$fileOpen2 = '/user/site/textContent.txt'; 

$fileWrite2 = fopen($fileOpen2 , 'a'); 
$ordTxt = 'Text to appear: ' + $newAmount + 'Other text: ' + $nam; 
fwrite($fileWrite2, $ordTxt . PHP_EOL); 
fclose($fileWrite2); 
+0

est pas l'opérateur concaténer '' au lieu de '+'? --- $ ordTxt = 'Texte à afficher:' + $ newAmount + 'Autre texte:' + $ nam; – Khan

+0

@Khan Oui c'est, je viens de comprendre cela, mon erreur. Je vous remercie. – DevLiv

Répondre

1

Au lieu de:

$newAmount = $pastAmount++; 

Vous devez utiliser:

$newAmount = $pastAmount + 1; 

Parce que $ pastAmount ++ modifiera directement la valeur de $ pastAmount.

Alors, au lieu de

$ordTxt = 'Text to appear: ' + $newAmount + 'Other text: ' + $nam; 

Vous devez utiliser:

$ordTxt = 'Text to appear: '.$newAmount.' Other text: '.$nam; 

Parce que PHP nous utilisons le. pour la concaténation.

PHP Code:

<?php 
$nam = $_POST['Name']; 


// Read the value in the file amount 
$filename = "./amount.txt"; 
$file = fopen($filename, "r"); 
$pastAmount = fread($file, filesize($filename)); 
$newAmount = $pastAmount + 1; 
echo "Past amount: ".$pastAmount."-----New amount:".$newAmount; 
fclose($file); 

// Write the value in the file amount 
$file = fopen($filename, "w+"); 
fwrite($file, $newAmount); 
fclose($file); 


// Write your second file 
$fileOpen2 = './textContent.txt'; 
$fileWrite2 = fopen($fileOpen2 , 'w+ '); 
$ordTxt = 'Text to appear: '.$newAmount.' Other text: '.$nam; 
fwrite($fileWrite2, $ordTxt . PHP_EOL); 
fclose($fileWrite2); 
?> 
+1

je vous remercie beaucoup pour la réponse, il travaille maintenant comme je le voulais. – DevLiv

1

Tout d'abord, les erreurs dans votre code:

  1. $newAmount = $pastAmount++; => Cela affectera la valeur de $pastAmount puis incrémenter la valeur qui est pas ce que vous visez.
  2. $ordTxt = 'Text to appear: ' + $newAmount + 'Other text: ' + $nam; => Enchaînement en PHP est fait avec un . et non un +

code correct:

$nam = $_POST['Name']; 

$pastAmount = (int)file_get_contents('/user/site/amount.txt'); 
$fileOpen1 = '/user/site/amount.txt'; 
$newAmount = $pastAmount + 1; 
// or 
// $newAmount = ++$pastAmount; 

file_put_contents($fileOpen1, $newAmount); 

$fileOpen2 = '/user/site/textContent.txt'; 

$fileWrite2 = fopen($fileOpen2 , 'a'); 
$ordTxt = 'Text to appear: ' . $newAmount . 'Other text: ' . $nam; 
fwrite($fileWrite2, $ordTxt . PHP_EOL); 
fclose($fileWrite2); 
+0

Votre réponse est très appréciée, merci. – DevLiv