Ses derniers messages sur les forums
Il y a deux choses à considérer :
- le traitement côté client (l'aspect interactif)
- le traitement côté serveur (l'aspect dynamique)
Une solution basique serait d'avoir ton tableau HTML, au-dessus duquel tu as un élément interactif « ajouter une ligne », qui va effectivement appeler la routine pour ajouter une ligne au tableau avec les éléments du formulaire.
Bref, quelque chose dans ce goût là :
<!DOCTYPE html>
<html>
<body>
<form action='' method='post'>
<span class='line-adder'>Ajouter une ligne</span>
<table>
<tr><td>Blah</td><td>Beuh</td></tr>
</table>
</form>
<script type='application/javascript'>
// <!--
document.getElementsByClassName('line-adder')[0]
.addEventListener('click', function(ev)
{
var table = this.parentNode.getElementsByTagName('table')[0];
var od = table.ownerDocument;
var line = table.appendChild(od.createElement('tr'));
var cell = line.appendChild(od.createElement('td'));
var input = cell.appendChild(od.createElement('input'));
input.setAttribute('name', 'first[]');
cell = line.appendChild(od.createElement('td'));
input = cell.appendChild(od.createElement('input'));
input.setAttribute('name', 'second[]');
});
// -->
</script>
</body>
</html>
Pour le côté serveur, je crois que c'est assez évident maintenant.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
1. mysql_real_escape_string est ton ami, et son collègue sprintf permet de construire les requêtes de manière lisible.
<?php
$sql = sprintf('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip='%s'''
, mysql_real_escape_string($_SERVER['REMOTE_ADDR']));
mysql_query($sql);
2. Quel est le sens de cette requête ?
SELECT COUNT(id) FROM connectes WHERE id=visites
3. Timestamp est un type MySQL, ça m'étonnerais que ce SQL soit accepté.
UPDATE connectes SET timestamp=
4. Quand tu appelles une fonction, quelle quelle soit, si sa documentation explicite des codes retours, tu dois les vérifier. C'est entre autres le cas avec mysql_query.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Paphio-King, dans le second exemple, tu remarqueras qu'il n'utilises pas PDO mais un basique MySQLi. Bref, ce n'est pas son soucis.
Bref, vérifie que:
Le HTML gébéré est bien en UTF-8.
Que le formulaire a bien l'attribut
accept-charset pour dire au navigateur de répondre en UTF-8.
La requête HTML est bien servie en UTF-8. Au pire, il faut que tu mettes un http-equiv dans l'en-tête du document HTML, au mieux, c'est un en-tête HTTP (que tu définis dans Apache, directive DefaultCharset) ou depuis ton PHP.
<?php header('Content-type: text/html; charset=utf-8');
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
J'ai posé la question à tout hasard, au cas où tu avais une clé définie plusieurs fois, PHP ne râle pas.
Es-tu certain que PDO se connecte en autocommit ? Le problème que tu rencontres est assez classique : les update et insert ne sont pas envoyés tant que tu ne le requiert pas explicitement ; même en fin de programme. Du coup, il faut appeler la fonction membre commit sur l'objet PDO (ou s'assurer que PDO est en mode auto-commit).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Tu es certain de "col_name" ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ce n'est pas que c'est mieux, c'est la seule plateforme sérieuse de développement (web). Il faut toujours avoir un MS Windows pour les tests, mais bon, c'est pour les tests, rien d'autre.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Dans l'absolu, je suis d'accord, c'est à ton maître de stage de déployer. Ou au moins de te guider.
Mais tu es sérieux à propos de Linux ? Tu es au courant que le dev web est principalement déployé en environnement Unix ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Moi je parie plus sur les multiples session_start(), ça fout toujours la merde ça.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
WampServer n'est pas une base de données, évites de raconter ça dans ton rapport de stage ;)
Pourquoi ne peux-tu pas utiliser le serveur web de l'association ? Limitations techniques ?
De ce que j'en sais, les capacités réseau de Microsoft Windows dépendent de la licence, ce n'est donc pas forcément un choix judicieux pour servir une application web. Le remplacer par une box sous Linux, voire réviser le plan d'hébergement web, pourrait être une solution à envisager. Si tu es vraiment coincer avec du MS Windows, ben, bon courage.
Ne passes pas par MS IIS.
Avec Wamp, tu as déjà un serveur Web (Apache). Il faut le rendre accessible depuis l'extérieur (capacité d'être contacté depuis le réseau, pare-feu ouvert sur le port 80, etc).
Bref, essaye de voir si tu as épuisé
Google.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
En effet, c'est côté client que ça se gére.
En gros, tu affiches une cartouches HTMl que tu identifie avec un ID, puis tu créés un évènement pour supprimer le noeud.
DOM
<div id='message'>C'est formidable !</div>
<script type='application/javascript>
SetTimeout(5 * 1000 /* après 5 secondes */, function ()
{
var node = document.getElementById('message');
node.parentNode.removeChild(node);
}
</script>
Le message sera supprimé. Si tu veux quelque chose de plus progressif, il faudra réduire progressivement la taille de la boîte de dialogue jusqu'à ce que tu la supprimes. Mais bon, il existe des bibliothèques qui aident à faire ça (comme jQuery UI).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.