Problème récupération données depuis BDD MySQL.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème récupération données depuis BDD MySQL.

Re: Problème récupération données depuis BDD MySQL.

par patcoinfo » 14 nov. 2012, 10:15

Essaie ce code :

<?php
$server="localhost";
$password="";
$username="root";
$dbname="playsms";

//connexion à la base de donnée playsms

$link=mysql_connect($server,$username,$password);
if(!$link){
die("Echec de connexion au serveur de base de donnée:".mysql_error());
}

//choix de la base de donnée
mysql_select_db($dbname);
$sender = mysql_escape_string($_GET['emetteur']);
$var=' ';
$emetteur=(string)trim(strstr($sender,$var));

//création et execution de la requete sql


$emetteur = $_GET['emetteur'];
$result=mysql_query('SELECT * FROM JDOSSIER WHERE NUM_DOSSIERS="'.$emetteur.'"');

//traitement du résultat

$donnee=mysql_fetch_assoc($result);
$totalRows_donnee= mysql_num_rows($result);
if(!empty($totalRows_donnee)){

echo $donnee["CIVILITE"]." ".$donnee["PRENOM_REQUERANT"]." ".$donnee["NOM_REQUERANT"]." votre dossier de ".$donnee["OBJET"]." est ".$donnee["CODE_SITU"]." depuis le ".$donnee["DATE_SITU"];
}

?>


voici un site qui peut t'aider : http://www.ivoire-plus.net/rad/

Re: Problème récupération données depuis BDD MySQL.

par patcoinfo » 14 nov. 2012, 09:56

Est ce qu'il ne sera pas facile que tu traite la récupération de tes données dans la boucle while tout simplement au lieu d'utiliser un array. Tu peux t'inspirer des RADPHP comme http://www.ivoire-plus.net/rad/

Re: Problème récupération données depuis BDD MySQL.

par doorgets » 13 nov. 2012, 10:35

En général, dès que l'on traite tous les enregistrements d'une table, on utilise une pagination.
Si c'est un traitement autre que de l'affichage, il vaut mieux utiliser la ligne de commande et ne pas tout stocker en mémoire, mais traiter les enregistrements 1 par 1.
Je suis tout à fait d'accord

Re: Problème récupération données depuis BDD MySQL.

par Mazarini » 13 nov. 2012, 10:06

En général, dès que l'on traite tous les enregistrements d'une table, on utilise une pagination.
Si c'est un traitement autre que de l'affichage, il vaut mieux utiliser la ligne de commande et ne pas tout stocker en mémoire, mais traiter les enregistrements 1 par 1.

Re: Problème récupération données depuis BDD MySQL.

par doorgets » 12 nov. 2012, 23:52

Bonsoir,
le problème vien du tableau $phptracks[]
lorsque le nombre d'entrée est trop important ton tableau devient volumineux

pour contourner le problème il faut utiliser "SELECT COUNT(*) as counter FROM Tracks" pour compter le nombre de champs
et faite de limit genre "SELECT * FROM LIMIT 0,200 "

car je pense que tu n'auras jamais besoin de toute tes champs en méme temps.

Bon courage pour la suite

Re: Problème récupération données depuis BDD MySQL.

par moogli » 12 nov. 2012, 22:15

salut,
Est-ce mon code Php qui est mal écrit ? (l'affectation dans ma variable $phptracks)
Est-ce que j'arrive aux limites de MySql ? (3000 enr.)
Est-ce dans les configurations de mes navigateurs ?
Est-ce dans la configuration de mon serveur apache ?
1/ a priori non, mais la tu ne fait rien avec ton code donc on ne pas trop savoir. par contre il est possible que remplir un tableau puisse saturer la mémoire, mais 3000 enregistrements je pense pas
2/ limit de mysql tu rêve c'est prévu pour traiter des millions de tuples XD
3/ non
4/ non

au pire si le traitement sql est trop long tu aura un time out (30s par défaut).

si tu nous donne au moins la structure de la table je peux faire un test mais y a pas de raison.

peux tu nous montrer le code complet ?


@+

Problème récupération données depuis BDD MySQL.

par Ayrel » 12 nov. 2012, 21:48

Bonjour à tous,

Voilà, je vous expose mon petit souci.
J'ai une base de données MySQL des plus simpliste avec une table contenant + de 3000 enregistrements et ça va continuer d’augmenter avec le temps.
Je suis actuellement en train de créer une page Php pour mettre en forme ses données, et c'est là que ça se gate.

Lorsque je récupère les données depuis cette table, mes navigateurs (Chrome, FF, IE) partent en vrille (une sorte de timeout certainement).
Voici le code qui pose problème :
// Connection à la base de données.
$cnx = mysql_connect("localhost", "root", "") or die("could not connect to database.");
mysql_select_db("Music", $cnx);

// Récupération des différents morceaux de la bibliothèque.
$sqlreq = "SELECT * FROM Tracks";
$sqltracks = mysql_query($sqlreq) or die (mysql_error());
while($sqltrack = mysql_fetch_array($sqltracks))
{
	$phptracks[] = $sqltrack;
}

// Libértation des ressources.
mysql_free_result($sqltracks);
mysql_close($cnx);
Ce problème disparait lorsque la table n'est pas aussi volumineuse (avec 200 enr. ça fonctionne très bien) mais j'aurais du mal à dire à partir de combien d'enregistrements cela se produit.

Est-ce mon code Php qui est mal écrit ? (l'affectation dans ma variable $phptracks)
Est-ce que j'arrive aux limites de MySql ? (3000 enr.)
Est-ce dans les configurations de mes navigateurs ?
Est-ce dans la configuration de mon serveur apache ?

N'hésitez pas à m'en demander plus si ça peut vous permettre d'y voir plus clair. :)
Merci d'avance.

Cordialement.