Parse error: syntax error, unexpected T_LOGIC

Résolu/Fermé
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 15 déc. 2010 à 13:14
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 19 déc. 2010 à 14:27
Bonjour,
Je galère depuis une semaine et à force de corriger c'est de pire en pire. Je ne vois plus tellement je lis "trouble". Je vais finir par poster tout le code de la page en espérant que quelqu'un qui voit voit cela pour la première fois voit la boulette du premier coup d'oeil. Je m'arrache les cheveux, ne pense qu'a ça même en me couchant et ça devient invivable. Bref voici le message:
Parse error: syntax error, unexpected T_LOGICAL_OR in
(cest le pire de tous ceux que j'ai eu) grhhhh !
Et maintenant la page sensé ajouter un enregistrement dans la table agenda:
<?php
// On déclare les variables (post car la méthode d'envoi du formulaire est POST
$ID = $_POST['ID'];
$Lien = mysql_real_escape_string(htmlspecialchars($_POST['Lien']));
$Source = mysql_real_escape_string(htmlspecialchars($_POST['Source']));
$Date = mysql_real_escape_string(htmlspecialchars($_POST['Date']));
$Titre_Page = mysql_real_escape_string(htmlspecialchars($_POST['Titre_Page']));
$Stitre1 = mysql_real_escape_string(htmlspecialchars($_POST['Stitre1']));
$Stitre = mysql_real_escape_string(htmlspecialchars($_POST['Stitre']));
$textarea = mysql_real_escape_string(htmlspecialchars($_POST['Info']));
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="robots" content="index, follow">
<link rel="SHORTCUT ICON" href="http://graciannehastoy.free.fr/favicon.ico">
<meta name="author" content="Jean Michel Etchecolonea/Gracianne Hastoy" />
<meta name="description" content="Le site de l'écrivain basque Gracianne Hastoy." />
<meta name="keywords" content="littérature basque, livres, recueils, récits, poésie, sorcières, histoire, Guernica, solstice, maudites, textes de chanson, pensées, rédaction d'articles, Pyrène" />
<title>Site de l'écrivain Gracianne Hastoy</title>
<link rel="stylesheet" href="../scripts/hastoy.css" type="text/css" />
<!--<?php include('../menu.php'); ?>-->
</head>
<body>
<div id="titre" style="position:absolute; visibility:visible; z-index:100;">
  <table width="100%" border="0" cellspacing="0" cellpadding="1">
    <tr>
      <td width="2%">&nbsp;</td>
      <td width="5%"><img src="../images/Gracianne_Hastoy_Titre.gif" width="36" height="50" alt="Gracianne Hastoy" title="Gracianne Hastoy" /></td>
      <td><h1>Gracianne Hastoy </h1></td>
      <td width="10%">&nbsp;</td>
    </tr>
  </table>
</div>

<div id="global" style="position:absolute; visibility:visible; z-index:1;">
  <table width="100%"  border="0" cellspacing="0" cellpadding="6">
    <tr>
      <td colspan="4"><h3 align="center"> Agenda de l'auteur. </h3>

<?php  
 // Infos de connexion à la BDD et affichage des boutons Précédent et Suivant
require 'Fonctions_Agenda.php';

 // connection à la BDD
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table
mysql_query ($sql);
// mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error() );

 // on ajoute le texte issu du formulaire dans la table agenda
$sql = ('INSERT INTO agenda ID, Lien, Source, Date, Titre_Page, Stitre1, Stitre, Info VALUE "'.$ID.'", "'.$Lien.'", "'.$Source.'", "'.$Date.'", "'.$Titre_Page.'", "'.$Stitre1.'", "'.$Stitre.'", "'.$textarea.'"');

  // si ça ne se passe pas bien on affiche une erreur
or die ('Erreur : '.mysql_error() );

 // sinon on affiche un message prévénant l'utilisateur que c'est OK avec le titre-lien et le titre de page !
else
{
   echo 'le nouvel événement à été enregistré dans l\'agenda : '.$_POST['Lien'].' concernant la page '.$_POST['Titre_Page']'';  
}
 // on ferme la connexion à la base
  mysql_close(); 

 // Puis on redirige le rédacteur vers le formulaire en cas d'ajout d'un second événement dans son agenda :
header('Location: Formulaire.php');

 ?>  
	  </td>
    </tr>
  </table>
<hr>
  <table width="100%"  border="0" cellpadding="6" cellspacing="0">
    <tr>
      <td width="16%" align="center"><img src="../images/sign-graci.gif" width="134" height="40" /></td>
      <td  width="84%" class="copy"><strong>Tous droits réservés par Gracianne Hastoy </strong>Aucune partie de ce site ne peut être reproduite, sous quelque forme que ce soit, sans l'autorisation de l'auteur.</td>
    </tr>
    <tr>
      <td width="16%" align="center" class="maj"><?
print("Modifié le ");
print(date("d - m - Y", filemtime($SCRIPT_FILENAME)));
?>
      </td>
      <td  width="84%"><div align="right"><a href="javascript:history.go(-1)"><img src="../images/Btn_Retour.gif" width="29" height="22" border="0" alt="Page précédente" title="Page précédente" /></a>&nbsp;&nbsp;&nbsp;&nbsp; Ce site est audité par:
            <script language="javascript" src="../scripts/xiti.js" type="text/javascript"></script>
      </div></td>
    </tr>
  </table>
</div>
</body>
</html>

Merci déjà à ceux qui ont essayé de m'aider mais là, je suis trop perturbé pour tenter quoi que ce soit.





Le bonheur est la seule chose que l'on peut donner sans l'avoir.

12 réponses

.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
15 déc. 2010 à 14:37
il faudrai l'erreur complete

dans le texte d'erreur que tu poste, il doit y avoir le nom du fichier et le numero de la ligne ou l'erreur est située

alor poste le ligne en question stp
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 14:43
Oups ! c'est vrai (c'est dire combien je suis perdu....
Parse error: syntax error, unexpected T_LOGICAL_OR in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 56

Merci encore parceque je n'en peux plus...

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
15 déc. 2010 à 14:47
essai d'ecrire ta requete sql comme suit

$sql = ('INSERT INTO agenda (ID, Lien, Source, Date, Titre_Page, Stitre1, Stitre, Info) VALUE ("'.$ID.'", "'.$Lien.'", "'.$Source.'", "'.$Date.'", "'.$Titre_Page.'", "'.$Stitre1.'", "'.$Stitre.'", "'.$textarea.'")');

j'ai rajouter des parentheses
essaye comme sa et dit ce que sa donne
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 15:05
Désolé mais c'est exactement pareil à savoir:
Parse error: syntax error, unexpected T_LOGICAL_OR in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 56

C'est pas dieu possible. Je vais "peter" un câble !
En tous cas merci de ton soutient.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
Modifié par .Zoro. le 15/12/2010 à 15:11
je crois avoir trouvé

$sql = ('INSERT INTO agenda ID, Lien, Source, Date, Titre_Page, Stitre1, Stitre, Info VALUE "'.$ID.'", "'.$Lien.'", "'.$Source.'", "'.$Date.'", "'.$Titre_Page.'", "'.$Stitre1.'", "'.$Stitre.'", "'.$textarea.'"');

// si ça ne se passe pas bien on affiche une erreur
or die ('Erreur : '.mysql_error() );

tu utilise la condition "or die" pour parer aux erreurs mais tu as fermé la requete

supprime le point-virgule au bout de ta requete sql
je l'ai mis en gras
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 15:24
Parse error: syntax error, unexpected T_ELSE in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 59
et le code php:
<?php  
 // Infos de connexion à la BDD et affichage des boutons Précédent et Suivant
require 'Fonctions_Agenda.php';

 // connection à la BDD
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table
mysql_query ($sql);
// mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error() );

 // on ajoute le texte issu du formulaire dans la table agenda
$sql = ('INSERT INTO agenda (ID, Lien, Source, Date, Titre_Page, Stitre1, Stitre, Info) VALUE ("'.$ID.'", "'.$Lien.'", "'.$Source.'", "'.$Date.'", "'.$Titre_Page.'", "'.$Stitre1.'", "'.$Stitre.'", "'.$textarea.'")') 

  // si ça ne se passe pas bien on affiche une erreur
or die ('Erreur : '.mysql_error() );

 // sinon on affiche un message prévénant l'utilisateur que c'est OK avec le titre-lien et le titre de page !
else
{
   echo 'le nouvel événement à été enregistré dans l\'agenda : '.$_POST['Lien'].' concernant la page '.$_POST['Titre_Page']'';  
}
 // on ferme la connexion à la base
  mysql_close(); 

 // Puis on redirige le rédacteur vers le formulaire en cas d'ajout d'un second événement dans son agenda :
header('Location: Formulaire.php');

 ?>  

La ligne 59 est celle du else (en gras).

Je crois que j'ai tout essayé (y compris ta manière d'écrire la requete). Voici le site en question:
http://editionsgracianne.free.fr/presse/Formulaire.php (user= test et pass = toto)
Les boutons souligné ne fonctionne pas et Citation me provoque des retours chariot non souhaité (mais là c'est du javascript (si tu veux le code complet pour faire la même chose, je te l'envoi ou le colle ici).

