i M@N

  • Signature
    One Love, One Heart, One Unity.
  • Site web
  • Nombre de sujets
    92
  • Nombre de messages
    1 681
  • Nombre de commentaires
    35
  • Nombre de news
    Aucune
  • Niveau en PHP
    Bon

Ses derniers sujets sur les forums

i M@N
le 14/12/2005 à 17:17
table MySQL : optimisation / structure
Hello !

Je suis pas trop au point sur les choix de type de champ MySQL aussi je me pose la question du meilleur format de chaque champ pour plusieurs tables MySQL.

J'ai plusieurs tables similaires avec cette structure :
## 
## Structure de la table `catalogue`
##

DROP TABLE IF EXISTS `catalogue`;
CREATE TABLE IF NOT EXISTS `catalogue` (
/*sans commentaire*/
`id` int(6) NOT NULL auto_increment,
/*contenu = soit 1 chiffre + 1 lettre
soit 2chiffres + 1lettre
soit 3 lettres*/
`format` char(3) NOT NULL default '10p',
/*chiffres ou lettres*/
`label` text NOT NULL,
/*pareil*/ `artiste` text NOT NULL,
`titre` text NOT NULL,
/*pareil mais par défaut doit être = x*/
`riddim` char(50) NOT NULL default 'x',
/*un prix variable entre 1.00 et 20.00€*/
`prix` text NOT NULL,
/*lettres par défaut doit être = x*/
`type` char(50) NOT NULL default 'x',
/*binaire : 0 ou 1*/
`new` int(3) NOT NULL default '0',
/*chiffres seulement*/
`quantity` int(3) NOT NULL default '1',
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM;
Donc la question que je me pose vu que les enregistrement sont de l'odre de plusieurs milliers c'est si la table a une structure adéquate et optimisée histoire de gagner du temps dans l'exécution des requêtes.

Merci d'avance pour vos remarques.

@+...
One Love, One Heart, One Unity.
i M@N
le 17/08/2005 à 21:55
REPOSiTORY
Hello !

Quelqu'un peut me donner un lien pour installer un repository svp?
Un repository dans le sens un script basé sur un fichier index.php ou .htaccess qui liste le repertoire courant, les repertoires dedans et fait tout le boulot de mise en page si y'a des fichiers html, jpg etc ...

Un truc dans le style http://www.madchat.org

@+...
One Love, One Heart, One Unity.
i M@N
le 10/05/2005 à 09:28
Requête foireuse à 30% :-/
Hello !

J'ai recodé mon catalogue qui fonctionne avec une table qui contitent les champs label, artiste, titre et riddim.

Si en local ça fonctionne (EasyPHP 1.7 avec PHP 5 dedans) chez free ça ne fonctionne plus qu'à 60%.

En effet, si on choisit un label ou un artiste en cliquant le lien ou en se servant des formulaires ça fonctionne ... mais pour les riddims y'a plus rien qui fonctionne. :-/

J'ai relu mon code et je vois vraiment pas où ça cloche ... donc je vous soumet le problème. : )

http://www.lephpfacile.com/wall/wall.php?id=2217

D'avance merci,

@+...
One Love, One Heart, One Unity.
i M@N
le 09/04/2005 à 19:19
Tri de fichiers
Hello !

Je liste un répertoire avec ce code :
<?php
$dossier = opendir ($dir);
while ($fichier = readdir ($dossier)) {
if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
$texte[] = $fichier;
}
}
closedir ($dossier);

?>

J'ai un souci pour trier la liste des fichiers contenue dans $texte[] et qui est :
doc1.inc
doc10.inc
doc11.inc
doc12.inc
doc13.inc
doc14.inc
doc15.inc
doc16.inc
doc17.inc
doc18.inc
doc19.inc
doc2.inc
doc20.inc

Comme vous le voyez, doc1.inc est avant doc10.inc alors qu'il devrait être avant doc2.inc.

Est-ce que quelqu'un sait comment faire pour récupérer un tableau avec les fichiers du répertoire dans l'ordre doc1.inc, doc2.inc ...

