changer un ordre d'affichage - PHP - Programmation
Marsh Posté le 16-12-2009 à 09:40:39
Je ne vois pas quoi dire d'autre que des conseils simples :
1- Afficher la requete en plus de l'executer.
2- Essayer la requete sous phpMyAdmin par ex.
3- Tester le code retour et gerer les erreurs d'update.
Rien que du classique...
Marsh Posté le 16-12-2009 à 10:43:51
apprendre le SQL comme ça, tu découvriras la clause ORDER BY
Marsh Posté le 16-12-2009 à 17:36:45
Bonjour,
Je suppose que mon problème vient d'ici :
echo '<form action="maj_ordre_photos.php?idph='. $row['idph'] .'">';
echo "<input type=hidden name=\"idph\" value=$idph>";
echo '<td><img border=0 height="50" src="' . $row['lien'] . '"><center>
<input name="numero" type="text" id="numero" value="'.$row['numero'] .'" size="1" maxlength="3"></center></td>';
Car dans mon script de mise à jour, si je teste les variables réceptionnées, je ne reçoit pas idph, et pour le numero, je n'ai que celui de la dernière image affichée.
Et comme je ne maitrise pas trop bien les tableaux (Array) .....
Marsh Posté le 16-12-2009 à 18:29:27
1 - Sécurise les entrées POST en vérifiant que ce sont des nombres quand tu veux un nombre, ou utilise <a href="http://fr.php.net/mysql_real_escape_string">mysql_real_escape_string</a> quand tu veux une chaîne.
2 - Les guillemets autour des valeurs des attributs dans le html ne sont pas optionnels.
Quand t'auras changé ça ton code sera déjà moins 90's style et un peu plus sécurisé.
Ensuite, enlève les simples quote autour de tes noms de variables dans ta requête.
Et enfin, ton problème vient du fait que tu ne spécifies pas la méthode HTTP : donc, tout est envoyé en GET, alors que tu cherches à récupérer du POST.
Change ta balise form en :
Code :
|
Marsh Posté le 17-12-2009 à 11:02:38
OK ! Merci Luc@s ! Mais ça marche toujours pô .....
Après plusieurs essais différents, voici ce que j'ai (là, j'ai affiché la série où je veux modifier l'ordre des photos. Sous chaques photos, son numéro issu de la bd que je voudrais changer et qui modifierait l'ordre d'affichage):
Code :
|
La mise à jour de la bd (après avoir modifié le numéro de l'image identifiée par idph) :
Code :
|
Si je fais, avant $result, echo '<pre>'; print_r($_POST); echo '</pre>';, je récupère l'idph de la dernière photo et son numéro. C'est tout ! Donc rien ne change .....
Marsh Posté le 17-12-2009 à 14:29:41
Avec ton astuce, j'ai une page blanche !!!!!
Avec la mienne, j'ai :
Array
(
)
La requête dans phpMyadmin fonctionne. Mais pour le reste ...........
Marsh Posté le 17-12-2009 à 15:07:23
ReplyMarsh Posté le 17-12-2009 à 15:09:18
bizar, t'as bien mis $_POST a la place de $array ?
Marsh Posté le 17-12-2009 à 15:15:14
stealth35 a écrit : bizar, t'as bien mis $_POST a la place de $array ? |
L'un ou l'autre c'est pareil ..... !
Marsh Posté le 17-12-2009 à 15:18:13
Fais un 'view source' sur la page que tu poste une fois que tu as saisi la valeur du champ numero. Ca peux aider. Verifie egalement que tu poste bien le bon formulaire.
Marsh Posté le 17-12-2009 à 15:44:49
fred777888999 a écrit : Fais un 'view source' sur la page que tu poste une fois que tu as saisi la valeur du champ numero. Ca peux aider. Verifie egalement que tu poste bien le bon formulaire. |
Tu fais comment pour le 'view source' ? Je le met où ? Pour les formulaires, c'est bien les bons !!!!!
Marsh Posté le 17-12-2009 à 16:17:28
Dans ton navigateur, view source ou afficher la source, ou code source, ca depend de la langue ou de la version. En general accessible avec le bouton droite de la souris.
C'est juste pour voir le code HTML et verifier le formulaire que tu va poster. Il n'y a en effet aucune raison que tu recupere des variables vides.
Marsh Posté le 17-12-2009 à 16:31:23
OK ! Donc si j'affiche la source, le "value" du numéro reste inchangé à celle d'origine.
Ce qui est normal puisqu'il prend la valeur de celui qui est affiché au début, et je n'ai pas encore fait de modification.
Marsh Posté le 17-12-2009 à 16:35:50
Le value affiche n'est que la valeur par defaut, pas celle saisie/modifiee par l'utilisateur.
Le but de la manoeuvre est de comprendre pourquoi ton vecteur $_POST est vide alors qu'il devrait y avoir qq chose, je suppose sans preuve que ton formulaire est mal construit.
A la limite, tu peux faire un phpinfo() (dans ton code php) pour voir ce qui te reviens, mais c'est plus dur de faire le tri.
Marsh Posté le 17-12-2009 à 16:47:33
fred777888999 a écrit : Le value affiche n'est que la valeur par defaut, pas celle saisie/modifiee par l'utilisateur. |
Mal construit ??? Mais si y'a des erreurs à ce niveau, faut me dire ....
Et le $_POST n'est pas vide, car il prend la valeur de la dernière photo affichée !?
Marsh Posté le 17-12-2009 à 16:56:37
Pas clair du tout ton probleme et je n'arrive pas a comprendre ce qui te bloque. Peux-tu modifier
Code :
|
en
Code :
|
pour que l'on sache clairement quel ordre sql est effectue ?
EDIT : balises code.
Marsh Posté le 17-12-2009 à 17:04:33
fred777888999 a écrit : Pas clair du tout ton probleme et je n'arrive pas a comprendre ce qui te bloque. Peux-tu modifier
|
Donc, le résultat de $requete = UPDATE photos SET numero='3' WHERE idph='3'
Ce qui fait que idph et numero prennent la valeur de la dernière photo affichée à l'écran !
Marsh Posté le 17-12-2009 à 17:51:52
Ben ca tu aurait du (pu) sans doutes le detecter avec le view-source en regardant le value de ton champ cache idph. En prime, en relisant, il n'est vraiment pas sain d'avoir un formulaire POST et des parametres passes en GET en meme temps avec les anciennes valeurs.
Poste le source (view-source) de ton formulaire qu'on y voie plus clair...
Marsh Posté le 17-12-2009 à 18:06:54
Effectivement, en lisant la source, idph et numero prennent 1 comme valeur :
<div class="centrer"><h2><u>aaaaaaaaaaaaa</h2></u><h4><i>aaaaaaaaaaaaaaaa</i></h4><table><tr><form action="maj_ordre_photos.php?idph=1 & numero=1" method="POST"><input type=hidden name="idph" value="1"><td><img border=0 height="50" src="photos_alb/Diapositive1.JPG"><center> |
Cela provient peut-être de mon test $idEncours ????
Code :
|
Marsh Posté le 15-12-2009 à 22:05:52
Bonjour,
J'affiche des photos (en php) suite à lecture de ma base.
Je voudrais modifier l'ordre d'affichage, sans avoir à intervenir directement sur la base.
J'ai une table alb_photos qui comporte comme champs : id (l'identifiant), titre_album, soustitre.
Et une table photos avec : idph (identifiant unique), idliaison (ce qui relie à l'id de la table précédente), numero (qui permettra l'ordre d'affichage), lien (qui mène à la photo dans un fichier).
J'affiche donc une série de photos, numérotées. Les numéros sont issus du champ (numero).
De là, je peux modifier le ou les numéros affichés, puis clique sur "Valider".
Et ..... ça marche pô !!!!! Mon champ "numero", dans ma table n'a pas changé ......
Merci de m'aider à débugger .....