Avatar billede cyberdude Nybegynder
31. marts 2001 - 13:52 Der er 18 kommentarer og
1 løsning

undlad en bestemt linie når database opdateres??

Hejsa !!

Jeg har en .txt fil der har denne struktur...

STARTLISTE FOR STANDERHEJSNINGSMATCH (1)

Med spilledag for første runde 01-04-2001
                      Første start 10:15


;;Rnd 1;;Hul;M.nr  Spiller / Klub;Række;Hcp;Tee;ATS
;;10:15;;1;;449;Pedersen, Claus;;B;23,4;Gul;26


jeg har så lavet et script der indsætter alle data fra .txt filen ind i min database...

men jeg vil gerne undlade at indsætte følgende linie..
;;Rnd 1;;Hul;M.nr  Spiller / Klub;Række;Hcp;Tee;ATS
den første og så vil jeg gerne have at ALT der står over denne linie bliver indsat i en anden tabel... men hvordan gøres dette??
Avatar billede masterbp Nybegynder
31. marts 2001 - 14:06 #1

if (!ereg(\"^;;Rnd 1\", $linie)) {
  //indsæt linie
}
Avatar billede cyberdude Nybegynder
31. marts 2001 - 16:11 #2
det er HELE den linie der skal undlades...
og måske ændres indholdet af denne linie, men 1. linie SKAL aldrig med!!

så vil ovenstående stadig virke ??
Avatar billede cyberdude Nybegynder
31. marts 2001 - 16:20 #3
kom lige til at tænke...

enten skal hele den 1. linie undlades eller også skal der mellem M.nr og Spiller indsættes et ; tegn

så jeg ved ikke helt hvad der er nemmest...??
Avatar billede cyberdude Nybegynder
31. marts 2001 - 16:21 #4
nej glem lige den sidste kommentar, der mangler for mange ; tegn til at det vil funge....
Avatar billede doeleman Nybegynder
31. marts 2001 - 17:00 #5
Hvordan indlæser du filen? Med readfile?

file()-indlæser filen linie for linie i et array. Dette gør det let, at indsætte fra linie 2 af.
Se http://php.net/file
Avatar billede cyberdude Nybegynder
01. april 2001 - 10:54 #6
jeg har en side hvor på man upoader sin .txt fil og når den er uploadet kalder det upload script automatisk denne fil...

<?
include(\"sql.php3\");

sql(\"DELETE FROM golf_startliste\");
echo \"Alle GAMLE records er slettet!!<br>Opdateringen fortsætter automatisk!<br><br><hr>\";
// sleep(5);
$filnavn = \"upload/temp.txt\";
$fp = fopen($filnavn, r);
while($str = fgets($fp, 4000)){
$split = split( \"\\;\", $str);
$split[0]=addslashes($split[0]);
$split[1]=addslashes($split[1]);
$split[2]=addslashes($split[2]);
$split[3]=addslashes($split[3]);
$split[4]=addslashes($split[4]);
$split[5]=addslashes($split[5]);
$split[6]=addslashes($split[6]);
$split[7]=addslashes($split[7]);
$split[8]=addslashes($split[8]);
$split[9]=addslashes($split[9]);
$split[10]=addslashes($split[10]);
$split[11]=addslashes($split[11]);
$split[12]=addslashes($split[12]);

sql(\"INSERT INTO golf_startliste (tom1, tom2, klokken, tom3, hulnr, tom4, mednr, navn, tom5, raekke, hcp, tee, ast) VALUES (\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\', \'$split[4]\', \'$split[5]\', \'$split[6]\', \'$split[7]\', \'$split[8]\', \'$split[9]\', \'$split[10]\', \'$split[11]\', \'$split[12]\')\");
}
echo \"Startlisten er opdateret!!\";
?>


men kan /skal det laves på en smartere måde så er jeg åben overfor forslag til hvordan jeg får fjernet den linie  og ligeledes hvordan jeg får den tekst som står ovenover pågældende linie ind i en anden tabel!?
Avatar billede cyberdude Nybegynder
01. april 2001 - 15:46 #7
er der ingen der kan/vil hjælpe, jeg afsætter gerne lidt flere point...??
Avatar billede cyberdude Nybegynder
01. april 2001 - 15:50 #8
kan ikke få dit eks. til at virke!!
Avatar billede cyberdude Nybegynder
01. april 2001 - 16:04 #9
okay...

nu har jeg prøvet at læse filen med file() komandoen og fået hele filen udskrevet til skærmen, og det ser sådant her ud..

Line 0: STARTLISTE FOR STANDERHEJSNINGSMATCH (1)
Line 1:
Line 2: Med spilledag for første runde 01-04-2001
Line 3: Første start 10:15
Line 4:
Line 5:
Line 6: ;;Rnd 1;;Hul;M.nr Spiller / Klub;Række;Hcp;Tee;ATS
Line 7: ;;10:15;;1;;449;Pedersen, Claus;;B;23,4;Gul;26

så er det at jeg gerne vil have ALT på linie 0,1,2,3,4,5 i en tabel for sig, hvordan \"hiver\" jeg dem ud i et en variabel for sig så den kan gemmei en database ??
og linie 6 SKAL ikke gemmes med i databasen, hvordan filtrere jeg den fra??
Avatar billede masterbp Nybegynder
02. april 2001 - 10:36 #10
Jeg ved ikke hvordan du vil gemme de første linier i databasen, men her er et forslag:
$file = file($filnavn);
for ($i=0;$i<6;$i++) {

}
Avatar billede masterbp Nybegynder
02. april 2001 - 10:43 #11
ups.. den gik da vist galt :)
Avatar billede masterbp Nybegynder
02. april 2001 - 10:50 #12
Her er den:
<?
$fil = file($filename);

//gem linie 1-5 i $toptext
for($i=0;$i<5;$i++) {
    $toptext[] = array_shift($fil);
}
//slet 6. linie
array_shift($fil);

foreach($fil as $entry) {
    $split = explode(\";;\", $entry);
    $sql = sprintf(\"INSERT INTO golf_startliste \" .
          \"(tom1, tom2, klokken, tom3, hulnr, tom4, mednr, navn, tom5, raekke, hcp, tee, ast) \".
          \"VALUES (\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')\",
          addslashes($split[0]),
          addslashes($split[1]),
          addslashes($split[2]),
          addslashes($split[3]),
          addslashes($split[4]),
          addslashes($split[5]),
          addslashes($split[6]),
          addslashes($split[7]),
          addslashes($split[8]),
          addslashes($split[9]),
          addslashes($split[10]),
          addslashes($split[11]),
          addslashes($split[12]));
      //udskriver til sql-query til skærmen   
      echo $sql;   
}
?>
Avatar billede cyberdude Nybegynder
02. april 2001 - 16:42 #13
masterbp >> desvære kan jeg ikke få dit eks. til at virke :-(( når jeg bruger det indsætter den slet intet i databasen :-((
og jeg får ingen fejl!!
Avatar billede cyberdude Nybegynder
02. april 2001 - 16:43 #14
masterbp >> jeg kom til at trykke på den forkerte knap... :-((((((((((
kan jeg få pointene tilbage, eller kan du hjælpe mig vidre så det kommer til at funge ??
Avatar billede masterbp Nybegynder
02. april 2001 - 18:24 #15
Erhm..
Jeg har ikke testet ovenstående, men det virker sikkert.
Du skal jo lige erstatte linien
  echo $sql
med noget i stil med
  mysql_query($sql) or die(\"db error on insert\");
ellers bliver skidtet jo ikke gemt :)

Avatar billede cyberdude Nybegynder
02. april 2001 - 19:22 #16
øhh nu har jeg lavet en funktion som gør at jeg bare skal skrive sql(....... for at udføre koden
sådan som her....
sql(\"INSERT INTO .......

her er lidt kode... som gør at jeg bare kan nøjes med sql komandoen

function sql($sql) {
  flush();
  return mysql_query($sql);
  mysql_close();
}


men jeg prøver lige at ændre lidt i det!!
Avatar billede cyberdude Nybegynder
02. april 2001 - 20:04 #17
Nu ser mit script sådant her ud, og det funger faktisk... med den ene undtagelse at jeg ikke kan få den til at gemme min toptext i min database... :-(((

og så at jeg ikke kan være 100 % sikker på at det altid er linie 6 der skal slettes (det afhænger af navnet på matchen om hvor mange linie de fylder... så kan man ikke gøre det sådant at den undlader den linie der starter med
;;Rnd1......... altså man indsætter

men hvordan får jeg den til at gemme min toptext i en seperat tabel ??

her er scriptet
---

<?
include(\"sql.php3\");

sql(\"DELETE FROM golf_startliste\");
echo \"Alle GAMLE records er slettet!!<br>Opdateringen fortsætter automatisk!<br><br><hr>\";
sql(\"DELETE FROM golf_startliste_top\");
echo \"Alle GAMLE Match overskrifter er slettet!!<br>Opdateringen fortsætter automatisk!<br><br><hr>\";

$filnavn = \"upload/temp.txt\";
$fil = file($filnavn);


//gem linie 1-5 i $toptext
for($i=0;$i<5;$i++) {
    $toptext[] = array_shift($fil);
// $split = split( \"\", $fil);
sql(\"INSERT INTO golf_startliste_top (kamp) VALUES (\'$toptext\')\");

}
//slet 6. linie
for($i=5;$i<6;$i++) {
    $slettxt[] = array_shift($fil);
}



array_shift($fil);

foreach($fil as $entry) {
    $split = explode(\";\", $entry);
    $sql1 = sprintf(\"INSERT INTO golf_startliste \" .
          \"(tom1, tom2, klokken, tom3, hulnr, tom4, mednr, navn, tom5, raekke, hcp, tee, ast) \".
          \"VALUES (\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')\",
          addslashes($split[0]),
          addslashes($split[1]),
          addslashes($split[2]),
          addslashes($split[3]),
          addslashes($split[4]),
          addslashes($split[5]),
          addslashes($split[6]),
          addslashes($split[7]),
          addslashes($split[8]),
          addslashes($split[9]),
          addslashes($split[10]),
          addslashes($split[11]),
          addslashes($split[12]));
      //udskriver til sql-query til skærmen   

sql(\"INSERT INTO golf_startliste (tom1, tom2, klokken, tom3, hulnr, tom4, mednr, navn, tom5, raekke, hcp, tee, ast) VALUES (\'$split[0]\', \'$split[1]\', \'$split[2]\', \'$split[3]\', \'$split[4]\', \'$split[5]\', \'$split[6]\', \'$split[7]\', \'$split[8]\', \'$split[9]\', \'$split[10]\', \'$split[11]\', \'$split[12]\')\");
}
?>
Avatar billede cyberdude Nybegynder
02. april 2001 - 20:22 #18
okay nu har jeg fået den til at skrive det ind i min database, men linie 1 bliver tilskrevet ca. 5 gange og linie 2 bliver det 4 gange, linie 3 bliver det 3 gange, linie 4 bliver det 2 gange og linie 5 bliver det 1 gang, hvad går galt ??

her er den del af scriptet
-----
for($i=0;$i<5;$i++) {
    $toptext[] = array_shift($fil);
foreach($toptext as $entry) {
    $split = explode(\" \", $entry);
    $sql1 = sprintf(\"INSERT INTO golf_startliste_top \" .
          \"(kamp) \".
          \"VALUES (\'%s\')\",
          addslashes($split[0]));

sql(\"INSERT INTO golf_startliste_top (kamp) VALUES (\'$split[0]\')\");
}
}
Avatar billede cyberdude Nybegynder
02. april 2001 - 20:25 #19
øhhh flovt... jeg skulle jo bare flytte en }... så virker det!!

men stadig hvis der findes en metode som gør at det ikke automatisk bliver linie 6 der \"smides\" væk, så det i stedet bliver den linie der starter med ;;Rnd
da det er !==% sikker at den linie der ikke skal bruges starter med dette....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester