Plusieurs problèmes avec le forum

Répondre
inrize
le 11/09/2008 à 19:36
inrize
J'ai deux problèmes :

Le premier c'est que le forum ne tient pas compte des accents, à la place j'ai des caractères bizarre.

Deuxièment, j'ai ce message d'erreur "Warning: Cannot modify header information - headers already sent by (output started at /home/idago/www/sd/team-extreme/www/forum/insert_sujet.php:1) in /home/idago/www/sd/team-extreme/www/forum/insert_sujet.php on line 43"
Je crois qu'il n'arrive pas à revenir sur index.php

Merci de votre aide.
aucune
LA GLOBULE
le 11/09/2008 à 21:55
LA GLOBULE
Moué, en gros, t'as copier coller le code du comment faire et tu ne cherches pas trop à comprendre pourquoi cela bug (surtout qu'en le copiant collant proprement, il ne bug pas). Enfin bref...

Ton premier problème est un problème d'encodage de caractères (charset).
Je te laisse chercher sur wikipedia ce qu'est un "encodage de caractères".

Ensuite, à toi d'en choisir un, puis il faudra que :
- l'encodage interne de PHP utilise l'encodage que tu as choisis (mb_internal_encoding)
- l'encodage utilisé par ta connexion MySQL corresponde également
- que tu forces le charset de tes documents HTML générés par PHP via un header
- que tu configures ton logiciel qui te sert à coder pour utiliser ce charset

Pour ton deuxième problème, c'est du à un mauvais copier coller de ta part.

Le message d'erreur dit que tu cherches à faire un header à la ligne 43 de /home/idago/www/sd/team-extreme/www/forum/insert_sujet.php, or tu fais une sortie HTML à la ligne 1 de /home/idago/www/sd/team-extreme/www/forum/insert_sujet.php. Mais c'est juste interdit de faire cela.
Cela est surement du à un espace ou à un saut de ligne à la première ligne du fichier /home/idago/www/sd/team-extreme/www/forum/insert_sujet.php juste avant le <?php
inrize
le 11/09/2008 à 23:29
inrize
Il est vrai que j'ai fait du copier/coller, mais avec toutes les erreurs que j'ai accumulé, j'ai du me debrouiller et lire et relire tutos et cours. Pour l'encodage de caractères je viens d'y comprendre.

Par contre pour l'erreur line43, elle n'est pas du à ce que tu m'as exprimé. Voici la ligne de code de insert_sujet.php :

<?php
// on teste si le formulaire a été soumis
if (isset ($_POST['go']) && $_POST['go']=='Poster') {
// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['message'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
// on teste si les variables ne sont pas vides
if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['message'])) {
$erreur = 'Au moins un des champs est vide.';
}

// si tout est bon, on peut commencer l'insertion dans la base
else {
// on se connecte à notre base
$base = mysql_connect ('localhost', 'teamextr1026', 'd0ZtHAgW');
mysql_select_db ('teamextr1026', $base) ;

// on calcule la date actuelle
$date = date("Y-m-d H:i:s");

// préparation de la requête d'insertion (pour la table forum_sujets)
$sql = 'INSERT INTO forum_sujets VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.$date.'")';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on recupère l'id qui vient de s'insérer dans la table forum_sujets
$id_sujet = mysql_insert_id();

// lancement de la requête d'insertion (pour la table forum_reponses
$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();


// on redirige vers la page d'accueil
header('Location: index.php');
// on termine le script courant
exit;
}
}
}
?>
<html>
<head>
<title>Insertion d'un nouveau sujet</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_sujet.php" method="post">
<table>
<tr><td>
<span class="gras"><font color="#cccccc">Auteur :</color></span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras"><font color="#cccccc">Titre :</color></span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras"><font color="#cccccc">Message :</color></span>
</td><td>
<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
aucune
LA GLOBULE
le 11/09/2008 à 23:35
LA GLOBULE
Pourtant, on voit qu'il y a un retour chariot à la première ligne du fichier.

De toutes façons, l'erreur dit clairement ce qui ne va pas : PHP ne te pas fait pas une farce, et ce n'est pas un bug de PHP. Tu as un truc à la première ligne du fichier, un retour chariot ou un espace ou une merde juste avant le <?php.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours