Text Array mit MySQL Array vergleichen

TZeRo

Grünschnabel
Hi!

ich hoffe das Ihr mir helfen könnt, ich bin PHP Anfänger....das mal so vorweg!

PHP:
<?php
# 
include(".\db_connect.inc.php");
 
# Datei laden
$datei = "preisliste.txt";
$inhalt = file($datei,"rb"); 
$anzahl = count($inhalt); 
 
for($i = 0; $i < $anzahl-1; $i++)
	{
# inhalt zerteilen Zeilenumbrüche
	 $eintrag = explode("\n",$inhalt[$i]);
$new = explode("\t",$eintrag[0]); 
 
# Variabelen definieren
$artnr = $new[0];
$netto = $new[1];
$brutto = $new[2];
$bezei = $new[3];
 
 
$sql = "SELECT ARTNR FROM `bugek`";
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
if ($artnr == $row[0])
 
{
echo"TEST";
}
else {
$escaped_item = mysql_escape_string($bezei);
$sql = "INSERT INTO BUGEK ( ARTNR, KURZBECEICHNUNG, NETTO, BRUTTO)
		 VALUES ('$artnr', '$escaped_item', '$netto', '$brutto')";
mysql_query($sql); 
echo "DER ARTIKEL WURDE HINZUGEFÜGT"; 
}
} 
 
}	
?>

Ich möchte die Artikelnummer aus der Text File mit der aus meiner MySql Tabelle vergleichen. Existiert die Nummer nicht, möchte ich gerne das Aray aus der Text File in der SQL Tabelle neu einfügen. Falls die Artikelnummer in der Sql Tabelle vorhanden ist, soll dann eine weitere Abfrage den Netto Preis überprüfen und gegebenfalls den Nettopreis aktuallieseren.

Ich bekomme das mit dieser Abfrage aus der Text und der MySql Tabelle nicht hin. Und mein PC kriecht nur wenn das Script starte.

Ich wäre sehr dankbar für ein paar Lösungsansätze

Euer TZERO!
 
Bevor du nun einen Eintrag in die DB-Tabelle machen willst, willst du zuvor prüfen ob dieser Artikel bereits vorhanden ist?

Gehe davon aus, das dies die Aufgabenstellung ist.

Also wenn über ein input-tag eine Artikelnummer angegeben und das per Formularbutton gesendet wird, dann machst du folgendes:

du setzt eine DB-Abfrage wie folgt:

PHP:
$artikel_nr_vorhanden = mysql_query("SELECT artikelnr FROM tabelle WHERE artikelnr = '".$HTTP_POST_VARS['artieklnummer']."'");

if($ist_was vorhanden = mysql_num_rows($artikel_nr_vorhanden) == '0') {
     // hier kannst du den Eintrag in die DB machen
}
else {
   echo "Ein Eintrag ist nicht möglich, da dieser Artikel bereits in der DB vorhanden ist.";
}
 
Nur mal ganz am Rande, dein code sieht verdammt nach Online-Shop aus:
INSERT INTO BUGEK ( ARTNR, KURZBECEICHNUNG, NETTO, BRUTTO)...

denk mal dran, dass sich die Mehrwertsteuer auch mal ändern kann, und dann alle BRUTTO einträge per Hand ändern... - den Eintrag würd ich weglassen. Kann php auch beim anzeigen ausrechnen

$mwst = 0.16;

$brutto = bcmul($netto,($mwst+1),2);

oder anders herum:

$netto = bcdiv($brutto,($mwst+1),2);
 
Hi!

erstmal ein grosses Danke! ....Brett vorm Kopf gehabt....:)

Ich habe mein Script jetzt mit Abfrage hinbekomen! Aber die Geschwindigkeit ist doch sehr langsam!


PHP:
<?php
# 
include(".\db_connect.inc.php");
 
