Aide pour un code php je debute et j n'y comprends rien
cs_rober
Messages postés86Date d'inscriptionvendredi 29 novembre 2002StatutMembreDernière intervention21 septembre 2010
-
4 oct. 2004 à 20:25
cs_rober
Messages postés86Date d'inscriptionvendredi 29 novembre 2002StatutMembreDernière intervention21 septembre 2010
-
5 oct. 2004 à 20:12
Rober
un ami m'a fait un code en php pour:
-1-creer une base de donnees a partir d'un fichier txt
-2-effectuer une recherche dans cette base de donnees
-3-recuperer dans un tableau toutes les lignes ou se trouvent le critere de recherche.
resultat:
-la base se cree correctement
-la recherche est possible.....mais......
si il y a un doublons dans la base il stoppe la recherche et me donne que les resultats avant le doublon.
POUVEZ VOUS M'AIDER SVP..........MERCI
ci joint le code et une copie partielle du fichier txt avec des doublons
<?php
// --- connexion à la base --- //
$server = 'localhost';
$user = 'root';
$password = '';
$base = "bdd";
// connexion à la base
$mysql_con = @mysql_connect($server, $user, $password)
or die (" Connexion à la base de données impossible:
\n" . mysql_error());
// sélection de la base
// si la base n'existe pas encore elle est créée avec la table articles
if ( !mysql_select_db($base, $mysql_con) ) {
echo "La base n'existe pas ! \n";
@mysql_query ("CREATE DATABASE ".$base) or die (mysql_error());
echo "Base créée
";
mysql_select_db($base, $mysql_con) or die ("Sélection impossible.
");
echo "Sélection OK
";
@mysql_query ($req_creation_table) or die (mysql_error());
echo "Table articles créée !
";
echo "Vous pouvez maintenant spécifier un fichier pour la remplir.
";
}
// --- si upload de la base --- //
if ( isset ($_POST['upload']) ) {
if ($_FILES['fichier']['name']!='') {
// vidage de la table actuelle
@mysql_query ("TRUNCATE TABLE articles") or die (mysql_error());
echo " Ancienne base effacée.
";
// copie du fichier contenant la nouvelle base
$fichier_dest = "c:/articles.tmp";
if (!move_uploaded_file ( $_FILES['fichier']['tmp_name'], $fichier_dest)) {
die ("Problème de copie");
}
// insertion de la nouvelle
$req = "LOAD DATA INFILE '". $fichier_dest ."'
INTO TABLE articles
FIELDS TERMINATED BY '".$_POST['sep']."'
LINES TERMINATED BY '\r\n'
IGNORE ".$_POST['ign']." LINES";
@mysql_query ($req) or die ($req . "
" . mysql_error());
// suppression du fichier temporaire
unlink ($fichier_dest);
echo " Nouvelle base insérée !
";
}
else echo "Tu me prends pour une truffe ?
";
}
// --- si recherche selon critere --- //
if ( isset ($_POST['valid_rech']) ) {
// les résultats sont rangés par fournisseur puis par désignation
// voir ORDER BY
$req = "SELECT article, designation, fournisseur, code_fournisseur ";
$req .= "FROM articles WHERE ";
$req .= "article LIKE '%".$_POST['critere']."%' OR ";
$req .= "designation LIKE '%".$_POST['critere']."%' OR ";
$req .= "fournisseur LIKE '%".$_POST['critere']."%' OR ";
$req .= "code_fournisseur LIKE '%".$_POST['critere']."%' ";
$req .= "ORDER BY fournisseur ASC, designation ASC";
$res = @mysql_query ($req) or die ("Echec requete recherche
" . $req . "
" . mysql_error());
while ($enreg = mysql_fetch_array ($res, MYSQL_ASSOC)) {
// coloration de la correspondance avec le critere
// à commenter si trop long
if ($le_critere!=\"\") {
$enreg['article'] = eregi_replace($a_surligner, $remplacer_par, $enreg['article']);
$enreg['designation'] = eregi_replace($a_surligner, $remplacer_par, $enreg['designation']);
$enreg['fournisseur'] = eregi_replace($a_surligner, $remplacer_par, $enreg['fournisseur']);
$enreg['code_fournisseur'] = eregi_replace($a_surligner, $remplacer_par, $enreg['code_fournisseur']);
}
LaurentKOogar
Messages postés369Date d'inscriptionsamedi 4 septembre 2004StatutMembreDernière intervention20 octobre 2013 5 oct. 2004 à 11:28
Yo,
voila sa requete Dude
// les résultats sont rangés par fournisseur puis par désignation
// voir ORDER BY
$req = "SELECT article, designation, fournisseur, code_fournisseur ";
$req .= "FROM articles WHERE ";
$req .= "article LIKE '%".$_POST['critere']."%' OR ";
$req .= "designation LIKE '%".$_POST['critere']."%' OR ";
$req .= "fournisseur LIKE '%".$_POST['critere']."%' OR ";
$req .= "code_fournisseur LIKE '%".$_POST['critere']."%' ";
$req .= "ORDER BY fournisseur ASC, designation ASC";
si il veut eviter les doublons, alors c'est mieux de le faire a l'INSERT donc si par exemple pas de boublon au niveau du code_fourniseur alors il faut inserer UNIQUE(code_fournisseur )
dans la table.
dorian53
Messages postés102Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention22 août 2005 5 oct. 2004 à 12:55
Re,
Effectivement il faut créer une table avec des fournisseurs possedant une clef primaire (sous entendu unique) pour eviter les futurs problemes car sur cette requete en question, il est impossible de recuperer des doublons.
sur ces 2 lignes le code "article" est le meme la "designation" est la meme mais le "fournisseur" et le "code fournisseur" ne sont pas les memes.
Quans je lance une recherche a: "10990" ou a :"Alcatel" par exemple il ne me donne pas les 2 lignes de reponses.