Merci encore pour ta patience !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 15:27
Au fait cela devrait donner comme sur ma page perso sur les prénoms basques et leur origine:
http://abarka.free.fr/index.php?page=Intro_Prenoms&lang=Fr

Tu te rends compte ? J'ai fait ça mais la seule chose que je n'ai pas réalisé encore c'est de renseigner une table via un formulaire.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
15 déc. 2010 à 15:56
pour ta deuxieme erreur sur le else

tu a oublié de fermer le IF avant de passer au ELSE

met un } avant le else
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 17:22
Salut kadeh et merci pour ton intervention,

Beaucoup d'méliorations depuis ton aide mais maintenant j'ai plein de warning dont la plupart sont cachés mais je pense que c'est les mêmes que ceux ci-dessous à savoir les déclarations de variables.
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 9


LIGNE 9: $Stitre = mysql_real_escape_string(htmlspecialchars($_POST['Stitre'])); par exemple

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 10

D'autre, à l'intérieur du form apparement:
Warning: main(Fonctions_Agenda.php) [function.main]: failed to open stream: No such file or directory in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 44
Et la ligne 44:
require 'Fonctions_Agenda.php';

Fatal error: main() [function.require]: Failed opening required 'Fonctions_Agenda.php' (include_path='/mnt/171/sda/4/e/editionsgracianne/include:.:/usr/php4/lib/php') in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 44

