Page 1 sur 1

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

Posté : 27 mars 2007, 13:52
par Tyler15
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

Posté : 27 mars 2007, 14:29
par Tyler15
Please, help ! !

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


please

Posté : 27 mars 2007, 14:43
par zeus
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.

Posté : 27 mars 2007, 16:15
par Tyler15
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

Posté : 27 mars 2007, 17:05
par ouckileou
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...

Posté : 28 mars 2007, 09:26
par Tyler15
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....

Posté : 28 mars 2007, 10:30
par Tyler15
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...

Posté : 28 mars 2007, 11:07
par Ryle
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 :)

Posté : 28 mars 2007, 11:20
par Tyler15
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

Posté : 28 mars 2007, 11:30
par Ryle
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;

Posté : 28 mars 2007, 11:39
par Tyler15
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

Posté : 29 mars 2007, 13:10
par Tyler15
Merci c'est nickel ! !

SUJET RESOLU

A bientot