LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 06/11/2008 à 08:33
module smarty
Je vais parler de mon expérience personnelle.

En général, dans le milieu pro, tu as un designer qui fait une maquette, et ensuite, tu as un développeur qui doit coder la fonctionnalité désirée et le monteur HTML qui doit écrire le code HTML (ou le template smarty si tu utilises smarty).

Ben souvent, le monteur HTML bosse avant le développeur PHP. Celui ci découpe la maquette et il fait son montage HTML avec du texte en dur dans le HTML.
Ensuite, le développeur PHP va faire son code et remplacer ces textes en dur par des variables PHP.
Donc dans ce cas, smarty n'est que peu "utile", pour deux raisons.

1) le monteur HTML doit apprendre la syntaxe smarty
2) à cause du balisage smarty, le monteur HTML peut difficilement tester dans son navigateur la qualité de son montage

Mais on peut avoir un autre cas de figure : le développeur fait le code PHP avant que le monteur HTML monte sa page (ou tout simplement lorsque le monteur HTML doit modifier son montage alors que le code PHP est déjà écrit).

La, si tu as un site bien conçu, c'est à dire en séparant au maximum le code PHP du code HTML (moi, ce que je fais, c'est que j'ai des .php qui font des requetes SQL, qui traitent des formulaires, et ensuite, ce .php fait un require 'toto.html' et dans toto.html, je n'ai que des <?php echo $blu; ?> ou quelques if ou quelques for, mais en aucun cas des "traitements" PHP. Donc cette page HTML qui contient quand même du PHP pour afficher des données est "simple" d'accès).

Dans ce cas, en général, les monteurs HTML ne sont pas cons. Ils ont déjà vu du code PHP dans leur vie. Ils savent qu'un <?php echo $nb_result; ?> va afficher le nombre de résultat d'une recherche par exemple. Ils savent qu'un for va faire une boucle, etc.
Donc la aussi, je trouve l'intérêt de smarty limité, car le monteur HTML doit apprendre la syntaxe smarty (de même que le développeur).

Et entre un '<td>%wiz:membre.name;</td>' et un <td><?php echo $membre->name; ?></td>, je pense qu'il y'a "peu de différence".
Enfin, si, il y'en a une, dans le cas de smarty, tu as un parseur qui doit parser le template, et donc consommer du CPU.
LA GLOBULE
le 05/11/2008 à 17:31
Effet utilisé sur Facebook
I/ Ben si tu soumets le formulaire avant de faire ton ouverture de div, tu peux virer le onclick du bouton alors, et lancer le JS scriptaculous on onload de la page.
(je t'avoue que je viens juste de comprendre ce que tu voulais : soumettre le formulaire et re afficher la page et faire en sorte que le commentaire soumis s'affiche en se dépliant. C'est con, mais avec tes explications, j'avais compris que tu voulais déplier un div et ensuite soumettre un formulaire :S)

II/ En le sélectionnant dans la base SQL avant d'afficher ton HTML ? Ou bien en utilisant directement la valeur $_POST. Mais la, ca n'a aucun rapport avec le JS, tu dois juste écrire le commentaire dans le div.
LA GLOBULE
le 05/11/2008 à 15:44
Effet utilisé sur Facebook
1) Ton problème d'echo, c'est un problème basique de PHP : $_POST['msg'] n'existe surement pas ou il est vide (en même temps, si tu dis que ton formulaire ne se soumet pas, y'a peu de chance que $_POST['msg'] existe).

2) tu peux mettre un id="toto" sur la balise <form> du formulaire, et dans ton javascript, un truc du genre document.getElementById('toto').submit();
LA GLOBULE
le 05/11/2008 à 12:17
Effet utilisé sur Facebook
Pour que le formulaire ne se valide pas quand tu clics sur le bouton, tu dois faire un truc du genre :

<script type="text/javascript">
function blu() {
alert('blu');
}
</script>

