begin process at 2012 05 28 11:57:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

aide pour un code php je debute et j n'y comprends rien


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

aide pour un code php je debute et j n'y comprends rien

lundi 4 octobre 2004 à 20:25:10 | aide pour un code php je debute et j n'y comprends rien

rober


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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Articles</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
<style type="text/css">
<!--
body{
background-color:#fff;
color:#000;
font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif;
font-size:small;
}

th {
text-align: left;
padding: 0 0.4em 0 0.4em;
background: #ddc;
}

table.resultats {
border: #aaa 1px solid;
margin: 0 0 1em 0;
}

.trem {
background-color: #f6f6ee;
}

fieldset {
border: #aaa 1px solid;
}

.val {
font-weight: bold;
color: #d00;
}

a {
color: #444;
}
-->
</style>
<script type="text/javascript">
<!--
function afficherUpload () {
var formupload = document.forms['formupload'];
formupload.style.display = '';
document.getElementById('affform').style.display = 'none';
}
// -->
</script>
</head>
<body>

<form id="rech" method="post" action="rech_article.php4">
<fieldset>
<legend>Critère</legend>

<input type="text" name="critere" value="<?=(isset($_POST['critere'])? $_POST['critere'] : '')?>" maxlength="50" size="51" />
<input type="submit" name="valid_rech" value="Zou" />

</fieldset>
</form>

<?php
// --- connexion à la base --- //
$server = 'localhost';
$user = 'root';
$password = '';
$base = "bdd";

// connexion à la base
$mysql_con = @mysql_connect($server, $user, $password)
or die ("<b>Connexion à la base de données impossible:</b><br />\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 "<b>La base n'existe pas !</b><br />\n";

@mysql_query ("CREATE DATABASE ".$base) or die (mysql_error());
echo "Base créée<br />";

mysql_select_db($base, $mysql_con) or die ("Sélection impossible.<br />");
echo "Sélection OK<br />";

$req_creation_table = "
CREATE TABLE `articles` (
`article` varchar(20) NOT NULL default '',
`designation` varchar(50) NOT NULL default '',
`fournisseur` varchar(30) NOT NULL default '',
`code_fournisseur` varchar(20) NOT NULL default '',
PRIMARY KEY (`article`),
KEY `designation` (`designation`)
) TYPE=MyISAM;
";

@mysql_query ($req_creation_table) or die (mysql_error());
echo "Table articles créée !<br />";
echo "Vous pouvez maintenant spécifier un fichier pour la remplir.<br /><br />";
}

// --- 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 "<b>Ancienne base effacée.</b><br />";

// 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 . "<br />" . mysql_error());

// suppression du fichier temporaire
unlink ($fichier_dest);
echo "<b>Nouvelle base insérée !</b><br /><br />";
}
else echo "<b>Tu me prends pour une truffe ?</b><br /><br />";
}

// --- 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<br />" . $req . "<br />" . mysql_error());

if (mysql_num_rows ($res)>0) {
echo "<table class=\"resultats\">\n";
echo "<caption>".mysql_num_rows ($res)." résultat(s)</caption>\n";
echo "<tr><th>Article</th><th>Désignation</th><th>Fournisseur</th><th>Code fournisseur</th></tr>\n";

$nb_lignes = 0;
$le_critere = $_POST['critere'];
$a_surligner = '('. quotemeta($le_critere) .')';
$remplacer_par = '<span class="val">\\1</span>';

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']);
}

// nouvelle ligne, couleur alternée
echo "<tr" . (++$nb_lignes%2==0? " class=\"trem\"" : '') .">";
echo "<td>".$enreg['article']."</td>";
echo "<td>".$enreg['designation']."</td>";
echo "<td>".$enreg['fournisseur']."</td>";
echo "<td>".$enreg['code_fournisseur']."</td>";
echo "</tr>\n";
}
echo "</table>\n";
}
else {
echo "<b>Aucun résultat</b>";
}
}
?>

<div id="affform"><a href="javascript:afficherUpload();" title="">Changer la base de données</a><br /></div>
<form id="formupload" enctype="multipart/form-data" style="display:none;" method="post" action="rech_article.php4">
<fieldset>
<legend>Téléchargement d'une nouvelle base</legend>
<table>
<tr><td><b>Fichier</b></td><td><input type="file" name="fichier" /></td></tr>
<tr><td><b>Séparateur</b></td><td><input type="text" name="sep" maxlength="3" size="3" value=";" /></td></tr>
<tr><td><b>Lignes à ignorer </b></td><td><input type="text" name="ign" maxlength="3" size="3" value="0" /></td></tr>
<tr><td></td><td><input type="submit" name="upload" value="Zou" /></td></tr>
</table>
</fieldset>
</form>

</body>
</html>


et le fichier txt

