par
ed_013 » 11 août 2008, 16:25
Bonjour,
Me voila face à un nouveau probleme :
J'ai un formulaire permettant de renseigner des données pour une personne, un des champs de ce formulaire est un champ (select multiple) "theme" composé de plusieurs items. Chaque personnes peu avoir plusieurs themes.
Lors de la creation, je mets ces themes dans un select multiple, qui se rempli via une base de données grace a ce bout de code.
Code : Tout sélectionner
<?php
include 'connect.php';
$sql_theme = " SELECT theme FROM themes order by theme asc ";
$result_theme = mysql_query($sql_theme) or die("Requete pas comprise");
echo "Theme : <select name='theme[]' size='4' multiple>";
while ($row=mysql_fetch_array($result_theme))
{
echo"<option>$row[0]</option>";
}
echo"</select>";
?>
Lors de la sauvegarde de ce champ multiple dans la base de données, j'avais toujours une inscription "array" à la place de ce champ multiple (ce qui est normal, c'est un tableau). Pour eviter ce probleme, je l'ai donc inscrit de cette facon
Code : Tout sélectionner
if (isset($_POST['theme'])) {$tab_theme = implode(", ", $_POST['theme']);} else {$tab_theme='';}
Ce qui m'inscrit les differents elements du theme, encadrée par des virgules.
Vient la modification de ce theme (je veux que les items selectionnés soit marqués par defaut, d'ou le sujet que j'avais crée la
http://www.phpfrance.com/forums/voir_sujet-242155.php), Je recré donc un tableau avec ceci, la modification se passe sans probleme :
Code : Tout sélectionner
<?php
include 'connect.php';
$theme = explode(", ", $row_general[15]);
$sql_theme = " SELECT theme FROM themes order by theme asc ";
$result_theme = mysql_query($sql_theme) or die("Requete pas comprise");
echo "Theme : <select name='theme[]' size='4' multiple>";
while ($row=mysql_fetch_array($result_theme))
{
if (in_array($row[0], $theme))
{
echo"<option selected='selected'>$row[0]</option>";
}
else
{
echo"<option>$row[0]</option>";
}
}
echo"</select>";
echo "<br>";
?>
Le probleme commence maintenant :
Je crée donc un personne concernéé par 3 themes par ex: T1, T2, T3
Dans ma base de données, le champ theme de cette personne contient la valeur T1, T2, T3 crée par l'implode
Je veux faire une requete cherchant les personnes concernées par T1 et T2, cette personne doit donc apparaitre dans le resultat.
Mon systeme de requete dynamique me genere une requete quand je selectionne T1 et T2 du style
Select personnne from table where theme=T1 and theme=T2
Ce qui ne me donne rien
Petite precision, tout marchait bien avant que je n'affiche les champs par defaut dans les select a choix par multiple lors de la modification.
Desolé pour le pâvé
Bonjour,
Me voila face à un nouveau probleme :
J'ai un formulaire permettant de renseigner des données pour une personne, un des champs de ce formulaire est un champ (select multiple) "theme" composé de plusieurs items. Chaque personnes peu avoir plusieurs themes.
Lors de la creation, je mets ces themes dans un select multiple, qui se rempli via une base de données grace a ce bout de code.
[code]
<?php
include 'connect.php';
$sql_theme = " SELECT theme FROM themes order by theme asc ";
$result_theme = mysql_query($sql_theme) or die("Requete pas comprise");
echo "Theme : <select name='theme[]' size='4' multiple>";
while ($row=mysql_fetch_array($result_theme))
{
echo"<option>$row[0]</option>";
}
echo"</select>";
?>
[/code]
Lors de la sauvegarde de ce champ multiple dans la base de données, j'avais toujours une inscription "array" à la place de ce champ multiple (ce qui est normal, c'est un tableau). Pour eviter ce probleme, je l'ai donc inscrit de cette facon
[code]
if (isset($_POST['theme'])) {$tab_theme = implode(", ", $_POST['theme']);} else {$tab_theme='';}
[/code]
Ce qui m'inscrit les differents elements du theme, encadrée par des virgules.
Vient la modification de ce theme (je veux que les items selectionnés soit marqués par defaut, d'ou le sujet que j'avais crée la http://www.phpfrance.com/forums/voir_sujet-242155.php), Je recré donc un tableau avec ceci, la modification se passe sans probleme :
[code]
<?php
include 'connect.php';
$theme = explode(", ", $row_general[15]);
$sql_theme = " SELECT theme FROM themes order by theme asc ";
$result_theme = mysql_query($sql_theme) or die("Requete pas comprise");
echo "Theme : <select name='theme[]' size='4' multiple>";
while ($row=mysql_fetch_array($result_theme))
{
if (in_array($row[0], $theme))
{
echo"<option selected='selected'>$row[0]</option>";
}
else
{
echo"<option>$row[0]</option>";
}
}
echo"</select>";
echo "<br>";
?>
[/code]
Le probleme commence maintenant :
Je crée donc un personne concernéé par 3 themes par ex: T1, T2, T3
Dans ma base de données, le champ theme de cette personne contient la valeur T1, T2, T3 crée par l'implode
Je veux faire une requete cherchant les personnes concernées par T1 et T2, cette personne doit donc apparaitre dans le resultat.
Mon systeme de requete dynamique me genere une requete quand je selectionne T1 et T2 du style
Select personnne from table where theme=T1 and theme=T2
Ce qui ne me donne rien :cry:
Petite precision, tout marchait bien avant que je n'affiche les champs par defaut dans les select a choix par multiple lors de la modification.
Desolé pour le pâvé