TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.11.2003, 13:35   #1
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg

zeichen an position X auslesen


hi

wie kann ich mit mysql auslesen, ob z.b. das 3. zeichen in einem string (varchar) numerisch oder alphanumerisch ist?

beispiel:

string: W0G0000

ich will wissen, welchen typ zeichen nr. 3 ("G") hat!

danke
prefix ist offline   Mit Zitat antworten


Alt 21.11.2003, 14:00   #2
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Tach!

Das könnte klappen:
Code:
SELECT * , lala
REGEXP "^.{2}[a-z]" AS isstring
FROM `prefix`
...wobei man natürlich hierbei auf die Performance achten sollte, wenn es sich um mehrere Tausend DS handelt, solltest du dir womöglich was anderes einfallen lassen.

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:01   #3
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
danke jan

hast mir schon mal einen schritt weitergeholfen, weitere fragen kommen sicher noch!

bin grad dabei, eine vermittlerhierarchie zu genieren - und ich sag dir was: auf die edv-technische möglichkeit, das abzuarbeiten und mit einer gewissen logik zu versehen, haben die damals nicht gedacht *schwitz*
prefix ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:07   #4
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
sorry, heute muss ich nerven (aber nur mehr 30 minuten, dann geh ich heim, um morgen wieder in die firma zu kommen ):

mit folgender abfrage krieg ich nichts raus:

PHP-Code:
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name FROM fdaw_vmdaten 
WHERE (REGEXP \"^.{2}[a-z]\" AS isstring) AND (LEFT(orgnr,2) = '$orgnrli2') 
ORDER BY orgnr ASC"
); 
$orgnrli2 = WG

ich will jetzt alle rausziehen, die an den ersten beiden stellen "WG" haben, gefolgt von einem (!!!) buchstaben, danach vier ziffern (!!!).

irgenwie schluckt mysql den regexp-ausdruck nicht

edit

mit folgendem query krieg ich was, aber das falsche (hab in der regexp auch schon mit "2" versucht -> auch nix):

PHP-Code:
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name REGEXP \"^.{3}[a-z]\" AS isstring 
FROM fdaw_vmdaten WHERE (LEFT(orgnr,2) = '$orgnrli2') 
ORDER BY orgnr ASC"
); 

Geändert von prefix (21.11.2003 um 14:10 Uhr).
prefix ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:10   #5
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Hehe... jaja Hirachien aufzubauen macht spass
Die hier ->http://www.fifoost.org/database/nace/nace-de_2002c.php hatte ich als CVS-Datei in deutsch und eine NACE-Liste in Englisch... und musste daraus eine hirachische Struktur aufbauen... fein fein... 2 sprachig aus 2 Dateien, die dann noch unterschiedlich waren. Am Ende wars dann doch garnicht so viel.. hier mal ein snippet aus den 70 Zeilen-Script:
PHP-Code:
$a $prev_tiefe $tiefe 0;
foreach(
$data AS $bit) {
   
$tiefe strlen(str_replace(".","",$bit[1]))+strlen($bit[4]);

   if(
$tiefe $prev_tiefe) {
      
$_tiefe++;
      
$childof $stack[$_tiefe-1];
      
$stack[$_tiefe] = $bit[0];
      
$nacestack[$_tiefe] = $bit[1];
   } else if(
$tiefe == $prev_tiefe) {
      if(
preg_match("/[a-z]/i",$nacestack[$_tiefe-1])) {
         
$childof $stack[$_tiefe];
         
$tiefe++;
         
$_tiefe++;
      } else {
         
$childof $stack[$_tiefe-1];
      }
   } else if(
$tiefe $prev_tiefe) {
      
$_tiefe $tiefe;
      
$childof $stack[$_tiefe-1];
      
$stack[$_tiefe] = $bit[0];
      
$nacestack[$_tiefe] = $bit[1];
   }

   
insertNACE($bit,$childof);
   
$prev_tiefe $tiefe;

   echo 
"<tr><td><pre>Tiefe: ".$_tiefe."(ID:".$bit[0].")</pre></td><td><pre>".space($tiefe).$bit[1]." (Child of:".$childof.")</pre></td></tr>";

...wer weiss, was ich mir dabei gedacht hab... aber es funktioniert

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:12   #6
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
hehe, leider ist das spielchen bei mir noch komplexer (denke ich), weil es an sich ur viele ausnahmen gibt - versicherung halt

ich muss jetzt nur mal feststellen können, wie ich eben rausfiltere, ob:

- die ersten 2 stellen gleich wie die variable sind (hab ich schon)
- die 3. stelle ein buchstabe ist
- ab der 4. stelle KEINE buchstaben mehr vorkommen

das wäre dann mal die 2. ebene von 5
prefix ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:13   #7
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Du wendest den Regex ja auch auf "nix" an?? davor muss das Feld stehen! Und dann musst du das Ergeniss des Regex natürlich auchnoch vergleichen 1 oder 0 ...was auch immer du haben willst
Code:
//"WG" haben, gefolgt von einem (!!!) buchstaben, danach vier ziffern (!!!).

^WG[a-z]{1}[0-9]{4}
Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:19   #8
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
sorry, ich bin ein regexp-mongo

soweit bin ich jetzt:

PHP-Code:
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name, REGEXP \"^.{2}[a-z]\" AS orgnr FROM fdaw_vmdaten ORDER BY orgnr ASC"); 
leider keine ausgabe, ich vermute, ich wende das nicht richtig an - WORAUF muss ich das anwenden bzw. hab schon probiert, die "orgnr" dahinterzustellen usw. - shit, hört sich jetzt echt dummy-mäßig von mir an *hehe* - sorry
prefix ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:24   #9
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Also: Dein Regex bezieht sich immernoch auf garnix! DAVOR muss der Spaltenname stehen:
Code:
$abfrage2 = mysql_query("SELECT DISTINCT orgnr, name, orgnr REGEXP \"^.{2}[a-z]\" AS orgnr_isstring FROM fdaw_vmdaten WHERE orgnr_isstring = 1 ORDER BY orgnr ASC");
...so z.B. Der Regex-Ausdruck gibt nur 1 oder 0 zurück. Darauf kannst du dann die Where-Klausel anwenden, oder den gesamten Regex in die where-klausel schieben...
Stuck Mojo ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:32   #10
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
argghhhh:

