Mise à jour ligne par ligne d'une base de données ...

Tyler15
Invité n'ayant pas de compte PHPfrance

27 mars 2007, 13:52

Bonjour à tous,

et merci de me preter attention ! !

J'ai besoin de vous pour avoir un avis sur la conception de mon projet.
Je m'explique:

J'ai une bdd contenant des phrases (une phrase par entrée) et qui ont comme attributs:

id (entier servant de clé primaire)
analogie (la phrase en question)
sens (string vide pour le moment)

But du projet:
afficher la premiere ligne de la table (juste la phrase)
bouton ratio pour déterminer "le sens" (en gros vrai ou faux)
On cliques sur un bouton qui fait:
mise a jour du champ sens
recommencer avec la deuxieme ligne de la table


Je voudrais connaitre votre avis sur la methode à employer.
Car je sais comment faire pour faire mes mises à jour d'un coup des30 phrases de ma base mais moi je dois les traiter une par une:

je sais pas si je dois envoyer faire un autre fichier php ou tout traiter dans un seul, bref, j'ai besoin de vos lumieres merci

Tyler15
Invité n'ayant pas de compte PHPfrance

27 mars 2007, 14:29

Please, help ! !

je sais pas si je dois reloader ma page? quelles valeurs passées? comment?
ou sinon passer par une page temporaire....


please

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 mars 2007, 14:43

Modération :
Tyler15, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Tyler15
Invité n'ayant pas de compte PHPfrance

27 mars 2007, 16:15

Suite à la trés bonne remarque de Zeus (dsl pour le up), je vais essayer d'être plus clair:

J'ai ma bd qui contient des analogies (des mots on va dire), j'ai l'interface suivante (fichier interface.php) :

Image

En gros:

analogie Good . Not Good . NEXT

Quand je cliques sur le bouton next il faut qu'il fasse la mise a jour de la base concernant cette ligne (ca pas dur)mais surtout qu'il réaffiche ma page interface.php avec l'analogie suivante dans la table....

J'ai essayé avec un header mais c'est un problème sur mon cpt car ca ne marche que 2 fois sniffff

please :priere:

ps: si vous voulez je poste mon code pas tres long

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 mars 2007, 17:05

J'ai essayé avec un header mais c'est un problème sur mon cpt car ca ne marche que 2 fois sniffff
Et ça fait quoi après ? ça se trouve c'est la bonne méthode mais dire "ça ne marche pas" ne nous met pas sur la piste pour t'aider...

Tyler15
Invité n'ayant pas de compte PHPfrance

28 mars 2007, 09:26

Ok dsl pour le manque de précision, je vais poster mon code (super simple) dans la matinée car là j'ai une présentation....

Tyler15
Invité n'ayant pas de compte PHPfrance

28 mars 2007, 10:30

Présentation annulée donc me voilà de retour....

Dans le code suivant j'ai enlevé la partie mise a jour de la base (qui n'est pas le probleme du moment).

Voici le code :

Code : Tout sélectionner

<?php include_once "./connexion.php" ; $res = mysql_query("SELECT * FROM analogies;"); error_reporting(E_ALL ^ E_NOTICE); if($cpt > 0){$cpt++;} //ici je recupere les variables de la redirection par le header if($_GET){ $s = $_GET['sens']; $cpt = $_GET['cpt']; } //ici je recupere le submit de mes reponses if(isset($_POST['envoi'])) { $sens = isset($_POST['correct']) ? $_POST['correct'] : ""; header("location: interface5.php?sens=$sens&cpt=$cpt"); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <head> <title>Analogies</title> </head> <body> <div id="page"> <h3>Analogies</h3> <form action="interface5.php" method="post"> <fieldset> <p> <?php echo mysql_result($res,$cpt,"analogie"); ?> &nbsp; &nbsp; Good <input type="radio" name="correct" value="yes" checked> &nbsp; Not Good <input type="radio" name="correct" value="no"> &nbsp;&nbsp; <input type="submit" name="envoi" value="Next" />&nbsp; </form> </body> </html>
Il est assez simple.
Le problème c'est que quand je cliques sur mon bouton NEXT une premiere fois il va bien m'afficher la deuxieme ligne de ma table donc c'est OK.
Mais si je recliques sur NEXT il me réaffiche la deuxieme et non la troisieme ligne. En fait $cpt reste à 1 ! ! !

Vous voyez ce qui cloche car moi j'ai plus le recul nécessaire j'ai l'impression...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 mars 2007, 11:07

Quand tu cliques sur next, tu ne passes pas la valeur de cpt (que ce soit dans l'url de la page, dans un champ hidden du formulaire, gardée en session..). Il considère donc qu'il s'agit d'une nouvelle variable dont la valeur est par défaut 0 et il ne pourra donc jamais l'augmenter au dela de 1...

Si tu avais gardé les warnings, tu aurais eu le message suivant : la variable $cpt n'est pas définie ligne 8. Spécifie d'où vient cette valeur (ca évite aussi le warning et c'est plus propre que de les désactiver) ça devrait te permettre de mieux comprendre le problème :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Tyler15
Invité n'ayant pas de compte PHPfrance

28 mars 2007, 11:20

POur le coup des warnings, c'est vraiq ue c'est une sale habitude que j'ai prise.....

Question con, quelle est la meilleure methode pour passer mon cpt avec Next?
Comment?

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 mars 2007, 11:30

A mon avis, le plus logique serait de la passer en champ hidden dans ton formulaire :)
<input type="hidden" name="cpt" value="<?php echo $cpt;?>" />
Et lorsque tu le récupères :
$cpt = 0; // on défini la variable pour être sur de pouvoir l'utiliser dans le formulaire

if(isSet($_POST['cpt'])) // si on la récupère du formulaire on l'écrase et on en profite pour l'incrémenter
  $cpt = $_POST['cpt'] + 1;

if(isSet($_GET['cpt'])) // idem si elle est passée en get
  $cpt = $_GET['cpt'] + 1;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Tyler15
Invité n'ayant pas de compte PHPfrance

28 mars 2007, 11:39

Un grand merci à toi, en effet ça a l'air propre....

Quand tu bosses sur un gros projet, c'est fou le temps que tu peux perdre sur des petits trucs comme ça, manque de recul ! ! !

Merci en tout cas je n'ai pas le temps de tester tout de suite mais ce que tu dis est super logique, ca devrait marcher, je te tiens au courant.....

Merci

Tyler15
Invité n'ayant pas de compte PHPfrance

29 mars 2007, 13:10

Merci c'est nickel ! !

SUJET RESOLU

A bientot