PHP
Résolu
SonSon86
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
avion-f16 Messages postés 19256 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19256 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je débute en php et je ne sais pas ou est le probleme dans mon code ci dessous, il doit afficher un mot en pluriel mais il n'affiche rien:
////////////////////
<?php
$con=@mysql_connect("localhost", "root", "");
mysql_select_db('sing_plu') or die("impossible d'ouvrir la base de donnees");
$mot_singulier=$_POST['Singulier'];
/*$len=strlen($mot_singulier);
$type=substr($mot_singulier,$len-2,2); */
$rep=mysql_query("select id_sing,type from singulier where mot='.$mot_singulier.'");
if (!$rep) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$donnees = mysql_fetch_array($rep);
echo $donnees['type'] ;
switch($donnees['type'])
{
case 'a':$rep1=mysql_query("select mot from type_ail where id_a=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_a'];
echo $pluriel ;
break;
case 'b':$rep1=mysql_query("select mot from type_al where id_b=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_b'];
echo $pluriel ;
break;
case 'c':$rep1=mysql_query("select mot from type_ou where id_c=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_c'];
echo $pluriel ;
break;
case 'd':$rep1=mysql_query("select mot from type_eau where id_d=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_d'];
echo $pluriel ;
break;
case 'e':$rep1=mysql_query("select mot from type_S where id_e=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_e'];
echo $pluriel ;
break;
}
mysql_close();
?>
/////////////////////
////////////////////
<?php
$con=@mysql_connect("localhost", "root", "");
mysql_select_db('sing_plu') or die("impossible d'ouvrir la base de donnees");
$mot_singulier=$_POST['Singulier'];
/*$len=strlen($mot_singulier);
$type=substr($mot_singulier,$len-2,2); */
$rep=mysql_query("select id_sing,type from singulier where mot='.$mot_singulier.'");
if (!$rep) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$donnees = mysql_fetch_array($rep);
echo $donnees['type'] ;
switch($donnees['type'])
{
case 'a':$rep1=mysql_query("select mot from type_ail where id_a=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_a'];
echo $pluriel ;
break;
case 'b':$rep1=mysql_query("select mot from type_al where id_b=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_b'];
echo $pluriel ;
break;
case 'c':$rep1=mysql_query("select mot from type_ou where id_c=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_c'];
echo $pluriel ;
break;
case 'd':$rep1=mysql_query("select mot from type_eau where id_d=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_d'];
echo $pluriel ;
break;
case 'e':$rep1=mysql_query("select mot from type_S where id_e=".$donnees['id_sing']."");
$var=mysql_fetch_array($rep1);
$pluriel=$var['mot_e'];
echo $pluriel ;
break;
}
mysql_close();
?>
/////////////////////
A voir également:
- PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
4 réponses
Mais pourquoi toujours cette manie de stocker la connexion dans une variable lorsqu'il n'y en a qu'une ?
Dans substr, au lieu de faire $len - 2, fais directement -2.
Dans substr, au lieu de faire $len - 2, fais directement -2.
rep=mysql_query("select id_sing,type from singulier where mot='.$mot_singulier.'");On ne t'a jamais dis qu'une chaine devait toujours être en guillemets (simples ou doubles) ? Car au final c'est ça qui est exécuter par MySQL :
SELECT id_sing, type FROM singulier WHERE mot=avion
Bonjour
Pas d'accord avion-f16 Ce qui est exécuté c'est
Pas d'accord avion-f16 Ce qui est exécuté c'est
SELECT id_sing, type FROM singulier WHERE mot='.avion.'(ce qui ne change pas grand chose)
PHP remplace les variables par leur valeur avant d'envoyer la requête au serveur SQL.
Donc c'est bien
Donc c'est bien
SELECT id_sing, type FROM singulier WHERE mot=avionQui est envoyé à MySQL après avoir remplacer $mot_singulier par avion. Normalement la requête devrait être écrite comme ceci :
mysql_query('SELECT id_sing, type FROM singulier WHERE mot="'.$mot_singulier.'"');Et la, ça serait ça qui serait envoyé à MySQL :
SELECT id_sing, type FROM singulier WHERE mot="avion"
Avec la requête $rep=mysql_query("select id_sing,type from singulier where mot='.$mot_singulier.'");, c'est bien select id_sing,type from singulier where mot='.avion.' qui est envoyé. Il n'y a aucun doute la-dessus. Je ne pensais pas que la substitution de variable dans les chaînes avait des secrets pour toi. Je te fais remarquer que la chaîne commence par un " et se termine par un autre ", et que les ' et . qui sont dedans ne sont donc ni des délimiteurs de chaînes (pour le PHP), ni des opérateurs de concaténation, mais de simples caractères ' et .
Je t'invite à faire un echo pour le vérifier.
Ta correction est bonne bien sûr. Pour modifier le moins possible celle proposée au départ, il suffit de retirer les deux points:
Je t'invite à faire un echo pour le vérifier.
Ta correction est bonne bien sûr. Pour modifier le moins possible celle proposée au départ, il suffit de retirer les deux points:
$rep=mysql_query("select id_sing,type from singulier where mot='$mot_singulier'");