Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Requete BDD sur tables multiples

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete BDD sur tables multiples

n°2242230
scorpiotig​er
Posté le 04-11-2014 à 19:19:22  profilanswer
 

Bonjour,
J'ai décidé de réactualiser mon mini site qui était programmé en PHP 5.3 en le passant en 5.5
Depuis le codage a changé et je n'arrive pas à refaire tourner mon application...
Voici l'ancien code qui fonctionnait avant la mise à jour:

Code :
  1. $dep_rs=$_GET['dep_rs'];
  2. $sql= "SHOW TABLES LIKE 'etudes_%'";
  3. $req = mysql_query($sql);
  4.   while ($data = mysql_fetch_array($req)) {
  5.   $base1 = mysql_result($req, 0);
  6.   $i=0;
  7.   $rows=mysql_num_rows($req);
  8.   $sql = "SELECT DISTINCT ref_client FROM $base1 WHERE dep_rs='$dep_rs'";
  9.   for ($i=0;$i<$rows;$i++){
  10.   $sql.= " UNION SELECT DISTINCT ref_client FROM ".mysql_result($req, $i)." WHERE dep_rs='$dep_rs'";
  11.   }
  12.   $sql.= " ORDER BY ref_client";
  13.   }
  14.   $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  15.   while ($data = mysql_fetch_array($req)){
  16.   echo '<a href="#" onclick="window.opener.document.getElementById(\'ref_client\').value=\''.addslashes($data["ref_client"]).'\'; window.close(); return false;">'.$data["ref_client"].'</a><br/>';
  17.   }
  18. mysql_free_result($req);
  19. mysql_close();


 
J'ai déjà changé les fonctions mysql par mysqli mais celle qui pose problème est mysql_result car elle n'existe plus.
J'ai déjà testé plus trucs mais rien ne convient car la plupart du temps, ça me renvoie uniquement les résultats de la dernière table qui est dans la liste...
Si quelqu'un a la solution miracle, je suis preneur :) merci par avance

mood
Publicité
Posté le 04-11-2014 à 19:19:22  profilanswer
 

n°2242266
rufo
Pas me confondre avec Lycos!
Posté le 05-11-2014 à 09:26:09  profilanswer
 

Lignes 1, 10 et 12 : joli risque de SQL injection détecté :/
 
Quant à la boucle for qui nous génère une requête avec pleins d'UNION, ça sent bon la requête mal construite ou pire, la BD mal conçue...
 
La lib PDO serait plus appropriée je pense. Et plus qu'une simple traduction de fonctions en PHP en d'autres, une refonte total de ton site serait probablement le mieux à faire car le mélange de code php/html/javascript dans un même script, ça fait pas tellement bien organisé. Regardes du côté du design pattern "MVC" ;)


---------------
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
n°2242528
scorpiotig​er
Posté le 09-11-2014 à 09:21:53  profilanswer
 

En incluant directement ce code, la fonction mysqli_result fonctionne

Code :
  1. function mysqli_result($res, $row, $field=0) {
  2.     $res->data_seek($row);
  3.     $datarow = $res->fetch_array();
  4.     return $datarow[$field];
  5. }


Quant aux injections sql, je ne m'en soucis pas car c'est un site en local et puis plus vraiment le temps pour modifier des choses sur un projet qui date de plusieurs années déjà... mais je le savais déjà au moment où je l'ai fais
 
Le sujet est clos pour ma part, merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Requete BDD sur tables multiples

 

Sujets relatifs
Ajout datas BDD MYsqllongueur max requete access
Requête qui me pose problèmeRequête d'une donnée dans BDD
Bug lors de récupération de données dans BDDIndex MySQL pas utilisé pour chaque requête [Résolu]
Requete: "CREATE TABLE truc LIKE Machin" Erreur de syntaxe !! ?CMS et visualisation de BDD
Requete Mysql complexe sur 3 tables 
Plus de sujets relatifs à : Requete BDD sur tables multiples


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR