Problème avec foreach !

Problème avec foreach ! - PHP - Programmation

Marsh Posté le 04-10-2007 à 16:21:59    

Salut,
 
J'ai un petit avec un formulaire et foreach, voilà le code :
 

Code :
  1. <?php
  2. $i = 1;
  3. foreach($_POST as $cle => $element)
  4. {
  5.         $sse = explode('_', $cle);
  6.         mysql_query('UPDATE series_episodes SET titre_episode="'.$_POST[$i].'", url="'.$element.'" WHERE id_serie='.$sse[0].' AND saison='.$sse[1].' AND num_episode='.$sse[2].'') or die (mysql_error());
  7.         $i++;
  8. }
  9. echo '<form action="series_episodes.php?id_serie='.$_GET['id_serie'].'&saison='.$_GET['saison'].'&type=modif_episode" method="post">
  10. <center>
  11. <table style="width: 75%;">
  12.         <tr>';
  13. $q = mysql_query('SELECT * FROM series_episodes WHERE id_serie='.$_GET['id_serie'].' AND saison='.$_GET['saison'].' ORDER BY num_episode');
  14. while($r = mysql_fetch_array($q))
  15.         echo '<td><input type="text" size="80" name="'.$_GET['id_serie'].'_'.$r['saison'].'_'.$r['num_episode'].'" value="'.htmlentities($r['url']).'" /></td>
  16.                 <td>'.$r['saison'].'x'.$r['num_episode'].' - <input type="text" name="'.$r['num_episode'].'" value="'.$r['titre_episode'].'" /></td>
  17.         </tr>';
  18. echo '</tr>
  19.         <tr>
  20.                 <th class="center" colspan="4"><br /><input type="submit" /></th>
  21.         </tr>
  22. </table>
  23. </form>';
  24. ?>


 
En fait, je veux mettre à jour :
 
L'url du lien et le titre de l'épisode via le formulaire mais je n'y arrive pas, quelqu'un pourrait il m'aider? :)
 
Merci!


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 16:21:59   

Reply

Marsh Posté le 04-10-2007 à 16:30:41    

tu as un message d'erreur a nous donner ?  
 
sinon, plus bas, dans ton while , tu devrai faire  
 

Code :
  1. while()
  2. {
  3. echo '<tr>';
  4. echo ' plein de kaka';
  5. echo '</tr>';
  6. }


 
sinon, en Mysql , els chaines de caractères doivent etre entre ' , et toi , tu les mets entre "


Message édité par flo850 le 04-10-2007 à 16:32:03
Reply

Marsh Posté le 04-10-2007 à 16:32:05    

Y'a une faille de sécurité/bug tellement énorme, que j'ai dû mal à croire qu'elle figure dans ton code :D
 
Personne ne t'as jamais dit de ne jamais mettre un $_POST['machin'] directement dans une requête ? :(

Reply

Marsh Posté le 04-10-2007 à 16:45:06    

FlorentG, j'utilise ce code dans ma page d'admin et y'a que moi qui a accès :)
 
@flo850 : je ne suis pas encore un expert pour optimiser mes codes ;)
 
sinon aucune erreur sauf que ça ne met pas à jour le titre de l'épisode mais ça met à jour l'url :(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 16:48:47    

Orission a écrit :

FlorentG, j'utilise ce code dans ma page d'admin et y'a que moi qui a accès :)


Mais vu que t'as aussi un problème de CSRF, quelqu'un pourrait facilement forger un formulaire quelque part, et te filer le lien en faisant style "clique ici c'est cool" [:dawa] Donc dangereux

Reply

Marsh Posté le 04-10-2007 à 16:54:05    

Oui, mais je suis en htaccess donc j'pense pas qu'il y a un risque, enfin je me trompe peut être :D


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 16:59:17    

même, il vaut mieux utiliser mysql_real_escape_string () pour intégrer les valeurs à la requete.

Reply

Marsh Posté le 04-10-2007 à 17:07:40    

ok merci :)
 
Sinon, pour mon problème de foreach, je peux faire comment ?


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 17:35:22    

j'ai pas très bien compris, la requete te met à jour un champs sur 2??
vérifie le contenu de la requete avec un echo avant de l'executer, tu dois avoir un souci dans tes variables dans $_POST

Reply

Marsh Posté le 04-10-2007 à 17:58:11    

Voilà ma requête en echo
 

Code :
  1. mysql_query('UPDATE series_episodes SET titre_episode="'.Retour en force.'", url="'. - www.google.fr.'" WHERE id_serie='.1.' AND saison='.3.' AND num_episode='.1.'') or die (mysql_error());
  2. mysql_query('UPDATE series_episodes SET titre_episode="'..'", url="'.Retour en force.'" WHERE id_serie='.1.' AND saison='..' AND num_episode='..'') or die (mysql_error());


 
en fait ça me fait 2 requêtes au lieu d'une :x


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 17:58:11   

Reply

Marsh Posté le 04-10-2007 à 18:09:15    

Heu ... fait plutôt un véritable echo du même texte que ce que contient le mysql_query par ce que là ça fait super bizarre ton montage.
 
PS : "AND saison='..' AND "   <=>  "AND saison= AND " Il y aurait pas comme qui dirait un problème dans ta seconde requête?

Reply

Marsh Posté le 04-10-2007 à 18:15:32    

c le véritable echo :x
 
c pour ça, y'a 2 requetes * le nombre d'épisodes
 
donc 24 épisodes = 48 requetes :x
 
dont 24 vides comme la 2eme que j'ai mise ci dessus :'(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 18:20:11    

heu j'ai peur de comprendre là. T'as fait echo 'mysql_query ...' ?
Ce qu'on te demande, c'est que si tu fais un mysql_query('select * from matable where colone='.$numero) tu fasses juste avant un echo 'select * from matable where colone='.$numero  
 
Le but c'est d'avoir le texte de la requête telle qu'envoyé réellement au serveur, pas un smilblick potentiellement faux.

Reply

Marsh Posté le 04-10-2007 à 19:29:48    

bah, c ce que je viens d'écrire au dessus sans les mysql_query('');
 
oO


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 19:50:23    

j'ai trouvé une solution, mais maintenant c ma requête, vu que je dois dire :
 
WHERE id_serie='.$sse[0].' AND saison='.$sse[1].' AND num_episode='.$sse[2].'
 
mais ça ne fonctionne pas :x
 


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Marsh Posté le 04-10-2007 à 20:31:51    

En fait, j'ai une solution, beaucoup plus "porc" mais bon, moins prise de tête et comme je vais pas souvent l'utiliser, ça bouffera pas de ressource ;)
 
merci quand même


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed