Vous n'êtes pas identifié(e).
de rien
@+
Salut,
Php n'intervient côté navigateur il ne s'exécute que sur le serveur.
Il te faut voir du côté du front, dans ton cas je dirais Javascript pour une requête Ajax (vers le serveur) qui indiquera s'il y a ou non une nouvelle commande.
Pour cela il te faut déterminer comment tu sais qu'une commande est nouvelle. (Ajout d'un drapeau en base ou dans un fichier par exemple).
Ensuite la requête Ajax récupère un booléen (1 ou zéro) et suivant le cas tu active la lecture d'un son sur le navigateur (balise html audio et un fichier son a ta convenance ).
@+
Salut,
C que veux dire MK c'est que c'est :
- tu peux faire une seule requête pour insérer plusieurs lignes dans une table (spécifique mysql)
- tu doit utiliser la clef primaire de ta table pour la sauvegarde des données.
Côté html cela commence par mettre en value des checkbox la clef primaire de la table (qui généralement est auto incrémenté).
Une clef primaire c'est une référence unique pour une ligne de table elle est donc la chose a utiliser lorsque l'on veux désigner une ligne en particulier.
Côté SGBD (mysql dans ton cas), afin d'avoir un modèle relationnel correct on va créer une table qui va contenir la référence vers la table "des gens" ainsi que la références vers la table qui représente ceux qui coche les cases.
Ensuite il te "suffit" d'insérer ces deux références dans la table pour sauvegarder l'information.
Pour réafficher l'info il faut faire une jointure sur les tables.
Si tu explique le but de la chose (comment tu identifie les gens qui coche les cases je peux te faire un exemple plus concret).
@+
Pour le système de fichier... ben heu qu'entends tu par là?
ton disque dur est a une structure plus moins correcte (secteur défectueux etc) du coup écrire dessus occasionne une perte de donné (même infime) qui fait que le fichier est corrompu).
Après je suis pa un spécialiste système mais un check disque semble une première approche.
tu peux le faire sans réparation histoire de voir s'il y a des secteur défectueux ou pas.
Pour ce qui est de l'hébergement, t’inquiète pas il s'agit de machines, normalement, robuste, monté en raid etc etc.
donc pas de perte de donnée, les bases ne s'arrête quasiment jamais la perte de donnée ne devrais pas exister (il y a aussi, généralement, des sauvegardes).
@+
salut,
malheureusement tes urgences en sont pas les nôtres, donc oui il faut attendre.
Le log indique que les fichiers que mysql utilise sont corrompus.
Cela peux être dû a pas mal de chose, comme un arrêt peu orthodoxe (forcer le crash de l'appli serveur par exemple) ou (cas N°3) un système de fichier foireux.
pour le second cas tu peux utiliser un utilitaire de disque pour vérifier le disque qui semble poser problème et les corriger au besoin.
Attention ce type d'utilitaire faisant rarement dans la dentelle une sauvegarde préalable des données est p^ primordiale
@+
salut,
Pourquoi vouloir forcément utiliser des expressions régulières ?
Ce n'est pas obligatoire, il tout a fait possible de valider un formulaire sans les utiliser.
Ton code semble être un mélange de toute les aide que tu as pu trouver sur le net, du coup je pense que tu te mélange les pinceaux
Le principe pour la validation d'un formulaire c'est :
1/ tester dans les tableaux $_GET ou $_POST si les infos dont l'on a besoin existe (ou pas). pour cela nous avons les fonctions isset ou empty
2/ Vérifier la cohérence des données. avec empty tu sais déjà que les variables ne sont pas vides (voir la doc pour le détail). Attention si le chiffre zéro est une valeur acceptable pour un champs de formulaire tu ne peux pas employer empty (cf doc).
Pour cela tu peux utiliser la fonction filter_var.
Amélioration possible :
* Le champ téléphone peu être de type tel plutôt que number
* Le champ mail peux être de type email plutôt que texte
exemple de validation pour ton formulaire
// Validation de l'email
if(filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL) === true) {
// ok
// validation du numéro de téléphone avec une expression régulière
if(preg_match('^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$',$_POST['telephone'])){
// ok
// nom, prenom, secteur, adresse et message ne sotn pas vide, si pas de contrôle particulier on peux tout prendre pour envoyer l'email
}else {
// N° de téléphone KO => message d'erreur
$TO = "alioui.mehdi2303@gmail.com";
$subject = "Devis";
$h = "From: " . $TO;
$message = 'nom '.$_POST['nom'].PHP_EOL;
$message .= 'prenom '.$_POST['prenom'].PHP_EOL;
$message .= 'secteur '.$_POST['secteur'].PHP_EOL;
$message .= 'email '.$_POST['mail'].PHP_EOL;
$message .= 'telephone '.$_POST['telephone'].PHP_EOL;
$message .= 'adresse '.$_POST['adresse'].PHP_EOL;
$message .= 'message '.$_POST['message'].PHP_EOL;
if(mail($TO,$subject,$message,$h)){
// ok, redirection avec php pas besoin d'imondice html / js
header('Location: redirection.html');
}else {
// erreur mail, cas assez improbable mais à traité quand même. donc un beau message d'erreur
}
}
}else {
// email KO un beau message d'erreur
}
} else {
// Erreur au moins un des champs obligatoire est vide
}
Pour faire bien cette validation devraient être faite sur la même page que l'affichage du formulaire, comme ça, en cas d'erreur, il est possible d'afficher un beau message d'erreur, proprement dans la page, et de pré remplir le formulaire avec ce qui à déjà été remplis. (et pourquoi pas appliquer une css sur le champs en erreur, par exemple font rouge, avec cadre rouge pour marquer l'emplacement de l'erreur).
La seul différence avec ce que j'ai fait c'est, qu'en général, on utilise le bouton submit (auquel on donne un nom) pour savoir si le formulaire est posté ou pas.
@+
Sans code je ne peux te répondre que :
- c'est peux être un nom différent ?
- le traitement prend compte d'un paramètre que tu ne connais pas ?
@+
salut,
Suite de mon PB
en fait dans le formulaire il y a un champs hidden avec en l'ID value récupéré via une variable GET
et je viens de m'apercevoir qu'avec un bouton radio activé avec l'ID en value toujours récupéré via la même variable GET ça fonctionned'où ma question : y a t'il une différence dans l'enregistrement dans une BDD entre un champs hidden et un bouton radio ou autre ?
Merci d'avance pour les réponses
Mico
non un champs est un champ le traitement est le même si la donnée est envoyée.
par contre si ton bouton n'est pas coché la valeur n'es pas transmise, alors que la valeur du champ caché l'est toujours.
@+
Justement quand je parle de gros sites, je pense facebook ou d'autres sites à grand traffic ou des comparateurs d'offres, et maintenant, j'ai l'impression qu'ils ne développent plus qu'en C/C++ d'où ma question de savoir comment un tel développement s'organise.
Comment peux tu le savoir ?
En les consultant ?
salut,
j'ajouterais qu'il faut voir ce que l'on entend par "lourdeur".
souvent un système de cache est une première approche utile suffisant a soulager un peu le serveur.
Ensuite comme le souligne Maljuna Kris, optimiser les requetes et le code en générale c'est une première chose.
Une application web JEE c'est beaucoup plus lourd pour le serveur que du code php (JVM etc), donc suivant les besoins ce n'est pas forcément adapté.
pour info il existe d'autre possibilité comme ruby (et ruby on rails) ou python.
tu parle de "gros" site, certain, comme facebook, sont fait en php et tournent pas mal
@+
salut,
N'étant pas web designer je ne peux t'aider sur les formations.
Par contre pour le début il existe plein de site qui peuvent te permettre de progresser, par les tutos et par l'aide des forums.
par exemple alsacreations
@+
Yop,
pourquoi addslashes ?
Alors que PDO propose la méthode quote
Le coté rappel d'utilisation de mysql (fonction, proc stock, validation sur le SGBDR) est sympa, c'est vrai que l'on vois rarement ce genre de chose dans les tutos.
Par contre je trouve que ce type de fonctionnement, perd la lisibilité du code et impose un traitement en plus.
le coté perf, je connais pas, et je reste étonné
Ils n'utilisent par exemple les bases de données QUE pour gérer la persistance des données.
heu c'est le role d'un sgbd dans une appli n-tiers, ou je n'ai pas compris le sens de la phrase :s
La validation des données étant, bien sur a réaliser aussi sur le SGBDR (et la gestion d'intégrité si besoin) peut être est ce que tu entend par la.
@+
salut,
en gros tu part sur le principe d'afficher n - 1 / n ou n / n + 1 si le mois est inférieur ou supérieur et égale à 09
en gros
[php]
<?php
if ( date('m') < 9) {
echo (date('Y') -1) . ' / ' . date('Y');
}
else{
echo date('Y') . ' / ' . (date('Y') + 1);
}
?>[/php]
bon a tester faudra p'tet faire le calcul avant mais le principe est la
@+
yop,
perso je rappelerais la doc de addslashes
Un exemple d'utilisation d'addslashes() est lorsque vous entrez des données dans une base de données. Par exemple, pour insérer le nom O'reilly dans la base, vous aurez besoin de le protéger. Il est fortement recommandé d'utiliser les fonctions de protection spécifiques à chaque base de données (telle que mysqli_real_escape_string() pour MySQL et pg_escape_string() pour PostGreSQL), mais si la base de données que vous utilisez n'a pas de fonction spécifique, et que cette base utilise \ pour protéger les caractères spéciaux, vous pouvez utiliser cette fonction. Grâce à elle, \ sera ajouté. Si la directive PHP magic_quotes_sybase est activée, ' sera protégé par un autre '.
La directive PHP magic_quotes_gpc est à on par défaut, et elle appelle addslashes() sur toutes les données GET, POST et COOKIE. N'utilisez pas addslashes() sur des données déjà protégées avec magic_quotes_gpc sinon vous doublerez les protections. La fonction get_magic_quotes_gpc() est utile pour vérifier ce paramètre.
donc avec l'extension mysql(i) mysql(i)_real_escape_string
avec PDO quote() (et pas de requête préparée à tout va svp )
pourquoi ?
parce que comme le dit la doc de mysqli_escape_string
Les caractères encodés sont NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.
alors que addslashes dit
Ces caractères sont les guillemets simples ('), guillemets doubles ("), antislash (\) et NUL (le caractère NULL).
Ca fait le même taff en mieux
quand au htmlentities, à réserver pour l'affichage, ceci rien que pour garder la possibilité de faire autre chose que du html avec ta base de donnée, par exemple utilise un soft fait dans un autre, java, C, ce que l'on veux pour utiliser en dehors d'un contexte web, ou plus simplement pour un export sur différent support, comme PDF ou n'importe quoi d'autre
@+
répondu la =>http://forum.phpfrance.com/post370083.html
mettre a jour spip !
salut,
le message indique que tu essai de redéclarer une une fonction qui existe déjà, ceci à la ligne 64 de inc-calcul.php3 dans la fonction eval.
la seule chose à faire est de voir cette ligne de code et de modifier le nom de la fonction si possible, sinon ne pas re déclarer cette fonction !
@+
tu utilise une méthode d'utilisation des formulaires qui n'est plus utilisable par défaut avec php. Je te conseil donc de revoir la validation des formulaires
http://www.phpdebutant.org/article56.php
ligne 40 à 100 (ou par la) pourquoi deux requetes sql ? tu fait directement la dexième et utilise mysql_num_rows pour la condition ce sera plus simple.
je te conseil de reprendre ton code morceau par morceau de les valider un par un puis de les assembler.
@+
salut,
peut tu être plus clair sur le problème ? (avec des exemples de données par exemple)
$sql = "INSERT INTO tuteur(id_tuteur, nomtuteur, prenomtuteur, teltuteur,celtuteur) VALUES('','$_POST[nomtuteur]','$_POST[prenomtuteur]','$_POST[teltuteur]','$_POST[celtuteur]')";
la t'a un problème il faut délimiter les index de post !
$sql = "INSERT INTO tuteur(id_tuteur, nomtuteur, prenomtuteur, teltuteur,celtuteur) VALUES('','{$_POST['nomtuteur']}','{$_POST['prenomtuteur']}','{$_POST['teltuteur']}','{$_POST['celtuteur']')"; devrait aller un peux mieux
mysql_real_escape_string est à utiliser sur toutes les valeurs issues de $_POST (au pire une titre fonction de derrière les fagot avec array_walk le fera a ta place).
A priori tu n'a pas de doublon dans les requetes.
Tu peux afficher les $sql avant les mysql_query histoire de suivre le déroulement
@+
sur combien de forum a tu posé la question ? http://forum.phpfrance.com/php-debutant … 60375.html
pour répondre a ta question il faut savoir comment fonctionne le système, a priori la fonction javascript appel la page directement en sachant où elle doit trouver la page. il te suffit de modifier ce comportement, soit en modifiant le fichier cible soit simplement en indiquant le bon nom directement.
Le mieux serait peut être de demander à l'auteur de l'appli ?
@+
pour te donner plus d'info dans le sens de MK :
tu aura 3 tables pour régions, départements, communes
départment contiendra la clef primaire de régions
communes contiendra la clef primaire de départements (pour savoir qui appartient a qui).
dans la table qui va concerner, disons l'utilisateur tu mettra la clef primaire de la commune (qui te permettra de remonter jusqu’à la région
@+