# Datei laden
$datei = "preisliste.txt";
$inhalt = file($datei,"rb"); 
$anzahl = count($inhalt); 
#print_r($inhalt);
for($i = 0; $i < $anzahl-1; $i++)
	{
# inhalt zerteilen Zeilenumbrüche
	 $eintrag = explode("\n",$inhalt[$i]);
$new = explode("\t",$eintrag[0]); 
 
# Variabelen definieren
$artnr = $new[0];
$netto = $new[1];
$brutto = $new[2];
$bezei = $new[3];
 
# MySQL Query 
$db_artikel_nr = mysql_query("SELECT ARTNR FROM BUGEK WHERE ARTNR = $artnr"); 
$db_netto = mysql_query("SELCT NETTO FROM BUGEK WHERE NETTO = $netto");
 
#Abfrage 
if($artnr = mysql_num_rows($db_artikel_nr) == '0') { 
	 $escaped_item = mysql_escape_string($bezei);
$sql = "INSERT INTO BUGEK ( ARTNR, KURZBECEICHNUNG, NETTO, BRUTTO)
	 VALUES ('$escaped_item', '$bezei', '$netto', '$brutto')";
mysql_query($sql); 
} 
else{ 
# so in etwa Der Netto Betrag soll geprüft!
	 if($netto = mysql_num_rows($db_netto) =='0') {
	 $sql = "UPDATE BUGEK SET NETTO = $netto";
	 mysql_query($sql); 
	 }
} 
}
?>

Meine Textdatei hat 5300 Zeilen! Was für überlegungen muss ich machen um das Script schneller zu machen!

Euer Tzero
 
So jetzt darf ich mir mal auf die Schulter klopfen :) ! Für ein PHP Anfänger doch garnicht schlecht!

@saila
Ich hab das mal etwas anders gelöst! Mit deinen thread, hast du mir auf die Sprünge geholfen THX

@fh_study
Den Brutto Betrag hab ich jetzt ganz rausgenommen! Da dieser von meinen Shop nicht benötigt wird ! THX

PHP:
<?php
include(".\db_connect.inc.php");
	include(".\function.php"); 
$datei = "preisliste.txt";
$text_inhalt = file($datei,"rb"); 
$anzahl = count($text_inhalt); 
 
echo '<table width="85" border="1">';
for($i = 1; $i < $anzahl-1; $i++) {
# inhalt zerteilen Zeilenumbrüche
$eintrag = explode("\n",$text_inhalt[$i]);
$txt_row = explode("\t",$eintrag[0]); 
 
	#Variabel definieren
$artnr = $txt_row[0];
$bezei = $txt_row[3];
$netto = $txt_row[1];
 
 
# Abfragen von TEXT zu SQL 
$sql_art= mysql_query("SELECT ARTNR FROM bugek WHERE ARTNR =".$artnr); 
$result_art = mysql_num_rows($sql_art); 
 
$sql_netto = mysql_query('SELECT * FROM bugek WHERE ARTNR = '.$artnr.' AND NETTO = '.$netto); 	
$result_netto = mysql_num_rows($sql_netto);
 
if(!$result_art) { 
# neuer Artikel hinzufügen
artikel_neu($artnr, $bezei, $netto);
$status = "neu"; 
 
} elseif ($result_art == true && !$result_netto) {
	# Nettobetrag aktualliesieren
$sql ="UPDATE bugek SET NETTO =".$netto." WHERE ARTNR =".$artnr;
	mysql_query($sql) or die (" FEHLER 3".mysql_error());
	$status = "update";
} else {
# Datensatz wird nicht verändert
$status = "alt";
}
 
echo '<tr>';
	echo '<td>'.$artnr.'</td>';
	echo '<td>'.$bezei.'</td>';
	echo '<td>'.$netto.'</td>';
echo '<td>'.$status.'</td>'; 
}
echo '</table>';
?>


Nun muss den VK Preis automatisch kalkulieren lassen und in den Shop übertragen
 
Zurück