Balise OPTION avec l'attribut SELECTED
Résolu
sabdoul
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
sabdoul -
sabdoul -
Bonjour, depuis ce matin je suis bloqué sur une erreur de syntaxe que je n'arrive pas a régler. il me semble que la syntaxe de mon code est correct mais dans le navigateur j'ai ce message d'erreur: Parse error: syntax error, unexpected '?'
voici mon code:
/* cree une liste déroulante */
function createList($tableName, $numCol)
{$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$champ = odbc_result($this->rst,1);
echo $champ;
$ch = $ch . "<OPTION VALUE = "<?php echo $champ ;?>" "<?php if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}?>" >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
j'ai crée une fonction qui permettra d'afficher une liste déroulante dynamiquement mais l'erreur survient au niveau de la balise OPTION car j'aimerais utilisé la l'attribut selected mais j'ai c messaged'erreur( Parse error: syntax error, unexpected '?') a cette ligne
voici mon code:
/* cree une liste déroulante */
function createList($tableName, $numCol)
{$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$champ = odbc_result($this->rst,1);
echo $champ;
$ch = $ch . "<OPTION VALUE = "<?php echo $champ ;?>" "<?php if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}?>" >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
j'ai crée une fonction qui permettra d'afficher une liste déroulante dynamiquement mais l'erreur survient au niveau de la balise OPTION car j'aimerais utilisé la l'attribut selected mais j'ai c messaged'erreur( Parse error: syntax error, unexpected '?') a cette ligne
A voir également:
- Balise OPTION avec l'attribut SELECTED
- Option d'ergonomie - Guide
- Option volte/vowifi - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
- Cette option de connexion est désactivée - Forum Ordinateurs
- Selected file is not a proper bios ✓ - Forum Windows 10
15 réponses
Bonjour,
afin le dernier code de le père fonctionne.
Merci a tous de m'avoir aider et continuons tous a aider les autres.
merci une fois encore a tous.
Voici le code finalisé
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo "<OPTION "; if(!isset($_POST["Ch1"])) {$_POST["Ch1"]='chaine de caractère';}
if($champ==$_POST["Ch1"]) { echo "selected= 'selected'";}
echo " VALUE = '" . $champ . "'>". $champ . "</OPTION>";
}
echo "</SELECT>";
}
}
afin le dernier code de le père fonctionne.
Merci a tous de m'avoir aider et continuons tous a aider les autres.
merci une fois encore a tous.
Voici le code finalisé
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo "<OPTION "; if(!isset($_POST["Ch1"])) {$_POST["Ch1"]='chaine de caractère';}
if($champ==$_POST["Ch1"]) { echo "selected= 'selected'";}
echo " VALUE = '" . $champ . "'>". $champ . "</OPTION>";
}
echo "</SELECT>";
}
}
Bonjour sabdoul,
function createList .. elle est incomplète où j'ai mal vu !!
Édit:
Pourquoi avoir ajouté des balises php ouvrante et fermante dans le code .. puisque c'est tout php ?
function createList .. elle est incomplète où j'ai mal vu !!
Édit:
Pourquoi avoir ajouté des balises php ouvrante et fermante dans le code .. puisque c'est tout php ?
oui j'ai pensé a l'utilisation de la balise php dans le code mais ça ne règle pas le problème.
quant à la function createlist elle est correct sauf qu'il y'a une balise fermente qui manque
quant à la function createlist elle est correct sauf qu'il y'a une balise fermente qui manque
Bonjour,
Quand vous faites un echo, comme ici $ch = $ch . "<OPTION VALUE = " echo $champ ;" ", la variable $champ ; sera affichée dans la page mais pas dans la liste déroulante !!
Quand vous faites un echo, comme ici $ch = $ch . "<OPTION VALUE = " echo $champ ;" ", la variable $champ ; sera affichée dans la page mais pas dans la liste déroulante !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non le problème se trouve pas au niveau de l'accolade fermente c'est dans le copier/coller que j'ai oublier la partie. sinon quand j'enlève les balises [ et les différents attributs au sein de la balise OPTION tous fonctionne correctement mais j'ai d'utilisé l'attribut selected pour pouvoir resté sur le nom sélectionne dans la liste
sinon voici le code rectifié
/* cree une liste déroulante */
function createList($tableName, $numCol)
{$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$champ = odbc_result($this->rst,1);
echo $champ;
$ch = $ch . "<OPTION " if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}" VALUE = " echo $champ ;" >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
}
/* cree une liste déroulante */
function createList($tableName, $numCol)
{$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$champ = odbc_result($this->rst,1);
echo $champ;
$ch = $ch . "<OPTION " if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}" VALUE = " echo $champ ;" >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
}
le problème est que j'ai une erreur qui s'affiche a l'ecran m'indiquant qu'il ya une erreur de syntaxe au ligne de la balise option
Est-ce vous attrapez des verrues quand vous dites "Bonjour" ?
Édit:
Vous confondez HTML et PHP .. et vous ne travaillez qu'avec le langage PHP
J'ai décomposé cette partie de code pour mieux comprendre:
Édit:
Vous confondez HTML et PHP .. et vous ne travaillez qu'avec le langage PHP
J'ai décomposé cette partie de code pour mieux comprendre:
$ch = $ch . "<OPTION " if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}" VALUE = " echo $champ ;" >". $champ . "</OPTION>";:
$ch = $ch . "<OPTION " if($champ == $_POST["Ch1"]) { echo "SELECTED='SELECTED'"; } " VALUE = " echo $champ ;" >". $champ . "</OPTION>";.. N'y a-t-il pas quelque chose qui cloche ?
bonjour Helliot,
je vois pas ce qui cloche malheureusement car la syntaxe et le code me semble correct sauf que j'ai une erreur de syntaxe dont je vois pas.
la $ch contient "<OPTION " if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}" VALUE = " echo $champ ;" >". $champ . "</OPTION>"; et ensuite on l'affiche juste avant la fermeture de la balise select.
quand au code lui même lorsqu'on sélectionne un champ et qu'on l'envoi a travers le $_post ce champ est comparé a la variable $champ avant de faire de selected auparavant la valeur chaque champ est identifié a travers la l'attribut VALUE.
j'espère que vous compreniez bien maintenant. merci de ton aide
je vois pas ce qui cloche malheureusement car la syntaxe et le code me semble correct sauf que j'ai une erreur de syntaxe dont je vois pas.
la $ch contient "<OPTION " if($champ == $_POST["Ch1"]){ echo "SELECTED='SELECTED'";}" VALUE = " echo $champ ;" >". $champ . "</OPTION>"; et ensuite on l'affiche juste avant la fermeture de la balise select.
quand au code lui même lorsqu'on sélectionne un champ et qu'on l'envoi a travers le $_post ce champ est comparé a la variable $champ avant de faire de selected auparavant la valeur chaque champ est identifié a travers la l'attribut VALUE.
j'espère que vous compreniez bien maintenant. merci de ton aide
Bonsoir sabdoul,
Bienvenue chez les fous !
Essayez ceci:
Bienvenue chez les fous !
Essayez ceci:
/* cree une liste déroulante */ function createList($tableName, $numCol) { //$sql = "SELECT " . $numCol . " FROM " . $tableName ; //$this->executeRq($sql); $rst = array("Premier","Deuxième","Troisième","Quatrième"); if($this->rst) { //$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */ echo '<SELECT NAME="Ch1">'; $ch=""; //while (odbc_fetch_row($this->rst)) foreach ( $tab as $champ ) { //$champ = odbc_result($this->rst,1); //echo $champ; $ch = $ch . "<OPTION " if($champ == $_POST["Ch1"]) { $ch = $ch . "SELECTED='SELECTED'"; } $ch = $ch . " VALUE = " .$champ . " >". $champ . "</OPTION>"; echo $ch; } echo "</SELECT>"; } }
Bonjour Helliot,
Vous avez mis des lignes en commentaire au ces lignes sont nécessaire. je précise que travaille sur une base de données ODBC.
Donc je vous met tous le code que j'ai adapté a votre suggestion mais ce toujours ce message d'erreur(Parse error: syntax error, unexpected 'if' (T_IF) ) au niveau de la ligne de IF.
Voici le code avec la class elle même comportant la fonction de connexion ainsi que la fonction de création de la liste
<?php
class phpOracle
{var $nomUser, $password, $db;
var $rst;
/*connexion à la BD et exécution d'une requête*/
function executeRq($sql)
{/* se connecter a la base ODBC*/
require_once("connect.php"); //inclut le fichier une seule fois
$this->db = DSN;
$this->nomUser = Nom;
$this->password = MPasse;
$connexion = odbc_connect($this->db, $this->nomUser, $this->password);
if(!$connexion)
{echo "Désolé, connexion au serveur impossible\n";
exit;
}
/* executer la requete sur la connection et placer le resultat dans le tableau rst*/
$this->rst = odbc_do($connexion,$sql);
}
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo $champ ;
$ch = $ch . "<OPTION "
if($champ == $_POST["Ch1"])
{
$ch = $ch . "SELECTED='SELECTED'";
}
$ch = $ch . " VALUE = " .$champ . " >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
Vous avez mis des lignes en commentaire au ces lignes sont nécessaire. je précise que travaille sur une base de données ODBC.
Donc je vous met tous le code que j'ai adapté a votre suggestion mais ce toujours ce message d'erreur(Parse error: syntax error, unexpected 'if' (T_IF) ) au niveau de la ligne de IF.
Voici le code avec la class elle même comportant la fonction de connexion ainsi que la fonction de création de la liste
<?php
class phpOracle
{var $nomUser, $password, $db;
var $rst;
/*connexion à la BD et exécution d'une requête*/
function executeRq($sql)
{/* se connecter a la base ODBC*/
require_once("connect.php"); //inclut le fichier une seule fois
$this->db = DSN;
$this->nomUser = Nom;
$this->password = MPasse;
$connexion = odbc_connect($this->db, $this->nomUser, $this->password);
if(!$connexion)
{echo "Désolé, connexion au serveur impossible\n";
exit;
}
/* executer la requete sur la connection et placer le resultat dans le tableau rst*/
$this->rst = odbc_do($connexion,$sql);
}
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo $champ ;
$ch = $ch . "<OPTION "
if($champ == $_POST["Ch1"])
{
$ch = $ch . "SELECTED='SELECTED'";
}
$ch = $ch . " VALUE = " .$champ . " >". $champ . "</OPTION>";
}
echo $ch;
echo "</SELECT>";
}
Bonjour sabdoul,
Quel if ?
message d'erreur(Parse error: syntax error, unexpected 'if' (T_IF) ) au niveau de la ligne de IF ..
if(!$connexion) ?
if($this->rst) ?
if($champ == $_POST["Ch1"]) ?
Quel if ?
message d'erreur(Parse error: syntax error, unexpected 'if' (T_IF) ) au niveau de la ligne de IF ..
if(!$connexion) ?
if($this->rst) ?
if($champ == $_POST["Ch1"]) ?
Bonjour,
j'ai modifié le code pour le simplifie mais toujours le même problème avec le if dans la balise option.
Je précise sans la balise la condition if la balise le code fonctionne normalement mais moi j'aimerais utilisé l'attribut SELECTED pour pouvoir resté sur le champ sélectionne après la sélection.
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo "<OPTION "if($champ==$_POST["Ch1"]) { "selected= 'selected'";}" VALUE = '" . $champ . "'>". $champ . "</OPTION>";
}
echo "</SELECT>";
}
}
j'ai modifié le code pour le simplifie mais toujours le même problème avec le if dans la balise option.
Je précise sans la balise la condition if la balise le code fonctionne normalement mais moi j'aimerais utilisé l'attribut SELECTED pour pouvoir resté sur le champ sélectionne après la sélection.
/* cree une liste déroulante */
function createList($tableName, $numCol)
{ $i=1;
$sql = "SELECT " . $numCol . " FROM " . $tableName ;
$this->executeRq($sql);
if($this->rst)
{$nbCols = odbc_num_fields($this->rst); /*nb colonne de la table */
$ch="";
echo '<SELECT NAME="Ch1">';
while (odbc_fetch_row($this->rst))
{$i++;
$champ = odbc_result($this->rst,1);
echo "<OPTION "if($champ==$_POST["Ch1"]) { "selected= 'selected'";}" VALUE = '" . $champ . "'>". $champ . "</OPTION>";
}
echo "</SELECT>";
}
}