D'avance merci,

@+...
One Love, One Heart, One Unity.
i M@N
le 12/03/2005 à 15:38
souci avec explode ...
Hello !

J'ai un fichier .txt duquel je voudrais récupérer les données pour les mettre dans une base de données :fichier visiteurs.txt
date1 #file1 #ip1 #host1 #navigateur1
date2 #file2 #ip2 #host2 #navigateur2
date3 #file3 #ip3 #host3 #navigateur3
Voici mon code :
<?

$source = "./visiteurs.txt";

$fp = @fopen ("$source","r");

$texte_complet = @fread ($fp, @filesize("$source"));
$tableau = preg_split ("/(?=\n)/", $texte_complet);

$nb_lignes = count($tableau);

$i = 0;
for ($i=0; $i<=$nb_lignes; $i++) {
if ($i != $nb_lignes) {

$datas = explode ("#",$tableau[$i]); // explosion ...


count($datas);
for($j = 0;$j < count($datas);$j++)
{

$data_date = explode("#",$datas[0]);
$data_file = explode("#",$datas[1]);
$data_ip = explode("#",$datas[2]);
$data_host = explode("#",$datas[3]);
$data_navigateur = explode("#",$datas[4]);

echo '<b>1</b> '.$data_date[$j].' <b>2</b> '.$data_file[$j].' <b>3</b> '.$data_ip[$j].' <b>4</b> '.$data_host[$j].' <b>5</b> '.$data_navigateur[$j].'';
}


}
else {
echo '<b>1</b> '.$data_date[$j].' <b>2</b> '.$data_file[$j].' <b>3</b> '.$data_ip[$j].' <b>4</b> '.$data_host[$j].' <b>5</b> '.$data_navigateur[$j].'';
}

}

// on ferme le fichier
fclose ($fp);

?>

Et voici ce que ça m'affiche :
1 date1 2 file1 3 ip1 4 host1 5 navigateur1
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 date2 2 file2 3 ip2 4 host2 5 navigateur2
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 date3 2 file3 3 ip3 4 host3 5 navigateur3
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
J'y suis presque mais là je bloque un peu ... je comprends pas pourquoi il m'affiche les
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5


D'avance merci,

@+...
One Love, One Heart, One Unity.
i M@N
le 28/02/2005 à 11:55
effacer un dossier
Hello !

Je bataille pour effacer un dossier et si possible tous les fichiers de celui-ci.

Connaissez-vous une méthode 100% efficace ?

D'avance merci.

@+...
One Love, One Heart, One Unity.
i M@N
le 24/01/2005 à 18:29
SYSTEME DE GESTiON DES SMiLiES
Hello !

J'ai fait un système de gestion de smilies.
Y'a une page avec un formulaire qui contient un JavaScript (adapté du script de Lefounard et que j'ai modifié pour le rendre compatible iE & Mozilla),
un script qui met la liste des smilies à jour et crée les liens JavaScript pour insérer un smiley à l'endroit du curseur,
une page pour afficher les messages,
enfin un script qui crée un code PHP à base de str_replace pour afficher les smilies.

iMPORTANT : Vous devez créer un répertoire smilies et y mettre vos smilies,
le formulaire doit s'appeler formulaire
le champ où on insère les smilies doit s'appeler texte :
<form action="./message_traitement.php" method="post" name="formulaire">

...

<b>Message :</b>

<input type="text" name="texte" maxlength="150" size="25" onchange="setPosCurseur()" onclick="setPosCurseur()">';

dans otre fichier qui affichent les messages la variable qui contient les données issues du champ "texte" du formulaire doit s'appeller $texte,
ensuite il suffit de lancer le script qui génère smilies_replace.txt.

C'est parti !!

PAGE FORMULAiRE :
<html>
<head>
<title>Smilies</title>
<SCRIPT TYPE="text/javascript">

var g_posCurseur;

function setPosCurseur()
{
g_posCurseur = getPosCurseur(formulaire.texte);
}