<form action="" method="post">
<input type="submit" name="go" value="pom" onclick="blu(); return false;" />
</form>


Sinon le déroulement, c'est ton code scriptaculous que tu dois lancer non ?

Pour cela, tu dois mettre ce code dans la fonction blu() de mon exemple. A cette fonction ensuite de soumettre le formulaire.
LA GLOBULE
le 04/11/2008 à 23:44
BBcode et forum
Oué, mais la, tu fais 15 000 expression régulières.
Tu as essayé un peu d'isoler ton problème pour voir quelle regex fuckait ton HTML ?

D'autre part, as tu testé ton script sur une "page vierge" pour voir si ce n'était pas ton montage HTML qui avait un soucis ?
LA GLOBULE
le 04/11/2008 à 23:36
Problème connexion membre
Quel est le rapport entre ma réponse et l'erreur SQL que tu viens de nous paster ??

Tout à l'heure, tu ne l'avais pas l'erreur ? Moi je pense que si. Ou alors tout à l'heure, tu n'avais pas encore testé ton script.

Ton erreur dit que ta table SQL ne comporte pas de champ login. Par conséquent, il faut en ajouter un, ou bien si il existe et qu'il se nomme différemment, tu dois modifier en conséquence le code de ta requête.
LA GLOBULE
le 04/11/2008 à 23:02
Problème connexion membre
On va faire basique.

Remplace ca :
if ($reponse == $_POST['login'] && $reponse == $_POST['pwd'])

Par :
if ($reponse['login_bdd'] == $_POST['login'] && $reponse['pwd_bdd'] == $_POST['pwd'])

(mais en ne mettant pas 'login_bdd' et 'pwd_bdd', il faut que tu mettes le nom de tes champs SQL)
LA GLOBULE
le 04/11/2008 à 22:55
Problème connexion membre
Non, ce n'est pas du tout ce que j'ai dis.
Laisse ta requête comme elle est.

Ce que je te dis, c'est que $reponse est un tableau indexé en fonction du nom des champs de ta table bdd.

Quand tu veux comparer le login / mot de passe avec ce que tu as en base, tu dois comparer le login POST avec le login que tu as en base, et le mot de passe POST avec le mot de passe que tu as en base.

Bref, $reponse étant un tableau, cela ne se fait pas en faisant :

if ($reponse == $_POST['login'] && $reponse == $_POST['pwd'])

On ne compare pas les choux et les carottes ($reponse est un tableau alors que $_POST['login'] est une chaine de caractères, de même, $reponse est un tableau alors que $_POST['pwd'] est une chaine de caractères).

Donc je me repete :

Si ton champs SQL stockant le login s'appelle 'login_bdd' et si ton champs contenant le mot de passe s'appelle 'pwd_bdd', alors, tu devras écrire :

if ($reponse['login_bdd'] == $_POST['login'] && $reponse['pwd_bdd'] == $_POST['pwd'])


(je te donne un exemple en plus :S a toi de savoir comment tu as appelé tes champs SQL)
LA GLOBULE
le 04/11/2008 à 22:37
Problème connexion membre
if ($reponse == $_POST['login'] && $reponse == $_POST['pwd'])

Ça, cela ne colle pas.
$reponse est un tableau (ta variable provient d'un mysql_fetch_array), et les clés du tableaux dépendent des champs de ta base de données. De ta table bdd plus particulièrement.

Si ton champs SQL stockant le login s'appelle 'login_bdd' et si ton champs contenant le mot de passe s'appelle 'pwd_bdd', alors, tu devras écrire :

if ($reponse['login_bdd'] == $_POST['login'] && $reponse['pwd_bdd'] == $_POST['pwd'])

Autre suggestion : avant de faire ton mysql_fetch_array, fais un mysql_num_rows pour savoir si la requête SQL retourne au moins un résultat, sinon, si l'utilisateur n'est pas trouvé en base de donnée, ton script génèrera une erreur.
LoadingChargement en cours