Version complète: sur le forum Webmaster Hub : parse error, sur la ligne 38 ... j'en ai 37 !
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
bigornot
voila, j'ai un petit parse error on line 38, la routine !
sauf que, je n'en ai que 37, des lignes !!!!!!
il y a un petit probleme, non ?
peut etre l'hebergeur ?
j'ai free



voila !

@+
Berberber
j'avais mal compris la question
Dams
Ce genre d'erreur a souvent pour cause un } qui manque...

Php s'en rend compte a la fin. Il se dit alors tient me manque un } !! Erreur a la ligne 38 (Qui n'existe pas mais devrait exister biggrin.gif )
Anonymus
Voilà. Sinon, il peut manquer aussi une parenthèse non fermée, un double quote " ou tout autre caractère destiné à fermer une fonction, une donnée, etc..

Vérifies la synthaxe de ton programme, et pour ceci, appliques ce procédé :

Tu mets les lignes en commentaire, les unes après les autres, en testant à chaque fois ce que ca donne. Ainsi, ton erreur sera mise en commentaire, donc desactivée, et cela te donnera la ligne où elle se situe.

Anonymus.
Dams
Pour les caractères " et ' utiliser un outil d'édition comme phpedit te permets d'éviter ce genre de problèmes.

En effet phpedit utilise une colorisation syntaxique adapté au php qui te permettra en un coup d'oeil de voir ce genre d'erreurs....
bigornot
euh ...
oui, mais, j'ai verifié, rien de ce genre ...
il n'y a pas d'autres possibilités ??
Anonymus
Si, poster le code ici directement wink.gif

Anonymus.
bigornot
CODE
<?php
$_COOKIE['kool'];
session_start();// Démarage de la sessions OBLIGATOIR   
if(session_is_registered(pseudo))
{
echo "Votre pseudo :<b>".$_SESSION[pseudo]."</b><br>";
}
else
{
echo "$kool";
}
include("config.php");
$link = mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");
_AT_mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");
_AT_mysql_select_db("bdbourgeron");
$query = 'SELECT * FROM `messagerie` WHERE destinataire = "$kool" LIMIT 0, 30';
$result = mysql_query($query);
$num_rows = mysql_numrows($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>inscription_login_mysql.php</title>
    <meta name="author" content="Franck Bourgeron">
    <meta name="publisher" content="Franck Bourgeron">
    <meta name="generator" content="HTML Creator 3.5.1">
</head>
<body>
<?php
while($num_rows < mysql_numrows($result)){
echo "<br><center>De :".$num_rows['envoyeur'];
echo "<br><center>A :".$num_rows['date'];
echo "<br>Titre :".$num_rows['titre'];
echo "<br>Message :".$num_rows['message'];
?>
</body>
</html>

voila pour le code
Voila pour la page

Merci beaucoup d'avance !!
@+
Anonymus
Remplaces
CODE
$link = mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");
_AT_mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");

par
CODE
$link = mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");


Remplaces la ligne
CODE
$query = 'SELECT * FROM `messagerie` WHERE destinataire = "$kool" LIMIT 0, 30';

par
CODE
$query = "SELECT * FROM messagerie WHERE destinataire = ".$kool." LIMIT 0, 30";


Remplaces :
CODE
<?php
while($num_rows < mysql_numrows($result)){
echo "<br><center>De :".$num_rows['envoyeur'];
echo "<br><center>A :".$num_rows['date'];
echo "<br>Titre :".$num_rows['titre'];
echo "<br>Message :".$num_rows['message'];
?>


par :
CODE
<?php
while($rows = mysql_fetch_array($result)){
echo "<br><center>De :".$rows['envoyeur'];
echo "<br><center>A :".$rows['date'];
echo "<br>Titre :".$rows['titre'];
echo "<br>Message :".$rows['message'];
}
?>


Pour info, l'erreur vient du dernier morceau de code : Il manque une } pour fermer la structure de contrôle while :
Rappel :

while (TRUE){
// code
}

A+, Anonymus
bigornot
ha !
oui, voila, ca marche presque, mais, il me met : 1) le or die
2) une erreur

sur la ligne en dessous :
mysql_numrows(mysql_query("SELECT * FROM messagerie WHERE destinataire ='.$kool.' LIMIT 0, 30",mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate"))) or die ("nononon")
Jez
je mettrais ".$kool." non?
avec des simple quote tu fermes pas ta chaine je crois, donc il doit prendre les . comme faisant partie de la requete
Anonymus
Effectivement, avec de simples quote, ca genère une erreur.

En fait, dans la mesure où il n'arrive pas à se connecter à la base (die... veut dire qu'il n'arrive pas à se connecter), la requète que tu essaie de faire ne peut pas marcher (puisque pas d'accès à la base.).

Le problème, aussi, c'est que tu changes les lignes que je te donnes. A chaque fois, on ne peut te résoudre les erreurs, parce qu'on ne sait pas ce que tu as mis.

Pour info, cette ligne est fausse :

mysql_numrows(mysql_query("SELECT * FROM messagerie WHERE destinataire ='.$kool.' LIMIT 0, 30",mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate"))) or die ("nononon")

Mets :
CODE
$l = mysql_connect($db_chemin,$db_user,$db_pass) or die ("rate");
$q = "SELECT * FROM messagerie WHERE destinataire ='.$kool.' LIMIT 0, 30"
$r = mysql_query($q,$l);
$n = mysql_numrows($r);
    
echo "Nombre de lignes =".$n;

Décomposes tes variables/fonctions/instructions !!
On agglomère lorsque ca marche, pas quand il y a des erreurs.

De plus, au niveau optimisation :
Si tu demandes tous les champs d'une table, tu te retrouves oblilgé de dépiler entièrement une table de ta base. Pour faire quoi ?Chercher le nombre de lignes ??
Il te faut réfléchir un petit peu. Dépiler un seul champ (par exemple l'id_table ou 'nom'), et compter le nombre d'occurences. Cela suffira largement ! A condition que ce champ ne soit pas NULL, evidement.

Nico.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.