function getPosCurseur(oTextArea)
{
var sAncienTexte = oTextArea.value;
var oRange = document.selection.createRange();
var sAncRangeTexte = oRange.text;
var sMarquer = String.fromCharCode(28)+String.fromCharCode(29)+String.fromCharCode(30);
oRange.text = sAncRangeTexte + sMarquer; oRange.moveStart('character', (0 - sAncRangeTexte.length - sMarquer.length));
var sNouvTexte = oTextArea.value;
oRange.text = sAncRangeTexte;

for (i=0; i <= sNouvTexte.length; i++)
{
var sTemp = sNouvTexte.substring(i, i + sMarquer.length);
if (sTemp == sMarquer)
{
var cursorPos = (i - sAncRangeTexte.length);
return cursorPos;
}
}
}

function insereChaine(sChaine)
{
if (typeof(g_posCurseur)=='undefined')
{
formulaire.texte.value+=sChaine;
}
else
{
var firstPart = formulaire.texte.value.substring(0, g_posCurseur);
var secondPart = formulaire.texte.value.substring(g_posCurseur,formulaire.texte.value.length);
formulaire.texte.value = firstPart + sChaine + secondPart;
}
}
</SCRIPT>
</head>
<body>
<center>

<form action="./message_traitement.php" method="post" name="formulaire">
<b>Auteur :</b>

<input type="text" name="auteur" size="25">

<b>Message :</b>

<input type="text" name="texte" maxlength="150" size="25" onchange="setPosCurseur()" onclick="setPosCurseur()">';

<input type="submit" value="Poster" size="10">
</form>

<?
/*fichier inclu qui affiche la liste des smilies et crée les liens JavaScript pour les insérer à l'endroit du curseur (voir ci-dessous le code de smilies.txt)*/
include('./smilies.txt');

?>
</center>
</body>
</html>

SCRiPT QUI CREE LA LiSTE DES SMiLiES (smilies.txt) :
<b>Pour ajouter un smiley à votre message, cliquez dessus.</b>

<?
$path = "./smilies/";
$dossier = opendir ($path);
while ($fichier = readdir ($dossier)) {
if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
$tableau[] = $fichier;
}
}
closedir ($dossier);

echo '<center>';
sort($tableau);
for($i=0;$i<count($tableau);$i++){
/*les valeurs que l'on souhaite afficher*/
$image=$tableau[$i];

echo "<a href=\"javascript:insereChaine(':".$tableau[$i].":')\"><img src=\"".$path.$tableau[$i]."\" align=\"absMiddle\" border=\"0\" alt=\"".$tableau[$i]."\" title=\"".$tableau[$i]."\"></a> ";

}
echo '</center>';

?>

PAGE TRAiTEMENT (message_traitement.php) :
<?
if (isset($_POST['auteur'])) $auteur = $_POST['auteur']; else $auteur = "";
if (isset($_POST['texte'])) $texte = $_POST['texte']; else $texte = "";

/*on se connecte à notre base*/
include("./base_connexion.php");

/*fonction nous permettant de faire des redirections*/
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
header("Location: $url");
}
}

/*on teste le contenu de la variable $auteur*/
if ($auteur=="") {
echo '<body onLoad="alert(\'Aucun auteur de précisé...\')">';
redirection('./');
exit;
}

/*on teste le contenu de la variable $texte*/
else if ($texte=="") {
echo '<body onLoad="alert(\'Le texte est vide...\')">';
redirection('./');
exit;
}

/*si tout est bon, on peut commencer l'insertion dans la base*/
else {
// on recupere la date de l'instant présent
$date = date("Y-m-d H:i:s");

// lancement de la requête d'insertion
$sql = "INSERT INTO messages VALUES('','$auteur','$date','$texte')";

/*on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)*/
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

/*on ferme la connexion à la base de données*/
mysql_close();

/*on redirige*/
redirection('./messages.php');

/*on termine le script courant*/
exit;
}

?>

LA PAGE QUi AFFiCHE VOS MESSAGES (messages.php) :
<?
/*on se connecte à notre base*/
include("./base_connexion.php");

/*lancement de la requête. on sélectionne les messages que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC)*/
$sql = 'SELECT id,auteur,date,texte FROM messages ORDER BY date DESC';