Normalement le menu qui apparait sur la gauche ne devrait pas apparaitre. Pourquoi est-il là ? (J'ai mis
<!--<?php include('../menu.php'); ?>-->

en commentaire dans la page).
Je te laisse regarder par toi-même sur: http://editionsgracianne.free.fr/presse/Formulaire.php (user = test et pass = toto).
Un grand merci encore. Je commence à voir je jour après tant d'heures à chercher partout (forums, tutos etc...)

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
15 déc. 2010 à 21:55
mysql_real_escape_string() se fait après mysql_connect() pas avant.

Warning: main(Fonctions_Agenda.php) [function.main]: failed to open stream: No such file or directory in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 44

require ('chemin/Fonctions_Agenda.php');

vérifier si le fichier "Fonctions_Agenda.php" est au bon répertoire.

pour commenter du php, utiliser plutot // ou /**/
<?php // include('../menu.php'); ?>

@+
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 23:08
Merci les gars, ça avance. Mais encore 2 soucis:
1-: cette phrase ne s'affiche pas correctement "le nouvel événement à été enregistré dans l'agenda concernant la page :" dont voici le code:
// on prévient l'utilisateur que l'enregistrement s'est bien déroulé
      echo 'le nouvel événement '.$_Lien.' à été enregistré dans l\'agenda concernant la page : '.$_Titre.'';


Ensuite, mais j'y pense maintenant, il vaudrait mieux mettre un bouton pour retourner au formulaire plutôt que cette ligne:
// Puis on redirige le rédacteur vers le formulaire en cas d'ajout d'un second événement dans son agenda :
 header('Location: Formulaire.php');
qui me provoque l'erreur ci-dessous.
Warning: Cannot modify header information - headers already sent by (output started at /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php:18) in /mnt/171/sda/4/e/editionsgracianne/presse/Traitement_Agenda.php on line 69

Qu'imagineriez-vous, vous dans ce cas précis ? Je pense (mais n'en suis pas sur du tout) que même si cela fonctionnait, l'utilisateur n'aurait pas le temps de voir le message signalant que l'enregistrement s'est bien déroulé. Je me trompe ?

Merci encore.


Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
16 déc. 2010 à 09:13
pourquoi demande tu les variables "$_Titre" et $_Lien

ecrit tout simplement "$Titre" et "$Lien"
comme tu les a declarées.


ensuite
pour ta redirection

tu as le choix :

soit tu laiise l'utilisateur sur la page avec un lien pour en sortir (ce que tu dit)

