2016-07-25 3 views
0

J'ai cherché partout, mais rien de ce que je trouve ne semble aider à résoudre ce problème. J'ai un formulaire Web html (dans un document PHP) qui écrit des données dans un fichier CSV, et sous le formulaire est une table qui filtre les données CSV en fonction d'un mot clé. Je n'ai aucun problème avec mon code existant pour cette partie. Cependant, j'ai besoin d'une fonction de numérotation automatique qui attribue un numéro à chaque formulaire. J'ai besoin d'aide pour savoir par où commencer. Je suis encore relativement nouveau en codage, donc toute aide serait géniale. Modifier: Voici le code que j'utilise pour écrire mes données dans le fichier csv.Affectation du numéro automatique à l'entrée de formulaire HTML

if($_POST['formSubmit'] == "Submit") 
{ 
    $fs = fopen("fixturerequests.csv","a"); 
    fwrite($fs,$varFixNum . ", " . $varRequester . ", " . $varDept . ", " . $varSupervisor . ", " . $varDesc . ", " . $varParts . ", " . $varWC . ", " . $varAddinfo . ", " . $varDateReq . ", " . $varDateNeed . ", " .$varStatus . "\n"); 
    fclose($fs); 

    header("Location: successfullysubmitted.php"); 
    exit; 
} 

Tout guidage serait excellent. Je vous remercie.

+0

où est le code qui crée la forme Si chaque forme est une ligne dans un fichier csv tout ce que vous avez à faire est? compte combien de lignes le fichier csv a. –

+0

Bien sûr, si les lignes sont supprimées et que vous voulez que le nombre de formulaires agisse comme un ID et reste constant, vous devez juste assigner un autre champ dans votre csv comme 'form_id' et chaque fois que vous voulez ajouter un formulaire. enregistrement de la csv obtenir le form_id de cet enregistrement et ajouter 1 à it.It tout dépend de ce que vous voulez.Si vous donnez plus d'informations, nous serons en mesure de vous aider plus –

+0

@GeorgePant La deuxième suggestion que vous aviez semble la meilleure option - Tirer le numéro précédent et en ajouter un. C'est ce que j'ai commencé à essayer dans le code ci-dessus, mais comme je l'ai déjà mentionné, je suis relativement nouveau dans le domaine du codage. Oui, chaque réponse à une question sur le formulaire est une nouvelle ligne. Voulez-vous que je modifie ma réponse pour inclure ce code? Ou n'est-ce pas pertinent? –

Répondre

1

Vous pouvez utiliser cette fonction

function next_available_form_id(){ 

    $rows = file('fixturerequests.csv'); //put our csv file into an array 

    if(empty($rows)) return 1;   //if our csv is empty we start from 1 

    $data = str_getcsv(array_pop($rows)); //array_pop gets the last row 

    return $data[0]+1;   //we get first field and add 1 to it 
            //Just use the field where you store the form number 
            //e.g if you store the form number in the 
            //4th field replace $data[0] with $data[3] 

} 

Basé sur le code que vous avez fourni, vous pouvez utiliser la fonction que je fournis pour obtenir la prochaine form_id avant de le ranger dans le csv file.Just faire cette modification à votre code après ouvrir le fichier csv:

$fs = fopen("fixturerequests.csv","a"); 
$form_id=next_available_form_id(); //ADD THIS to get the next available id 

//And insert $form_id as the first field in your csv file 
fwrite($form_id,$fs,$varFixNum . ", " . $varRequester . ", " . $varDept . ", " . $varSupervisor . ", " . $varDesc . ", " . $varParts . ", " . $varWC . ", " . $varAddinfo . ", " . $varDateReq . ", " . $varDateNeed . ", " .$varStatus . "\n"); 

Avis: Bien sûr, depuis le csv, vous avez maintenant ne dispose pas des form_id comme le premier champ, vous devez soit créer votre fichier csv à partir de zéro ou ajouter des numéros de formulaire dans votre existant records.In l'exemple que j'utilise awk pour le faire:

awk '{printf "%d,%s\n", NR, $0}' < fixturerequests.csv 
+0

Cela a fonctionné parfaitement! Merci beaucoup pour votre aide avec ça! –

+0

Heureuse ma réponse t'a aidé –