php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-10-2004, 11:30
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Funktion] Arrays / Programmiertechnik

Guten morgen Board,

ich bins! Euer guter alter Antman.

Heute mit einer Frage zu Arrays und Programmiertechnik.

Es gibt folgende Funktion:

PHP-Code:
function returnData($sql) {
    
$res =& $this->_db->query($sql);
                            
    while (
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
            
$data[] = $row;
    }

    
$data $this->convertVarToUTF($data);
    return 
$data;

Nun wird diese Funktion für viele verschiedene Abfragen benutzt.
Man weiß manchmal nicht, ob nur eine Datensatz zurückgeliefert wird oder mehrere. Da ich die Smarty Schablone benutze muss ich dann ebenfalls eine Schleife dort benutzen. Sollte ich aus obiger Funktio besser 2 machen? Also noch eine wie:

PHP-Code:
function returnData($sql) {
    
$res =& $this->_db->query($sql);
                            
    
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC) {
    
$row $this->convertVarToUTF($row);

    return 
$row;

?
Mit Zitat antworten
  #2 (permalink)  
Alt 07-10-2004, 11:36
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

hä?

muss ich das verstehen?

wenn du das so wie im unteren codefragment machst, musst du doch auf jedenfall die funktion convertVarToUTF anpassen oder?


was das jetzt aber mit deinem smarty template zu tun hat...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 07-10-2004, 11:39
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du schon fragst, dann bitte auch drüber lesen, ob alles richtig verfasst ist. Wenn du aber dagegen ein Rätsel posten willst, dann tue das bitte woanders -> schau dir mal den 2. Codeteil an
Mit Zitat antworten
  #4 (permalink)  
Alt 07-10-2004, 11:48
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OK,

ihr habt recht. Also ich möchte das diese Funktion nicht ein Array von Arrays zurückgibt wenn es nur einen Datensatz gibt. Ich könnte die Funktion convertVarToUTF ja in der Schleife aufrufen:

PHP-Code:
function returnData($sql) {
    
$res =& $this->_db->query($sql);
                            
    while (
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
       
$row $this->convertVarToUTF($row);
         
$data[] = $row;
    }
    
    
$data $this->convertVarToUTF($data);
    return 
$data;

Mit Zitat antworten
  #5 (permalink)  
Alt 07-10-2004, 12:09
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was haltet ihr hiervon:

PHP-Code:
function returnData($sql) {
    
$res =& $this->_db->query($sql);
    if (
$res->numRows() == 0$data false;
    elseif (
$res->numRows() == 1) {
        
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
        
$row $this->convertVarToUTF($row);
        
$data $row;
    } else {
        while (
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
            
$row $this->convertVarToUTF($row);
            
$data[] = $row;
        }
    }    
        
    return 
$data;

Kann man das noch vereinfachen ?
Mit Zitat antworten
  #6 (permalink)  
Alt 07-10-2004, 12:22
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.734
Kropff befindet sich auf einem aufstrebenden Ast
Standard

ich denke dass die bedingungen überflüssig sind.
PHP-Code:
function returnData($sql
{
 
$res =& $this->_db->query($sql);
 while (
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) 
 {
            
$row[] = $this->convertVarToUTF($row);
  }
  return 
$row;

und dann $row einfach auf länge prüfen

Zitat:
Also ich möchte das diese Funktion nicht ein Array von Arrays zurückgibt wenn es nur einen Datensatz gibt
wieso, überprüfen musst du sowieso ob $data false ist, ein eindimensionales oder mehrdimensionales array ist.

gruss
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 07-10-2004, 12:54
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
und dann $row einfach auf länge prüfen
Wenn ich aber überürüfe, ist es schon zu spät, denn dann habe ich schon ein Array von Arrays.

Ich habe ein Problem hiermit:

PHP-Code:
function convertVarToUTF($arr$convertUTF NULL) {
        
$umlaute = array("ä""Ä""ü""Ü""ö""Ö""ß"" ");
        
$replace = array("ae""ae""ue""ue""oe""oe""ss""_"); 

        foreach (
$umlaute as $a) {
            
$search[] = mb_convert_encoding($a"utf-8");
    }
    for (
$i=0$i sizeof($convertUTF); $i++) {
        
$arr[$convertUTF[$i]] = str_replace($search$replace$arr);
    }
        
    return 
$arr;                                
}
                
function 
returnData($sql$convertUTF NULL) {
    
$res =& $this->_db->query($sql);
    if (
$res->numRows() == 0$data false;
        if (
$res->numRows() == 1) {
            
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
            
$row $this->convertVarToUTF($row$convertUTF);
            
$data $row;
    } else {
              while (
$row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                
$row $this->convertVarToUTF($row$convertUTF);
                
$data[] = $row;
            }
    }
 
    return 
$data;

Es kommt ewig die Meldung:

"Notice: Undefined variable: convert in D:\utf\classes\_project\den.class.php on line 74"

obwohl ich die doch mit übergebe.

Geändert von antman (07-10-2004 um 13:39 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 07-10-2004, 12:57
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von antman
obwohl ich die doch mit übergebe.
Nope, schau noch mal nach
Mit Zitat antworten
  #9 (permalink)  
Alt 07-10-2004, 13:43
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe es korrigiert.
Aber nun habe ich ein merkwürdiges Problem:

Ich rufe die Funktion so auf:

PHP-Code:
$convert = array('folder');
$sql="...";
$page->assign('profile'$den->returnData($sql$convert)); 
Nun wendet die Konvertierungsfunktion die Konvertierung nicht auf den index "folder" an, sondern unter $data['folder'] habe ich nun den gleichen Datensatz drin.

Geändert von antman (07-10-2004 um 13:48 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 07-10-2004, 13:57
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

jetzt wenn man noch wüsste, was du wie korrigiert hast, wie's jetzt aussieht und was die ein oder andere debug-ausgabe mit echo/print_r ergibt...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #11 (permalink)  
Alt 07-10-2004, 13:58
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm... weißt du denn eigentlich was du tutst?
Was wird hier gemacht?
PHP-Code:
 $arr[$convertUTF[$i]] = str_replace($search$replace$arr); 
wenn du das weißt, dann erübrigt sich deine Frage.
Mit Zitat antworten
  #12 (permalink)  
Alt 07-10-2004, 14:02
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hatte die Variable von $convert nach $convertUTF geändert.
Habe die Funktoin nochmal umgeschrieben, klappt aber immer noch nicht:

PHP-Code:
function convertVarToUTF($arr$convertUTF NULL) {
        
$umlaute = array("ä""Ä""ü""Ü""ö""Ö""ß"" ");
        
$replace = array("ae""ae""ue""ue""oe""oe""ss""_"); 

        foreach (
$umlaute as $a) {
            
$search[] = mb_convert_encoding($a"utf-8");
    }
    
        foreach (
$convertUTF as $b) {
        
$arr[$b] = str_replace($search$replace$arr);
    }
                                
    echo 
"<pre>";
    
print_r($arr);
    echo 
"</pre>";
        return 
$arr;                                

Ergibt folgendes:

rray
(
[phone_country] => ...
[phone_city] => ...
[phone_no] => ...
[phone_ext] =>
[fax_city] => ...
[fax_no] => ...
[fax_ext] =>
[function] => ...
[folder] => ...
(
[phone_country] => ...
[phone_city] => ...
[phone_no] => ...
[phone_ext] =>
[fax_city] => ...
[fax_no] => ...
[fax_ext] =>
[function] => ...
[folder] => ...
[name] => ...
)

[name] => ...
)

Nun soll folder aber kein eigenes Array sein. Der in dem Index enthaltene String sollte nur anstatt Leerzeichen Unterstriche enthalten.

)
Mit Zitat antworten
  #13 (permalink)  
Alt 07-10-2004, 14:06
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
Hm... weißt du denn eigentlich was du tutst?
Was wird hier gemacht?
PHP-Code:
 $arr[$convertUTF[$i]] = str_replace($search$replace$arr); 
wenn du das weißt, dann erübrigt sich deine Frage.
Das Array $convertUTF enthält die Indexe die die Funktion convertVarToUTF bearbeiten soll.
Mit Zitat antworten
  #14 (permalink)  
Alt 07-10-2004, 14:08
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

und du willst wirklich in ein feld des arrays das komplette array reinschreiben?

$arr[$b] = $arr?

sicher dass da nicht noch was fehlt?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #15 (permalink)  
Alt 07-10-2004, 14:20
antman
 Member
Links : Onlinestatus : antman ist offline
Registriert seit: Jun 2004
Beiträge: 451
antman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hatte gehofft, dass du folgendes meinst. Hat aber keinen anderen Effekt.

PHP-Code:
foreach ($convertUTF as key => $value) {
    
$arr[$value] = str_replace($search$replace$arr);

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
Top-Side.de Php Guest Book

Gästebuch mit Smilies, Ip Sperre und Spammschutz. Anzeige von Datum, Name, E-Mail, Homepage und Icq. Html ist deaktiviert.

26.07.2019 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:58 Uhr.