11521 sujets

JavaScript, DOM et API Web HTML5

Salut,
J'enregistre à l'aide de sessionStorage les données d'un formulaire, il s'agit de rajouter des nouveaux restos. Je récupère bien les données du form mais je voudrais récupérer les données pour chaque restaurant sous forme nom du resto, adresse, avis, j'ai crée une class objet Restaurant, car je pense que c'est nécessaire... mais je ne sais pas comment faire...
J'arrive à récupérer les données de chaque key en bloc du style pour les notes de tous les restos : 1,4,5,5,1,4,1 avec la fonction forEachKey, mais pas les données de chaque key, adresse,note,commentaire de chaque resto;
En gros je voudrais récupérer pour chaque resto:
Nom du resto
adresse
note
commentaire

Est ce que quelqu'un peut m'aider SVP, j'ai besoin de vos lumières !!!
MERCI !!!


il y a 2 formulaires
'<div id="newRestaurant"><h4>Ajouter un Restaurant</h4><form id="addNewRestaurant"><label>Nom du restaurant</label><br><input type="text" name="newName" id="newName" required><br><label>Adresse</label><br><input type="text" name="newAddress" id="newAddress" required><br><input type="submit" id="submitNewRestaurant"></form></div>';
<form id="review_form">
<h3 class="italic">Souhaitez-vous ajouter un avis sur ce restaurant?</h3>

<label>Combien d'étoiles donnez vous :</label><br>
<p id="numberstars"</p>

<select name="numberstars"id="numberstars">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select><br>

<div id="position"></div>
<label>Votre Commentaire :</label><br>
<textarea name="fullcomment" id="fullcomment"></textarea><br>
<input type="submit" id="submitbtn">
</form>
<script>
class Restaurant{
constructor (nom,adresse){
console.log(this);
this.nom=newName;
this.adresse=newAddress;
this.avis=[];
}
ajouterAvis(avis){
if(avis instanceof Avis){
this.avis.push(avis);
}
}
}
class avis{
constructor(note,commentaire){
console.log(this);
this.note=note;
this.commentaire=comment;
}
}
// function forEachKey() {

// for (var i = 0; i < sessionStorage.length; i++) {
// console.log(sessionStorage.getItem(sessionStorage.key(i)));
// }
// }

//--------------------------------------------------------------------------
names = JSON.parse(sessionStorage.getItem('nom') || "[]");
addresses= JSON.parse(sessionStorage.getItem('adresse') || "[]");
document.getElementById('submitNewRestaurant').onclick =function (saveData) {

var data = document.getElementById('newName').value;
names.push(data);
sessionStorage.setItem('nom', JSON.stringify(names));

var data = document.getElementById('newAddress').value;
addresses.push(data);
sessionStorage.setItem('adresse', JSON.stringify(addresses));

};

views = JSON.parse(sessionStorage.getItem('commentaire') || "[]");
notes = JSON.parse(sessionStorage.getItem('note') || "[]");
document.getElementById('submitbtn').onclick =function (saveData) {

var data = document.getElementById('fullcomment').value;
views.push(data);
sessionStorage.setItem('commentaire', JSON.stringify(views));

var data= $('#numberstars option:selected').text();
sessionStorage.setItem('note',data);
sessionStorage.setItem('note',JSON.stringify(data));
notes.push(data);
sessionStorage.setItem('note', JSON.stringify(notes));
};
</script>
Mais... mais.... PHP?

Deux questions. Tu enregistres comment les données? Une session c'est éphèmère et ça ne concerne que l'utilisateur. Donc à mon avis tu veux un truc qui écrit dans un fichier. PHP te le permets avec des élèments en CSV ou de gérer une base de données, Node.JS te permets de manipuler du JSON.

Rajoute un input type radio. Avis oui ou non. Met tout dans le même formulaire. T'auras juste besoin d'un case ou if/else sur la réponse donnée. En default tu mets sur "non"

En php ça donnerait ça

<?php 
    unset($_POST['submit']);
    foreach($_POST as $key => $value){
        $_SESSION[$key] = $value;
    }
?>

Après à toi de traiter ces infos comme tu veux pour les enregistrer ou non. Tout dépend du but de ton site/programme
Modifié par Athos_is_coding (29 Aug 2018 - 10:12)
Salut Athos_is_coding,
Merci pour ta réponse rapide...
Je ne dois pas utiliser de php, je débute... Smiley murf
Ca ne répond pas à une question. Tu fais quoi de ces données? Le sessionstorage ne les garde pas indéfiniment.

J'ai besoin de savoir EXACTEMENT ce que tu cherches à faire vu que je suis pas dans ta tête ^^
Ok, merci...Je dois les stocker juste le temps de la visite sur le site, au chargement de la page tout doit s'effacer... car je dois rajouter des restos de façon fictive...
J'ai utilisé sessionStorage car je ne maitrise pas encore le php. Mais je sais.. c'est plus long !
// Save data to sessionStorage
sessionStorage.setItem('key', 'value');

// Get saved data from sessionStorage
var data = sessionStorage.getItem('key');

// Remove saved data from sessionStorage
sessionStorage.removeItem('key');

// Remove all saved data from sessionStorage
sessionStorage.clear();
Tu souhaites les afficher quand en fait? Une fois que c'est remplis? Quand tu changes de page?
Modifié par Athos_is_coding (29 Aug 2018 - 11:07)
Si tu souhaites afficher tu as juste à fair eun truc du style

data = sessionStorage.getItem('nom_item');
/** Il est possible que ça s'écrive comme ça
data = sessionStorage.getItem('nom_item').val();*/
document.getELementById('txt').textContent = data;


Mais pour ça tu as besoin de savoir si le mec a remplis au préalable.
Modifié par Athos_is_coding (29 Aug 2018 - 11:17)
Attention à ce que ce ne soit pas null/undefined/NaN. Tu risques d'avoir des surprises.

Tu as vraiment besoin de required et de mettre le formulaire en 1 bloc comme j'ai suggéré plus tôt. Et de trigger l'insert dans la session quand l'utilisateur submit son formulaire.
Merci de m'aider !! Je vais déja essayer avec les infos que tu m'as données. Je voudrais afficher les données après validation du formulaire dans une liste de restaurants récupérée avec à google places API.