Zitat:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/intranet/transfer/vmhierarchaufbau.php on line 86
irgendwas passt da noch nicht - ich verzweifle

hier mal der entsprechende teil -> es wird z.b. die orgnr GD000000 als übergeordnete nr. ausgegeben, der mittlere teil (query 2. hierarchie) liest dann wie oben beschrieben aus:

PHP-Code:
    // 1. stufe ausgeben
    
$abfrage mysql_query("SELECT DISTINCT orgnr,name 
FROM fdaw_vmdaten WHERE orgnr LIKE '%00000' AND orgnr NOT LIKE '%000000' 
ORDER BY name ASC"
);
    while(
$ausgabe mysql_fetch_object($abfrage)) {
        
$orgnrli2 substr($ausgabe->orgnr,0,2);
        echo 
"$ausgabe->orgnr|$ausgabe->name<br><hr>";
        
// 2. stufe ausgeben
            
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name, orgnr REGEXP \"^.{2}[A-Z]\" AS orgnr_isstring 
FROM fdaw_vmdaten WHERE orgnr_isstring = 1 
ORDER BY orgnr ASC"
);
            while (
$ausgabe2 mysql_fetch_object($abfrage2)) {
            echo 
"$ausgabe2->orgnr|$ausgabe2->name<br>";
        }
        
        
// ende 2. stufe
    
}
    
// ende 1. stufe 
prefix ist offline   Mit Zitat antworten
Alt 21.11.2003, 14:34   #11
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
OR die(mysql_error()); ?
Stuck Mojo ist offline   Mit Zitat antworten
Alt 21.11.2003, 16:19   #12
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
hä? du meinst die abfrage durchführen oder die fehlernr ausgeben?

bin morgen (leider) in der firma wieder dran, dann machen wir da weiter - danke für heute mal für die hilfe, das bringen wir schon hin
prefix ist offline   Mit Zitat antworten
Alt 22.11.2003, 13:12   #13
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
so, sitz jetzt zuhause und hab denselben datenbestand im internet hergestellt - es handelt sich in folge um diese seite

jetzt fahre ich mit folgender abfrage (die zwar keinen fehler bringt, aber noch nicht richtig ist):

PHP-Code:
        // 2. stufe ausgeben
            //$abfrage2 = mysql_query("SELECT DISTINCT orgnr, name, orgnr REGEXP \"^.{2}[A-Z]\" AS orgnr_isstring FROM fdaw_vmdaten WHERE orgnr_isstring = 1 ORDER BY orgnr ASC");
            
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name FROM fdaw_vmdaten WHERE (LEFT(orgnr,2) = '$orgnrli2') ORDER BY orgnr ASC");
            while (
$ausgabe2 mysql_fetch_object($abfrage2)) {
            echo 
"$ausgabe2->orgnr|$ausgabe2->name<br>";
        }
        
        
// ende 2. stufe 
in dem moment, wo ich die "abfrage2" wie folgt definiere, krieg ich einen mysql-error (wie schon weiter oben beschrieben):

PHP-Code:
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name, orgnr REGEXP \"^.{2}[A-Z]\" AS orgnr_isstring FROM fdaw_vmdaten WHERE orgnr_isstring = 1 ORDER BY orgnr ASC"); 
ich hoffe, durch das live-beispiel im netz kommen wir weiter
prefix ist offline   Mit Zitat antworten
Alt 22.11.2003, 13:24   #14
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Wie schon gesagt, wäre es schön, wenn wir wissen würden um welchen MySQL-Error es sich handelt . Dafür ist die Funktion mysql_error() da. Also:
PHP-Code:
$lala mysql_query("...") OR die(mysql_error()); 
Stuck Mojo ist offline   Mit Zitat antworten
Alt 22.11.2003, 13:28   #15
TP-Specialist
 
Registriert seit: Aug 2002
Ort: Nähe Wien
prefix ist auf einem guten Weg
sorry, war aus dem kopf draussen

Zitat:
Unbekanntes Tabellenfeld 'orgnr_isstring' in where clause.
abfrage:

PHP-Code:
$abfrage2 mysql_query("SELECT DISTINCT orgnr, name, orgnr REGEXP \"^.{2}[A-Z]\" AS orgnr_isstring FROM fdaw_vmdaten WHERE orgnr_isstring = 1 ORDER BY orgnr ASC") OR die(mysql_error()); 
prefix ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
zeichen an position X auslesen zeichen an position X auslesen
« Anzahl der Felder ermitteln | Suche ein Katalog-Skript »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:12 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5