Transmission de données autre que post et get

Transmission de données autre que post et get - PHP - Programmation

Marsh Posté le 24-05-2012 à 20:31:23    

Bonjour a tous,
 
Je suis semi-débutant (je bidouille quand j'ai besoin), et je suis actuellement en train de me développer une petit mediatheque.
Je me suis amusé a intégrer un petit coverflow et un plugins vlc permettant le streaming, enfin bref le sujet n'ai pas la.
 
J'ai quatre fonctions, deux permettant d'aller chercher les informations sur un site du style alloCine, the movie DB etc ....(dans l'exemple ce sera alloCine)(une fonction pour trouvé le lien vers la fiche du film et l'autre les infos du film, une permettant l'affichage des données récupérer et l'autre permettant l'ecriture des données dans la base de données.
 
Voici les codes (pas de moqueries sur ma façon de codé SVP :p) :
 
Fonction pour récuperer information films :

Code :
  1. function search_Title($name)
  2. {
  3. $name=strtr($name," ","+" );
  4. $url = 'http://www.allocine.fr/recherche/1/?q='.$name;
  5. $url2 = 'http://www.allocine.fr';
  6. $html = file_get_html($url);
  7. foreach($html->find('div.colcontent a') as $a)
  8. {
  9.  foreach($a->find('img') as $img)
  10.  {
  11.   $link = 'index.php?action=info&url='.$url2.$a->href;
  12.   echo '<a href='.$link.'><img src='.$img->src.' /> '.$img->alt.'</a><br>';
  13.  }
  14. }
  15. }
  16. function info_Title($url)
  17. {
  18. $html = str_get_html($url);
  19. $ref='';
  20. $title='';
  21. $date_cine='';
  22. $director='';
  23. $actors='';
  24. $genre='';
  25. $age='';
  26. $resume='';
  27. $cover='';
  28. $trailer = '';
  29. $quality = '';
  30. $poster = '';
  31. // Reference Allocine
  32. foreach($html->find('div[class="sya w-opinion w-rating w-interest"]') as $div) {
  33.  $ref = $div->id;
  34. }
  35. $url2='http://www.allocine.fr/film/fichefilm-'.$ref.'/photos';
  36. $html2=file_get_html($url2);
  37. // Nom du film
  38. foreach($html->find('div[class="titlebar_01 margin_10b"]') as $div) {
  39.  $title = $div->plaintext;
  40. }
  41. // Cover
  42. foreach($html->find('div[class="poster"] img[itemprop="image"]') as $div) {
  43.  $cover = $div->src;
  44. }
  45. // date
  46. foreach($html->find('span span[itemprop="datePublished"]') as $div) {
  47.  $date_cine = $div->plaintext;
  48. }
  49. // Réalisateur
  50. foreach($html->find('span[itemprop="director"] span[itemprop="name"]') as $div) {
  51.  $director = $div->plaintext;
  52. }
  53. // Acteurs
  54. foreach($html->find('span[itemprop="actors"] span[itemprop="name"]') as $div) {
  55.  if ($actors != '')
  56.  {
  57.   $actors = $actors . ', ' .$div->plaintext;
  58.  } else
  59.  {
  60.   $actors = $div->plaintext;
  61.  }
  62. }
  63. // genre
  64. foreach($html->find('span[itemprop="genre"]') as $div) {
  65.  if ($genre != '')
  66.  {
  67.   $genre = $genre . ', ' .$div->plaintext;
  68.  } else
  69.  {
  70.   $genre = $div->plaintext;
  71.  }
  72. }
  73. // Age
  74. foreach($html->find('span[class="insist"] span') as $div) {
  75.  $age = $div->plaintext;
  76. }
  77. // Résumé
  78. foreach($html->find('p[itemprop="description"]') as $div) {
  79.  $resume = $div->plaintext;
  80. }
  81. // Bande Annonce
  82. foreach($html->find('a[itemprop="trailer"]') as $div) {
  83.  $trailer = $div->href;
  84. }
  85. foreach($html2->find('a') as $div) {
  86.  foreach($div->find('img[alt*="affiche"]') as $div2) {
  87.   $link = file_get_html('http://www.allocine.fr'.$div->href);
  88.   foreach($link->find('div[class="slide"] img') as $div3) {
  89.    $poster[] = $div3->src;
  90.   }
  91.  }
  92. }
  93. show_Movie($ref, $title, $date_cine, $director, $actors, $genre, $age, $resume, $cover, $trailer, $poster);
  94. }


Bien-sur sur ces fonctions utilise un script appelé parser_html_dom.php (très simple a utilisé d'ailleurs)
 
 
Ensuite la fonction permettant l'affichage des données récuperer (a savoir show_Movie()) :

Code :
  1. function show_Movie($ref ,$name, $date_cine, $director, $actors, $genre, $age, $resume, $cover, $trailer, $poster)
  2. {
  3.  $quality = '';
  4.  $trailer = '';
  5.  $checked='checked';
  6.  $output = '<form method="post" action="index.php?action=add_Entry&methode=auto.'"><h2 style="text-align:center;">'.$name.'</h2>';
  7.  $output .= '<p style="text-align:center;"><img src='.$cover.' /></p>';
  8.  $output .= '<p style="text-align:center;">Date de sortie : '.$date_cine.'</p>';
  9.  $output .= '<p style="text-align:center;">Réalisateur : '.$director.'</p>';
  10.  $output .= '<p style="text-align:center;">Acteurs : '.$actors.'</p>';
  11.  $output .= '<p style="text-align:center;">Genres : '.$genre.'</p>';
  12.  $output .= '<p style="text-align:center;">Public : '.$age.'</p>';
  13.  if ($trailer != '')
  14.  {
  15.   $output .= '<p style="text-align:center;">Bande Annonce : <a href=http://www.allocine.fr'.$trailer.'>ICI</a></p>';
  16.  }
  17.  $output .= '<p style="text-align:center;">Résumé : </p>';
  18.  $output .= '<p style="text-align:center;">'.$resume.'</p>';
  19.  if ($poster != '')
  20.  {
  21.   $output .= '<p>Choix du poster :</p>';
  22.   $output .= '<p style="text-align:center;">';
  23.   foreach($poster as $element)
  24.   {
  25.    $output .= '<input type="radio" name="poster" value="'.$element.'" id="'.$element.'" '.$checked.' /><label for='.$element.'><img src='.$element . ' height="180" width="135" /></label>    ';
  26.    $checked='';
  27.   }
  28.   $output .= '</p>';
  29.   $output .= '<input type="checkbox" name="img_All" id="img_All" /> <label for="img_All">Enregistrer tous les posters</label><br />';
  30.  }
  31.  $output .= '<input type="submit" value="Enregistrer" /></form>';
  32.  $output .= '<form method="post" action="index.php?action=form"><input type="submit" value="Nouvelle recherche" /></form>';
  33.  echo $output;
  34. }


La pour le moment aucun soucis sa fait bien son boulot, le seul soucis viens de bouton pour enregistré, j'aimerai executé la derniere fonction avec ce bouton.
 
Derniere fonction, permettant l'enregistrement dans la BDD :

Code :
  1. function add_Entry($ref ,$title, $date_cine, $quality, $director, $actors, $genre, $age, $resume, $cover, $trailer)
  2. {
  3. include('auth.php');
  4. try
  5. {
  6.  $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  7.  $bdd = new PDO('mysql:host=localhost;dbname='.$basetitle, $username, $password, $pdo_options);
  8.  $req = $bdd->prepare('INSERT INTO films(ref, title, date_cine, quality, director, actors, genre, age, resume, cover, trailer)
  9.   VALUES(:ref, :title, :date_cine, :quality, :director, :actors, :genre, :age, :resume, :cover, :trailer)'
  10.  );
  11.  $req->execute(array(
  12.   'ref' => $ref,
  13.   'title' => $title,
  14.   'date_cine' => $date_cine,
  15.   'quality' => $quality,
  16.   'director' => $director,
  17.   'actors' => $actors,
  18.   'genre' => $genre,
  19.   'age' => $age,
  20.   'resume' => $resume,
  21.   'cover' => $cover,
  22.   'trailer' => $trailer,
  23.  ));
  24.  echo 'Le film a bien été ajouté</br>';
  25.  echo '<a href="index.php">Retour</a>';
  26. }
  27. catch(Exception $e)
  28. {
  29.  die('Erreur : '.$e->getMessage());
  30. }
  31. }


Donc voila ou ce trouve le soucis.
 
J'ai essayé tous de meme plusieurs chose.
J'ai d'abord pensé transmettre toutes les données par l'url, mais sa ne fonctionne pas bien la variable $resume est par moment trop longue et ne se transmet qu'a moitié.
 
Deuxieme idée, j'ai rajouté un bout de code dans ma fonction me servant a parser et donc deux variables dans dans le form d'enregistrement (l'url et une variable write (ou je donne la valeur ok), Si write = yes alors executer add_Entry(.....). Sa fonctionne mais cela fait executé deux fois la fonction pour parser, donc très long a executé, ce qui me donne par moment des timeOut.
 
Solution que je suis en train de tester, c'est enregistrer mon parsing (si sa se dit) dans un fichier text, et de le reutilisé par la suite dans ma fonction add_Entry.
 
Avez vous une idées d'un autre méthode pour me dépatouiller de ceci.
 
Merci par avance
 
PS : Desoler j'ai pas trouvé de balise pour le php, je sais pas si sa existe sur le site.

Reply

Marsh Posté le 24-05-2012 à 20:31:23   

Reply

Marsh Posté le 25-05-2012 à 10:03:54    

Solutions :
- $_SESSION  
- les sockets (d'une certaine manière, du POST, donc)
- ...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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