php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.01.2006, 14:31  
Gast
 
Beiträge: n/a
Standard Regulärer Ausdruck funktioniert nicht

Ich möchte mittels einer Schleife meine SQL-Abfrage zusammensetzen. Da ich nicht weiss, wieviele Daten der Nutzer einschreibt, muss ich das letzte OR bzw AND mit Hilfe eines Reguären Ausdrucks löschen.
(Ich habe den selbigen bereits erfolgreich genutzt. In den Fall kam aber nur AND im String vor.)

Könnt ihr bitte mal schauen, wo mein Fehler liegt?
Der Reguläre Ausdruck wird nicht bearbeitet. Der String bleibt also gleich und verändert sich nicht.

PHP-Code:
$qu="SELECT * FROM `archiv` WHERE `Ersteller` = 1 AND ( ";
                 for (
$i=1$i<6$i++) {
                     echo
"schleife";
                     echo 
$_POST['a'.$i.''];
                     if (!empty(
$_POST['a'.$i.'']) && !empty($_POST['s'.$i.''] )) {
                         
                         if (
$_POST['a'.$i.'']=='Laufende Nummer') {
                             
$qu.=" `lfd_Nummer` = '".$_POST['s'.$i.'']."' ".$_POST['w'.$i.'']." ";
                         } elseif (
$_POST['a'.$i.'']=='Inventarnummer, alt') {
                             
$qu.=" `Inventarnummer_alt` = '".$_POST['s'.$i.'']."' ".$_POST['w'.$i.'']." ";
                         } elseif (
$_POST['a'.$i.'']=='relative Datierung') {
                             
$qu.=" `relative_Datierung` = '".$_POST['s'.$i.'']."' ".$_POST['w'.$i.'']." ";
                         } elseif (
$_POST['a'.$i.'']=='absolute Datierung') {
                             
$qu.=" `absolute_Datierung` = '".$_POST['s'.$i.'']."' ".$_POST['w'.$i.'']." ";
                         } else {
                             
$qu.= " `".$_POST['a'.$i.'']."` = '".$_POST['s'.$i.'']."' ".$_POST['w'.$i.'']." ";
                         } 
                     } 
                  } 
                 
$par=" )";
                 
$qu=ereg_replace("(AND|OR)$"$par$qu ); 
Ich danke euch schonmal für die Hilfe.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.01.2006, 14:37  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
ich löse das ohne reguläre Ausdrücke meist auf diese Weise:
PHP-Code:
<?php
$sql 
"SELECT * FROM tabelle WHERE 1"// beachte die 1
for ($i 0$i $max$i++) {
  
$sql .= " OR irgendwas = irgendwas"// beachte die boolsche Verknüpfung am Anfang
}
?>
Somit bleibt überhaupt kein "Blinddarm". Andere Möglichkeit wäre, du schreibst die Bedingungen in einen Array
PHP-Code:
<?php
$sql 
"SELECT * FROM tabelle WHERE ";
$conditions = array();;
for (
$i 0$i $max$i++) {
  
$conditions[] "irgendwas = irgendwas";
}
$sql .= implode(' OR '$conditions);
?>
Bitte den Code nicht buchstäblich nehmen, er ist nur ein Beispiel, aber ich denke einfach zu verstehen.
Zergling-new ist offline  
Alt 03.01.2006, 15:03  
Gast
 
Beiträge: n/a
Standard

Ich habe meinen Fehler gefunden.

Hinter dem AND bzw OR war noch ein Leerzeichen.
Der Ausdruck geht jetzt:

PHP-Code:
<?php
                                 $par
=" )";
                 
$qu=ereg_replace("(AND |OR )$"$par$qu ); 
?>
 
Alt 03.01.2006, 15:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Reguläre Ausdrücke sollte man trotzdem nur benutzen, wenn es zwingend erforderlich ist oder eine Sache erheblich vereinfacht.
Zergling-new ist offline  
Alt 03.01.2006, 15:14  
Gast
 
Beiträge: n/a
Standard

Und warum, wenn ich fragen darf?
 
Alt 03.01.2006, 15:44  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das ist wie mit Kanonen auf Spatzen schießen

Zitat:
Allerdings sollte man immer wenn man diese Mächtigkeit der RegEx
nicht benötigt die "normalen" String Funktionen verwenden, da diese sehr
viel schneller
als RegEx Funktionen sind.
Zergling-new ist offline  
Alt 04.01.2006, 09:23  
Gast
 
Beiträge: n/a
Standard

OK - danke. Wieder was gelernt. :wink:
 
Alt 05.01.2006, 16:20  
Gast
 
