J'essaie de créer un formulaire avec un menu déroulant. Les valeurs du formulaire sont ensuite stockées dans une base de données. Je veux être en mesure de changer les valeurs du formulaire plus tard, et ce faisant en revenant au formulaire, qui est rempli avec les valeurs entrées dans la base de données.Comparaison d'une chaîne dans une base de données SQL avec une chaîne "normale"
Tout semble fonctionner, sauf pour le menu déroulant. Comme je veux que tous les champs soient remplis avec les valeurs correctes, cela vaut également pour le menu. J'ai donc essayé d'utiliser la comparaison de chaînes dans les clauses if-else pour déterminer quelle option choisir comme sélectionnée. Mais la comparaison de chaînes ne fonctionne pas. Voici un exemple de code:
$query = mysql_query(SELECT * FROM data);
$result = mysql_fetch_assoc($query);
if(strcmp($result['pet'],"Dog")==0)
{
echo "
<option value='Dog' selected>Dog</option>
<option value='Cat'>Cat</option>
<option value='Bird'>Bird</option>
";
}
elseif(strcmp($result['pet'],"Cat")==0)
{
echo "
<option value='Dog'>Dog</option>
<option value='Cat' selected>Cat</option>
<option value='Bird'>Bird</option>
";
}
J'ai aussi essayé:
if(result['pet']=="Dog")
{
.....
}
elseif(result['pet']=="Cat")
{
.....
}
et
if(strcmp(trim(reuslt['pet']),trim("Dog"))==0)
{
.....
}
elseif(strcmp(trim(result['pet']),trim("Cat"))==0)
{
.....
}
Mais rien ne fonctionne. Je soupçonne qu'il a à faire avec le classement, donc j'ai essayé de changer quand je sélectionne les valeurs suivantes:
$query = mysql_query("SELECT * COLLATE latin_1 FROM data");
$result = mysql_fetch_assoc($query);
Cela me donne le message d'erreur « Attention: mysql_fetch_assoc() attend le paramètre 1 à être ressource, booléenne donnée dans /opt/lampp/htdocs/PHP/control.php sur la ligne 12 ".
Alors, qu'est-ce qui ne va pas, et comment le réparer?
EDIT: J'ai changé ma requête un peu:
$query = mysql_query("SELECT * FROM data WHERE user='$user' COLLATE uft8_general_ci") or die(mysql_error());
A partir de ce que j'obtiens l'erreur suivante:
COLLATIONNEMENT 'utf8_general_ci' est pas valable pour le caractère SET 'latin1'
et quand je change la collation latin1_general_ci Je le ce qui suit:
mélange illégale des classements (utf8_swedish_ci, IMPLICIT) et (latin1_general_ci, explicit) pour un fonctionnement '='
Le classement que j'utilise pour la colonne dans la base de données est utf8_swedish_ci, si ce aide.
double possible de [Attention: mysql_fetch_ * 1 paramètre attend d'être ressource , erreur donnée booléenne] (http: // stackoverflow.com/questions/11674312/warning-mysql-fetch-attend-parameter-1-to-be-ressource-boolean-given-error) – j0k