/*on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)*/
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
/*on récupère les valeurs qui nous intéressent*/
$id_message = $data['id'];
$auteur = $data['auteur'];
$date = $data['date'];
/*la variable qui contient les données issues du champ "texte" du formulaire doit s'appeller $texte*/
$texte = $data['texte'];

/*on décompose la date*/
sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", &$an, &$mois, &$jour, &$heure, &$min, &$sec);

/*anti code*/
$texte = htmlentities ($texte);

/*Smilies*/
include('./smilies_replace.txt');

/*on affiche les résultats*/
echo '<b>'.$jour.'.'.$mois.'.'.$an.' - '.$auteur.' : </b>';
echo ''.$texte.'';
}

/*on libère l'espace mémoire alloué à cette requête*/
mysql_free_result ($req);

/*on ferme la connexion à la base de données*/
mysql_close ();
?>

LE SCRiPT QUi GENERE smilies_replace.txt :
<? 

/*exploration du répertoire smilies*/
$path = "./smilies/";
$dossier = opendir ($path);
while ($fichier = readdir ($dossier)) {
if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
$tableau[] = $fichier;
}
}
closedir ($dossier);

sort($tableau);

/*on ouvre ou on crée le fichier*/
$fp = fopen ("./smilies_replace.txt", "w+");

/*on se positionne au début*/
fseek ($fp, 0);

fputs ($fp, "<? \r\n");

for($i=0;$i<count($tableau);$i++){
/*les valeurs que l'on souhaite afficher*/
$image=$tableau[$i];

$texte = "$"."texte = str_replace (':".$tableau[$i].":','<img src=\"".$path.$tableau[$i]."\" alt=\"".$tableau[$i]."\" title=\"".$tableau[$i]."\">', $"."texte);\r\n";

/*on écrit*/
fputs ($fp, $texte);

}
fputs ($fp, " ?>");

/*on ferme le fichier*/
fclose ($fp);

echo 'O.K ! ALL DONE ... SMiLiES UPDATED.';

?>
Have fun,

@+...
One Love, One Heart, One Unity.
i M@N
le 08/01/2005 à 11:08
News au format PDF
Hello !

Serait-il possible d'avoir la marche à suivre pour crééer un PDF avec PHP comme pour les news du site ?

D'avance merci.

@+...
One Love, One Heart, One Unity.
i M@N
le 08/12/2004 à 22:07
Héberger 2 sites sur la même machine
Hello !

GOOGLE me pose cette question à laquelle je ne sais répondre :
j'essaie d'heberger un deuxieme site sur la machine où j'ai déjà mis le premier site! j'ai essayé avec les virtualhost mais nada!! le serveur refuz totalement la connexion! le SE c windows 2000 server!
merci d'avance!

Si quelqu'un sait ... merci pour elle !!

@+...
One Love, One Heart, One Unity.
i M@N
le 06/12/2004 à 21:25
encadrement de nombres
Hello !

J'ai un souci (sûrement un problème de difficulté)... je cherche à faire varier $fp_7p en fonction du nombre $nombre_total_7p :
if (($nb_total_7p <="7") && ($nb_total_7p <"16")) {
$fp_7p = "5";
}

if (($nb_total_7p <="16") && ($nb_total_7p >"7")) {
$fp_7p = "6";
}

if (($nb_total_7p <="33") && ($nb_total_7p >"16")) {
$fp_7p = "6.8";
}

if (($nb_total_7p <="51") && ($nb_total_7p >"33")) {
$fp_7p = "7.4";
}

if (($nb_total_7p <="90") && ($nb_total_7p >"51")) {
$fp_7p = "9.6";
}

if (($nb_total_7p <="126") && ($nb_total_7p >"90")) {
$fp_7p = "11.2";
}

//fdp
else $fp_7p="0.01";

J'ai toujours $fp_7p qui vaut 0.01 ... pourtant $nb_total_7p égal 7. smiley

@+...
One Love, One Heart, One Unity.
LoadingChargement en cours