Beiträge: n/a
Standard

Ich schreibe hier auch mal einen RegEx-Problem rein...

Ich habe in einer Variable eine HTML-Tabelle als String stehen (aus einer DB ausgelesen). Die DB ist eine Preisliste - bzw. mehrere Preislisten (entspricht den Tabellen in den Variablen.).
Nun möchte ich die Preise aus der Tabelle editieren können und in ein Array schreiben. Dazu habe ich mir eine RegEx gebastelt, die irgendwie nicht ganz funktioniert.
Den Preis habe ich in HTML-Kommentare geklammert: 14€.

PHP-Code:
<?php
preg_match_all
("([<]{1}[!]{1}[-]{2}daten[-]{2}[>]{1})*([<]{1}[!]{1}[-]{2}[/]{1}daten[-]{2}[>]{1})",$dis['text'],$result);
?>
Ich hatte auch an eine andere Möglichkeit gedacht, die aber auch nicht funktioniert, da sie eine Endlosschleife produziert.

PHP-Code:
<?php
$treffer 
substr_count($dis['text'],"" );
for (
$i=0;$treffer;$i++)
{
 
$ausgabe strstr($dis['text'],"");
 
$ausgabe strrchr($dis['text'],""); // gibt es eine Funktion, die erstes Vorkommen eines Strings sucht und alles davor wiedergibt?
 
echo $ausgabe."
"
;
}
?>
 
Alt 05.01.2006, 16:23  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php
error_reporting
(E_ALL);

$TXT = <<<Inhalt
14€
Inhalt;

$pattern '#(.*)#isU';
preg_match_all($pattern$TXT$array);

echo 
'<pre>'print_r($arraytrue), '</pre>';

?>
 
Alt 05.01.2006, 19:04  
Gast
 
Beiträge: n/a
Standard

Danke!! Aber was hast du gemacht?
Wie heißt das, damit ich in der Doku nachlesen kann?

Vielen Dank!!
 
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[JS] onClick funktioniert erst beim 2. Mal Klicken. DER_Brain HTML, Usability und Barrierefreiheit 2 08.07.2008 10:47
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
Regulären Ausdruck Übersetzen (preg_match) mAy^daY PHP Tipps 2007 11 04.01.2007 14:00
Session funktioniert im IE nicht, Firefox ohne Probleme havok PHP Tipps 2006 7 14.08.2006 14:05
Lokal funktioniert alles -> auf Server fast nichts PsychoEagle Datenbanken 2 14.08.2006 08:43
Probleme mit Regulärem Ausdruck iBurner PHP Tipps 2006 8 16.06.2006 14:10
Mit if Abfrage innerhalb eines strings einen Ausdruck suchen tinchen PHP Tipps 2006 4 11.04.2006 10:18
[Erledigt] Hilfe: Zugriff auf Webserver funktioniert nicht mehr Server, Hosting und Workstations 5 06.02.2006 22:34
Nach Einfügugng der Sessions funktioniert mein Program nicht PHP-Fortgeschrittene 1 02.10.2005 06:13
absolute Pfadangabe bei PHP funktioniert nicht PHP Tipps 2005-2 20 02.09.2005 14:28
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
Aus Datei lesen und in Datei schreiben.. funktioniert nicht FBI PHP Tipps 2005-2 3 03.07.2005 16:55
Abfrage funktioniert unter MySQL aber nicht unter MS SQL Schiedsrichter Datenbanken 2 27.01.2005 15:43
Dateien erstellen oder schreiben funktioniert nicht im Web PHP Tipps 2004-2 1 05.12.2004 19:39
[Erledigt] mail() Funktion funktioniert nach ServerBackup nicht mehr PHP-Fortgeschrittene 5 29.10.2004 21:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php reguläre ausdrücke html kommentar auslesen, php reguläre ausdrücke email $_post, php if abfrage mit reguärem ausdruck, php reguläre ausdrücke <!--, regulärer ausdruck i laufende nummer, reguläre ausdrücke funktionieren nicht, reguläre ausdrücke \erstes vorkommen\, php reguläre ausdrücke max funktioniert nicht, reguläre ausdrücke leerzeichen fast searchengine, sql anweisung regulärer ausdruck, reguläre ausdrücke forlaufende nr, php regulärer ausdruck if schleife, php reguläre ausdrücke elseif, php reguläre ausdrücke anzahl funktionieren nicht, regulärer ausdruck funktioniert nicht php, reguläre ausdrücke laufende nummer, $_post regulärer ausdruck, php strstr jeden 2. treffer, mehrere seitenausdruck funktioniert nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.