Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst]PDOException und ich weiß nicht warum!!!

Eingetragen von Ati (210)
am 27.02.2012 - 16:00 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo zusammen,

aus verschiedenen Gründen muß ich ein eigenes Modul für den CSV-Import machen. Eine Variante konnte ich schon
gut lösen aber bei der zweiten Art bekomme ich folgendes angezeigt:

Zitat:

PDOException: in tpimport_form_submit() (Zeile 267 von C:\xampplite\htdocs\drupal7\sites\all\modules\csvimport\csvimport.module)

Die Fehlermeldung alleine ist ja doof deswegen bischl Code dazu:

function tpimport_my_form() {
  return drupal_get_form('tpimport_form');
}

function tpimport_form() {
  $form = array();
  $form['#attributes']['enctype'] = "multipart/form-data";
  $form['browser'] = array(
    '#type' => 'fieldset',
    '#title' => t('Browser Upload'),
    '#collapsible' => TRUE,
    '#description' => t("Upload a TP file."),
  );
  
  $file_size = t('Maximum file size: !size MB.', array('!size' => file_upload_max_size()));
  
  $form['browser']['file_upload'] = array(
    '#type' => 'file',
    '#title' => t('CSV File'),
    '#size' => 40,
    '#description' => t('Select the CSV file to be imported. ') . $file_size,
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  
  // set the form encoding type
  
  return $form;
}

function tpimport_form_validate($form, &$form_state) {

// attempt to save the uploaded file
   $validators = array('file_validate_extensions' => array());
  $file = file_save_upload('file_upload', $validators);
 
  // check file uploaded OK
  if (!$file) {
    form_set_error('file_upload', t('A file must be uploaded or selected from FTP updates.'));
  }
  else {
    // set files to form_state, to process when form is submitted
    $form_state['values']['file_upload'] = $file;
  }
}

function datumberechnen($dat)
{
if (strlen($dat)== 8){
             $tag = substr($dat,0,2);
             $monat = substr($dat,2,2);
             $jahr = substr($dat,4,4);
             $datu = $tag .".".$monat.".".$jahr;
             $kawo = date("W", mktime(0,0,0,$monat,$tag,$jahr));
             Return array($datu,$kawo);
           }
elseif (strlen($dat)== 7) {
  $tag = substr($dat,0,1);
  $monat = substr($dat,1,2);
  $jahr = substr($dat,3,4);
  $datu = $tag .".".$monat.".".$jahr;
  $kawo = date("W", mktime(0,0,0,$monat,$tag,$jahr));
  Return array($datu,$kawo);
}

}



function tpimport_form_submit($form, &$form_state) {
  $line_max = variable_get('user_import_line_max', 5000);
  ini_set('auto_detect_line_endings', true);
  $filepath = $form_state['values']['file_upload']->uri;
  $handle = @fopen($filepath, "r");

  // start count of imports for this upload
  $send_counter = 0;

  while ($row = fgetcsv($handle, 5000, ';')) {
    // $row is an array of elements in each row
    // e.g. if the first column is the email address of the user, try something like
           $vks_ = explode(".",$row[0]);
           $vks = $vks_[0];
           $vim_ = explode(".",$row[1]);
           $vim = $vim_[0];
           $ma = $row[2];
           $dat = explode(".",$row[3]);
           $datu = datumberechnen($dat[0]);
           $datum = $datu[0];
           $kawo = $datu[1];
           $au = $row[4];
           $kdnr_ = explode(".",$row[5]);
           $kdnr = $kdnr_[0];
           $kdname = $row[6];
           $art = $row[7];
           $bez1 = $row[8];
           $bez2 = $row[9];
           $mc1 = $row[10];
           $pos = $row[11];
           $h = $row[12];
           $f = $row[13];
           $vk = $row[14];
           $ek = $row[15];
           $stichwort = $row[16];
           $menge_ = explode(".",$row[17]);
           $menge = $menge_[0];
           $spanne = $row[18];
             
  
  $query = db_insert('tagesprotokolle')
       ->fields(array(
       'vks' => $vks,
       'vim' => $vim,
       'ma' =>  $ma,
       'dat' => $datum,
       'au' =>  $au,
       'kdnr' => $kdnr,
       'kdname' =>  $kdname,
       'artikel' =>  $art,
       'bez1' =>  $bez1,
       'bez2' =>  $bez2,
       'mc1' =>  $mc1,
       'pos' =>  $pos,
       'h' =>  $h,
       'f' =>  $f,
       'vk' =>  $vk,
       'ek' =>  $ek,
       'stichwort' =>  $stichwort,
       'menge' =>  $menge,
       'spanne' =>  $spanne,
       'kw' =>  $kawo,
      
      
  ))

  ->execute();
 
  }
}

Bitte nicht auslachen..ist eben noch bischen experimentell. Weiß aber nicht wo ich den Fehler habe.

Ati

‹ drupal_mail sendet Mails doppelt [gelöst] Login-Validierung über externe Datenbank ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

nabend ati was genau passiert

Eingetragen von 1kubik (903)
am 27.02.2012 - 20:43 Uhr

nabend ati

was genau passiert in Zeile 267
(welcher code wird azsgeführt? das ist nicht ersichtlich
in deinem beitrag)
und wie sieht die komplette fehlermeldung aus?
#
gruss
stef

  • Anmelden oder Registrieren um Kommentare zu schreiben

Im Zitat steht die komplette

Eingetragen von Ati (210)
am 27.02.2012 - 20:58 Uhr

Im Zitat steht die komplette Fehlermeldung!!!!
In Zeile 267 ist der execute-Befehl.

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mir ist gerade nochwas

Eingetragen von Ati (210)
am 28.02.2012 - 08:41 Uhr

Mir ist gerade nochwas aufgefallen....die Datei die ich zum testen importieren will hat 1032 Zeilen...nach der Fehlermeldung sind aber
146 Zeilen importiert worden!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Da hilft nur, den Code ein

Eingetragen von wla (9461)
am 28.02.2012 - 10:14 Uhr

Da hilft nur, den Code ein bißchen umbauen, damit Du Prints der Eingabezeile und der geparsten Struktur in eine Logdatei schreiben kannst. Dann siehst Du, wie weit Du gekommen bist und die Zeile, die den Fehler verursacht. Irgendetwas scheint in der Datenstruktur daneben zu gehen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi wla, diesen Ansatz

Eingetragen von Ati (210)
am 28.02.2012 - 10:37 Uhr

Hi wla,

diesen Ansatz verfolge ich gerade auch. Die Tabelle hat jedes Feld als varchar deklariert (bzw. gerade alles als text-Feld eingestellt).
Dadurch das ja 146 Datensätze importiert wurden konnte ich ja die erste Zeile die Probleme macht lokalisieren...verstehe aber nicht
warum sich die Funktion daran verschluckt. Ich habe dann mal den db_insert bereicht in einen try-catch-Block gepackt...es werden von
1032 Zeilen 954 eingelesen. An diesem Punkt bin ich jetzt....und steh wie ein Ochs vorm Berg.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich glaub ich hab´s...es sind

Eingetragen von Ati (210)
am 28.02.2012 - 11:02 Uhr

Ich glaub ich hab´s...es sind immer Datensätze die im Kundennamen öäü´s enthalten. Wie kann ich das schnell und unkompliziert lösen??

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du mußt die CSV-Datei ins

Eingetragen von wla (9461)
am 28.02.2012 - 11:34 Uhr

Du mußt die CSV-Datei ins UTF-8 Format mit Unix-Zeilenenden (LF) konvertieren. Die Datenbank kommt mit UTF-8 problemlos klar. Dann sind die Probleme mit allen akzentuierten Zeichen gelöst. Auf dem Mac benutze ich Coda für diese Konvertierung, unter Windows gibt es Notepad++.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe ne gute und

Eingetragen von Ati (210)
am 28.02.2012 - 11:56 Uhr

Ich habe ne gute und neschlechte Nachricht...nach dem bearbeiten mit Notepad++ ging es....die schlechte Nachricht ist das diese Vorgehensweise nicht praktikabel ist. Diese Datei wird NAcht automatiscvh vom Warenwirtschaftssystem erzeugt und soll ganz einfach morgens so importiert werden. Wahrscheinlich muss ich den Kundenname vor dem Import auf Umlaute untersuchenund diese dann ersetzen...könnte zumindest ein Ansatz sein.

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Einlesen scheint ja noch

Eingetragen von leda.ch (977)
am 28.02.2012 - 12:03 Uhr

Das Einlesen scheint ja noch zu gehen.
Da sollte Dir utf8_en/decode helfen (siehe hier), bei jedem String, der Umlautverdächtig ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke leda....jetzt

Eingetragen von Ati (210)
am 28.02.2012 - 12:49 Uhr

Danke leda....jetzt funktioniert es richtig!!!

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 11 Stunden
  • Hey danke
    vor 3 Tagen 6 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 39 Minuten
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 19 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association