ou alor une technique que j'utilise pour mes scripts:
j'utilise la tamporisation de sortie
http://www.siteduzero.com/tutoriel-3-38102-la-tamporisation-de-sortie-en-php.html
le principe est que rien n'est envoyé au clien tant que le script ou la generation n'est pas terminée.
donc, adieu les soucis avec "header already send by"
et pour le message
je l'enregistre dans une variable de session pour l'afficher sur la page suivante.
0
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
16 déc. 2010 à 12:53
Bonjour,
<?php
function redirect($url, $time=3)
{     
   //On vérifie si aucun en-tête n'a été envoyé    
   if (!headers_sent())
   {
     header("refresh: $time;url=$url");
     exit;
   }
   else
   {
     echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
   }
}
// puis pour faire la redirection n'importe où dans la page.
redirect("Formulaire.php","5"); 
?>

@+
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
16 déc. 2010 à 14:52
Bonjour Kadeh,
C'est super ! mais je crois que je vais garder le bouton Retour au formulaire. Je verrai avec elle mais ça laisse le temps de lire le résumé (bien que je peux allonger la $time).
Cependant, j'ai encore des soucis:
1- si le texte contient des apostrophes (dans les variables) il me les affiche. Essaie ici: http://editionsgracianne.free.fr/presse/Formulaire.php (user=test et pass=toto). J'ai essayé avec htmlspecialchars mais ça ne fonctionne pas. ?.
La ligne correspondante est celle-ci:
// on prévient l'utilisateur que l'enregistrement s'est bien déroulé
echo 'le nouvel événement "<strong> '.$Lien.'</strong>" à été enregistré dans l\'agenda concernant la page "<strong>'.$Titre.'</strong>"'; 

2- Les dates s'écrivent, sur la table, sous la forme 0000-00-00 (que des zéros) et ce quelque soit la façon de saisir, le petit calendrier ou la saisie manuelle.
Merci beaucoup pour ton script il me servira sans doute dans d'autres circonstances.
0
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
19 déc. 2010 à 03:37
Bonjour,
"1- si le texte contient des apostrophes (dans les variables) il me les affiche."
Vous parlez de l'affichage des apostrophes ou des antislashs??
L'antislash est ajouté automatiquement par ce que Les guillemets magiques sont activés sur votre hébergement . pour enlever l'antislash à l'affichage utilisez stripslashes():
echo 'le nouvel événement à été enregistré dans l\'agenda : '.htmlentities(stripslashes($_POST['Lien'])).' concernant la page '.htmlentities(stripslashes($_POST['Titre_Page'])).'';

// pour afficher correctement les données provenant d'un formulaire et ce quelque soit  la configuration de la directive php magic_quotes_gpc (on/off):

if (get_magic_quotes_gpc()) {
    // magic_quotes_gpc activé
    echo(htmlentities(stripslashes($_POST['variable'])));
}
else {
    // magic_quotes_gpc désactivé
    echo(htmlentities($_POST['variable']));
}


"2- Les dates s'écrivent, sur la table, sous la forme 0000-00-00 (que des zéros) et ce quelque soit la façon de saisir, le petit calendrier ou la saisie manuelle. "
- " Le format d'une valeur de DATE est 'YYYY-MM-DD'. En accord avec ANSI SQL, aucun autre format n'est autorisé."
- MySQL - Fonctions de dates et d'heures
- PHP - Fonction date
$Date = mysql_real_escape_string(date("Y-m-d",strtotime($_POST['Date'])));

@+
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
19 déc. 2010 à 14:27
Merci kadeh,
j'avais mis le htmlentities mais SANS le stripslashes .
Par contre le fait qu'il n'y ait que des 00 ça ce n'est pas normal (je ne parle pas du format, je sais bien que c'est yyyy-mm-dd) mais je n'ai que des zéros (les chiffres 0).
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
15 déc. 2010 à 23:17
Oups ! mauvaise idée. Ça oblige a retaper le user et le pass à chaque fois. Faut que je trouve autre chose.


Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
kadeh Messages postés 334 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 15 novembre 2012 92
15 déc. 2010 à 16:27
Bonjour,

// $sql doit être déclaré avant mysql_query ($sql);
$sql = ('INSERT INTO agenda (ID, Lien, Source, Date, Titre_Page, Stitre1, Stitre, Info) VALUE ("'.$ID.'", "'.$Lien.'", "'.$Source.'", "'.$Date.'", "'.$Titre_Page.'", "'.$Stitre1.'", "'.$Stitre.'", "'.$textarea.'")') ;

mysql_query ($sql) /*si ça ne se passe pas bien on affiche une erreur*/ or die ('Erreur : '.mysql_error() );

or die en cas d'échec, et else c'est quoi ??
normalement c'est la même chose.
sinon employez (if et else) au lieu de "or die".
vous pouvez consulter cet article: Gérer les erreurs MySQL en PHP sans or die
@+
-1