"Article;Designation article;Nom du fournisseur;Fournisseur"
"0100-4701-0;THERMOCOUPLE TUBE TVT 6000;ALCATEL COMPTECH;106081"
"10794;BOITE AMERIC.CART.20KG 360X340H265;ERDEM;193292"
"10987;A438678 HUILE ALCATEL 102 FUT 60L;BEAUFRERE ET CIE;190767"
"10990;HUILE ALCATEL 120 BIDON 1L;BEAUFRERE ET CIE;190767"
"10990;HUILE ALCATEL 120 BIDON 1L;ALCATEL HVT;200140"
"10991;HUILE ALCATEL 120 - FUT 56L;BEAUFRERE ET CIE;190767"
"10996;A438678 HUILE ALCATEL 102 BIDON 2L;BEAUFRERE ET CIE;190767"
"10996;A438678 HUILE ALCATEL 102 BIDON 2L;ALCATEL HVT;200140"
"11068;A452370 SOCLE MICROMANIP.;SEREMO;198773"
"13030;A439825 FOURREAU;MAGNIN;196192"
"13030;A439825 FOURREAU;SAVOIE INDUSTRIE VEYRAT BRUNO;198616"
"13030;A439825 FOURREAU;TEISSIER TECHNIQUE;199267"
"13031;A439821 RACCORD;TEISSIER TECHNIQUE;199267"
"13032;A439824 EMBOUT;SERRET MECANIQUE;198783"
"13032;A439824 EMBOUT;TEISSIER TECHNIQUE;199267"
"13036;A441692 MOLETTE;MAGNIN;196192"
"13037;A441693 BRIDE;SERRET MECANIQUE;198783"
"13037;A441693 BRIDE;TEISSIER TECHNIQUE;199267"
"13099;A444821 PROTECTEUR VERRE;PRECIVER;197799"
"13100;A444820 CLIPS;FMB SARL;193566"
"13136;A457661 VIS CHC M4-12 PERC D.1 INOX;MAURIN EMILE;196485"
"13151;VIS CHC M4-25 PERCEE INOX A447319;FORT MAURICE;193636"
"13152;G401084 VIS CS M3X12 PERCEE ALUMINIUM;MAURIN EMILE;196485"
"13160;G401331 TRESSE DE MASSE;GERAL;194012"
"13190;G300768 PALIER;MAGNIN;196192"
"13207;A439535 AXE;TEISSIER TECHNIQUE;199267"
"13217;A439617 RONDELLE;FMB SARL;193566"
"13217;A439617 RONDELLE;PRECITOLE;197796"
"13218;A441052 ROND. D22X32 EP.5 UZ39;MAGNIN;196192"
mardi 5 octobre 2004 à 03:39:24 | Re : aide pour un code php je debute et j n'y comprends rien

dorian53

Salut,

le pavé de code n'est pas tres attirant ^^ Peux tu juste resortir la requete en question :)

DoR][aN
mardi 5 octobre 2004 à 11:28:01 | Re : aide pour un code php je debute et j n'y comprends rien

LaurentKOogar

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.

Laurent
[ Lien ]



mardi 5 octobre 2004 à 12:55:37 | Re : aide pour un code php je debute et j n'y comprends rien

dorian53

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.

DoR][aN
mardi 5 octobre 2004 à 20:12:46 | Re : aide pour un code php je debute et j n'y comprends rien

rober


Rober
je vous remercie mais je doits aporter une precision

je veux recurperer les doublons

exemple:

"10990;HUILE ALCATEL 120 BIDON 1L;BEAUFRERE ET CIE;190767"
"10990;HUILE ALCATEL 120 BIDON 1L;ALCATEL HVT;200140"

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.

Merci de votre aide


Cette discussion est classée dans : base, req, mysql, echo, fournisseur


Répondre à ce message

Sujets en rapport avec ce message

problème afficher données de mysql [ par maxxou56 ] Je suis débutant en php, j'ai créer ma base de données. Ainsi, désormais je souhaiterais afficher ces donées sur une page php.Voici, mon code (ne vous boutons confirmmation [ par gezaak ] salut j'ai développer un bout de code (php) qui permet le vérification d'un nom dans une base de donne, si le nom existe il affiche un message "nom ex Problème d'insertion dans une base mysql 5.1.45 [ par patingfree ] Bonjour à tous, pour l'apprentissage de php j'avais installé easyphp 5.3.2i pour interfaçer une base de données mysql(base)renseignée à l'aide d'un fo Requête bloquée et aucnu resultat [ par ABF ] Bonjour, J'ai une base mysql en local nommée "test" J'ai une table "region" Dans mon php je fais : $base = mysql_connect ('localhost', 'root', ''); requet de recherche [ par kabi14 ] bonjoour je veux savoire votre avis apropos de: la realisation d une requet qui fait une multi recherche cest a dire j ai quatre champ trois de t recherche dans base mysql [ par karlito911 ] bonjour a tous, voila j'aurais besoin de votre aide car je me suis lancé dans un petit projet je suis en train de developper un site web local pour m Probléme avec un tableau avec tri dynamique [ par mereup ] Bonjour, Voila je suis en train de faire un tableau dynamique avec un tri dynamique mais j'ai un probléme que je ne comprend pas. (j'utilisa WAMPSERVE Mon php ne sais pas compter [ par winnie39 ] Bonjour à tous,Voila j' ai comme qui dirais un petit souci,je suis en train de créer un affichage de produits via la base de donnée en utilisant mysql insertion des donnees sous mysql [ par petiteamoula ] bonjour a tous j'ai decouvrais ke ce site et vraiment super je vous remerci j'ai un gros prob qui me gène vraiment j'ai une base sous mysql et je tra problème pour supprimer une ligne de ma base de donnée [ par matt53 ] Bonjour à tous,Voici mon problème, je n'arrive pas à supprimer une ligne dans ma base de donnée quand je clique sur une image.Je pense que c un problè


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,134 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales