Ma syntaxe heredoc ne fonctionne pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ma syntaxe heredoc ne fonctionne pas

par artotal » 08 juin 2006, 21:05

Terrible :)
Merci

par Cyrano » 08 juin 2006, 20:27

Ce sont les espace en début de ligne qui mettent la zone : proposition de corrigé :
function ecrire_formulaire() {
    print <<<FORM
<form method="post" action="{$_SERVER['PHP_SELF']}">
  <p><input type="text" name="domaine" />
  Le domaine que vous aimeriez avoir</p>
  <p>
  <input type="text" name="mail" />
  Votre adress e-mail
  </p>
  <p>
  <input type="text" name="nom" />
  Votre nom
  </p>            
  <p><select name="sexe">
    <option value="F">Femme</option>
    <option value="M">Homme</option>            
  </select></p>
  <p>
  <input type="text" name="projet" />
  Votre projet
  </p>            
  <p><input type="submit" value="Envoyer la came !" /></p>
</form>
FORM;
}

par artotal » 08 juin 2006, 15:17

Sa passe pas, je laisse tomber, merci.
edit :
Mais bon si sa marche les possibilité sont cool, j'ai un script de langue sa m'aurrait permit de metre la trduction dans les variavles sa aurrai été pas mal ;-((

par Ryle » 08 juin 2006, 14:51

Essaye de coller ton FORM; fermant le heredoc au début de la ligne (vire tout ce qui est espace où tabulation)

J'avais eu un problème similaire en shell, les tabulations qui précédaient l'empêchait de trouver la fin des commandes, peut être est-ce la même chose pour toi :)

par artotal » 08 juin 2006, 14:09

c'est bien la syntaxe heredoc puisque j'ai mis un print et sa marche
function ecrire_formulaire() {
		print "
			<form method=\"post\" action=\"$PHP_SELF\">
			<p><input type=\"text\" name=\"domaine\" />
			Le domaine que vous aimeriez avoir</p>
			<p>
			<input type=\"text\" name=\"mail\" />
			Votre adress e-mail
			</p>
			<p>
			<input type=\"text\" name=\"nom\" />
			Votre nom
			</p>			
			<p><select name=\"sexe\">
			<option value=\"F\">Femme</option>
			<option value=\"M\">Homme</option>			
			</select></p>
			<p>
			<input type=\"text\" name=\"projet\" />
			Votre projet
			</p>			
			<p><input type=\"submit\" value=\"Envoyer la came !\" /></p>
			</form>
			"; }	
J'ai poster sans m'apreçevoir que j'étais inscrit, dsl.

Ma syntaxe heredoc ne fonctionne pas

par Invité » 08 juin 2006, 13:52

Bonjour,
j'ai une erreur dans la fonction ecrire_formulaire(); mais je ne vois pas la coquille

Code : Tout sélectionner

Parse error: syntax error, unexpected $end in C:\apachefriends\xampp\htdocs\projet\ajout_saisie.php on line 80
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <title>ajout de l'utilisateur</title>
  <style type="text/css">
  @import "#.css";
  </style>
<script type="text/javascript"></script>
</script>
</head>
<body>
<?php
if (!empty($_REQUEST['sexe']) && !empty($_REQUEST['domaine'])
 && !empty($_REQUEST['mail']) && !empty($_REQUEST['nom']) && !empty($_REQUEST['projet'])) 
 {
		 // on vérifie la saisie des utilisateur à cette endroit !
		 $erreurbdd="";
		 $ret=ajout_dans_base ($_REQUEST['domaine'], $_REQUEST['sexe'],
		 $_REQUEST['mail'], $_REQUEST['nom'], $_REQUEST['projet'], $erreurbdd);
		 if (!$ret) {
			print "erreur: $erreurbdd<br />\n";
	} else {
		print "Merci beaucoups<br />";
		}
	} else {
		ecrire_formulaire();
}
include ("inc/connexion.inc.php");
function ajout_dans_base($domaine, $sexe, $mail, &$erreurbdd) {
$domaine=mysql_real_escape_string($domaine); //Protège les caractères spéciaux d'une commande SQL
$sexe=mysql_real_escape_string($sexe);
$nom=mysql_real_escape_string($nom);
$projet=mysql_real_escape_string($projet);
$mail=mysql_real_escape_string($mail);
$lien=mysql_connect($serveur, $login, $mdp);
if (!$lien) {
	$erreurbdd=mysql_error();
	return false;
	}
if (!mysql_select_db($db1, $lien)) {
	$erreurbdd=mysql_error();
	return false;
}
$requete="insert into latable(domaine, sexe, mail, nom, projet) values
 ('$domaine', '$sexe', '$mail', '$nom', '$projet')";
 if(!mysql_query($requete, $lien)) {
	$erreurbdd=mysql_error();
	return false;
	}
	return true; 
}


function ecrire_formulaire() {
		print <<<FORM
			<form method="post" action="{$_SERVER['PHP_SELF']}">
			<p><input type="text" name="domaine" />
			Le domaine que vous aimeriez avoir</p>
			<p>
			<input type="text" name="mail" />
			Votre adress e-mail
			</p>
			<p>
			<input type="text" name="nom" />
			Votre nom
			</p>			
			<p><select name="sexe">
			<option value="F">Femme</option>
			<option value="M">Homme</option>			
			</select></p>
			<p>
			<input type="text" name="projet" />
			Votre projet
			</p>			
			<p><input type="submit" value="Envoyer la came !" /></p>
			</form>
			FORM;
			}				
?>
</body></html>
Merci d'avance.[/code]