Exercice 10.4 Terminé

Consigne

Même question, mais cette fois le carnet est supposé être trié par ordre alphabétique. L’individu doit donc être inséré au bon endroit dans le fichier.

Afficher le fichier du carnet d'adresses

Pseudo code

formatData une FONCTION
firstname, name, tel, mail des CHAINES DE CARACTERES
i un ENTIER
users un TABLEAU

DEBUT
    FONCTION formatData(data, length = 20)
        RENVOYER strtolower( str_pad( data, length ) )
    FIN DE FONCTION

    ECRIRE "Entrez un nom"
    ECRIRE "Entrez un prénom"
    ECRIRE "Entrez un numéro de téléphone"
    ECRIRE "Entrez un email"

    LIRE firstname
    LIRE name
    LIRE tel
    LIRE mail

    concatenated = formatData(firstname)
    concatenated += formatData(name)
    concatenated += formatData(tel)
    concatenated += formatData(mail)
    concatenated += EOL

    OUVRIR "address.txt" sur 1 en LECTURE

    i = 0
    users = []

    TANT QUE non EOF, 1
        users[i] = LIRE 1
        i++
    FIN TANT QUE

    SI (!in_array($concatenated, $users)) ALORS
        array_push(users, concatenated)
        sort(users)

        FERMER FICHIER 1

        OUVRIR "address.txt" sur 1 en ECRITURE
        
        POUR CHAQUE users EN user
            ECRIRE 1, user
        FIN POUR

        FERMER FICHIER 1

        ECRIRE firstname + " a été ajouté dans le carnet d'adresse."
    FIN SI

    
FIN

Conversion

Pas de code Javascript présent pour cet exercice
Pas de code Jquery présent pour cet exercice
<?php

/**
 * @var String $filePath Path of address.txt file
 */
$filePath = "scripts/173/address.txt";

/**
 * Format Data
 * String should always have the same length and should be in lower case.
 * @param $data The string to format.
 * @param $length [Optional] Length string should be.
 * @return String The formated string.
 */
function formatData(String $data, $length = 20):String {
    return strtolower( str_pad($data, $length) );
}

$concatenated = formatData($_POST['firstname']);
$concatenated .= formatData($_POST['name']);
$concatenated .= formatData($_POST['tel']);
$concatenated .= formatData($_POST['mail']);
$concatenated .= PHP_EOL;

// Open file in writing mode, cursor at the end of file.
$fStream = fopen($filePath, "r");

if ($fStream) {

    $i = 0;
    $users = [];

    while (!feof($fStream)) {
        $users[$i] = fgets($fStream);
        $i++;
    }

    if (!in_array($concatenated, $users)) {
        array_push($users, $concatenated);
        sort($users);

        fclose($fStream);

        $fStream = fopen($filePath, "w");

        foreach ($users as $user) {
            fwrite($fStream, $user);
        }

        fclose($fStream);

        echo $_POST['firstname'] . " a été ajouté au carnet d'adresses.";
    } else {
        echo $_POST['firstname'] . " est déjà dans le carnet d'adresses !";
    }
}

Choisissez un language:

Entrez les valeurs nécessaires:

Résultat du code

Le résultat s'affichera après l'exécution du code.