IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

mysql probleme pour tester l'existence d'un tuple [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Par défaut mysql probleme pour tester l'existence d'un tuple
    bonjour à tous, en faisant un tp de mon iut où je devais créer un formulaire dans lequel l'utilisateur peut entrer une citation et la valider. cette validation insere un tuple dans la base de donnée et l'affiche ensuite en bas du formulaire.
    jusqu'ici aucun soucis, cependant, pour améliorer un peu le concept, je ne veut pas qu'on puisse mettre deux fois la meme citation pour eviter la redondance de mes tuples dans la DB. voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <html>
    <head>
    <LINK href="style.css" rel="stylesheet" type="text/css">
    <title>Formulaire de soumission</title>
    </head>
    <body>
    <?php 
    $link=mysql_connect("localhost", "ulrich", "mdp") or die(mysql_error());// Connexion à MySQL
    $database=mysql_select_db("tp3",$link) or die(mysql_error());// Sélection de la base tp3
    if(isset($_GET['prof'])){
    	extract($_GET);
    	$test_citation=mysql_query("select count(distinct texte) from citation where texte='$texte';");
    	if($test_citation == 0)
    		$req_citation=mysql_query("insert into citation values('','$texte','$prof','$rapporteur','En attente');");
     
    	}
    ?>
    <form action="Form2.php" method="GET">
    <fieldset>
    <legend> Proposer une citation </legend>
    <label>Professeur</label>
    <select name="prof">
    <?php 
    $req_prof='select * from prof order by id_prof;';
    $query_prof=mysql_query($req_prof);
    while($tuple=mysql_fetch_array($query_prof))
    {
    echo'<option value="'.$tuple['id_prof'].'">'.$tuple['nom'].'</option>';//affiche les profs
    }
     
    ?>
     
    </select>
    <label>Année</label>
    <select name="annee">
    <option value="2007">2007</option>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    </select>
    <br /><br />
    <textarea name="texte" cols="100%" rows="10">Citation</textarea>
    <br /><br />
    <label  >Votre nom </label> <input type="text" name="rapporteur"> <input  type="SUBMIT" value="Envoyer"   />
    </fieldset>
     
    </form>
    <?php 
    echo '<u>Citation / professeur :</u><br/>'; //affichage des citations.
    $citation=mysql_query("select * from citation natural join prof order by id_prof");
    while($tuple2=mysql_fetch_array($citation))
    {
    echo $tuple2['texte'];
    echo ' / ';
    echo $tuple2['nom'];
    echo '<br/>';
    }
    mysql_close($link);
    ?>
    </body>
    </html>
    les deux lignes sensées faire ce test sont celles-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $test_citation=mysql_query("select count(distinct texte) from citation where texte='$texte';");
    	if($test_citation == 0)
    mon idée étant de compter le nombre de tuple contenant la meme citation et d'empecher d'en créer d'autre. Cependant lorsque je met ce if, l'insertion ne fonctionne jamais et quand il n'y ai pas... ba elle fonctionne à chaque fois ce qui ne me plait pas non plus
    je ne sais pas si le where texte='$texte' est possible mais j'avoue que je n'ai pas eu d'autre idée. si vous pouvez m'aider n'hésitez pas et en tout cas merci de m'avoir lu

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as oublié de faire un fetch apres ta requete.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Par défaut
    tu veux dire que malgré le fait qu'il ne doit trouver qu'une seule citation, il faut faire un mysql_fetch_array() ???

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le fetch sert justement a recuperer une ligne
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Par défaut
    merci pour ce conseil, voilà ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_GET['prof'])){
    	extract($_GET);
    	$test_citation=mysql_query("select texte from citation where texte='$texte';");
    	$tuple0=mysql_fetch_array($test_citation);
    	if($tuple0['texte']!=$texte)
    		{
    			$req_citation=mysql_query("insert into citation values('','$texte','$prof','$rapporteur','En attente');");
    		}
    	}
    effectivement ça marche, merci à toi !!!

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu pouvais conserver ton count()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction pour tester l'existence d'une page
    Par erwmat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/09/2007, 00h06
  2. Réponses: 2
    Dernier message: 09/08/2007, 11h08
  3. Réponses: 10
    Dernier message: 14/02/2007, 12h10
  4. Fonction pour tester l'existence d'une image
    Par nais_ dans le forum Langage
    Réponses: 4
    Dernier message: 10/09/2006, 11h38
  5. PHP & MySQL : Problème pour compter nombre de tuples ?
    Par ExSter dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/05/2006, 23h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo