php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.08.2007, 12:00  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard Name von Hash Feld auslesen

Gute Tag Leute

Hab eine kleine Frage. Wie komme ich in einem Hash an den Bezeichner ran?

Hash:
PHP-Code:
$hash["Titel"] = "Hi there!";
$hash["Category"] = "Greetings";
$hash["Body"] = "Greetz from anywhere"
Das möchte ich jetzt in einer Methode so aufschlüsseln, dass ich damit ein Insert-Statement machen kann.

INSERT INTO table (Titel, Category, Body) VALUES ('Hi there!', 'Greetings', 'Greetz from anywhere')

Den Query zu bauen ist kein Problem. Nur weiss ich nicht, wie ich an die Werte Titel, Category und Body komme, die ja die Row-Bezeichner für die MySQL-Tabelle sind.

Gibts eine einfachere Lösung als foreach und dann array_keys? Das wäre so der Lösungsansatz, der mir vorschwebt.

Grüsse Igäl
Igäl ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.08.2007, 12:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

wo steht denn das hasch feld?? - kleiner scherz...
statt foreach kannst du auch die numerischen Arrays, die array_keys () und array_values () liefern per implode (',' , ... ) in SQL Bestandteile umwandeln.
nikosch ist offline  
Alt 15.08.2007, 12:14  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$sql 
sprintf("INSERT INTO `table` (`%s`) VALUES ('%s')",
  
implode('`, `'array_keys($hash)),
  
implode("', '"array_values($hash)));
?>
um array_keys() und array_values() könntest du noch ein array_map('mysql_real_escape_string', ..) legen, um die Daten abzusichern.

Edit: zu langsam ..
Zergling-new ist offline  
Alt 15.08.2007, 12:47  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Naja foreach brauch ich halt, um die Values einzeln prüfen zu können. Ich habe dafür ne adaptierte Version von PsychoEagle's sql_protect-Funktion

Wobei ich ja einfach array_values() durch eine Schlaufe lassen kann und da alle Werte mit der Funktion überprüfe.

Herzlichen Dank für die Input's. Werd meine Lösung dann kurz posten für Leute mit dem selben Problem, oder um von Euch auf strukturelle Unlogik aufmerksam gemacht zu werden
__________________
Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
Mark Twain
Igäl ist offline  
Alt 15.08.2007, 13:00  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

schade dass du mir nicht zuhörst
Zergling-new ist offline  
Alt 15.08.2007, 13:11  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Entschuldige bitte. Habe das array_map völlig übersehen, dann doch gesehen, nachgeschaut und jetzt kurz was gebastelt:

PHP-Code:
    function sql_check_fields($value) {
        if(
get_magic_quotes_gpc()) {
            
$value stripslashes($value);
        }

        if(!
is_numeric($value)) {
            
$value "'"mysql_real_escape_string($value) ."'";
        }
        return 
$value;
    }

    require_once(
"functions/Mysql.class.php");
    
$con Mysql::db_connect("localhost""root""""beathirt_zwiigstell");


    
$ins_hash["Titel"] = "Hi there!";
    
$ins_hash["Category"] = "Greetings";
    
$ins_hash["Body"] = "Greetz from anywhere";

    
$cols implode(","array_keys($ins_hash));
    
$data implode(","array_map("sql_check_fields"array_values($ins_hash)));

    
$sql "INSERT INTO ".$table." (".$cols.") VALUES (".$data.");";

    echo 
$sql;
    
    
Mysql::db_close($con); 
Ergibt die Ausgabe:
Code:
INSERT INTO (Titel,Category,Body) VALUES ('Hi there!','Greetings','Greetz from anywhere');
Wie gewollt. Herzlichen Dank.

Zusatzfrage: Wie rufe ich eine Callback-Funktion auf, die public static ist?

Geht das mit:
PHP-Code:
    array_map("Class::function_name"array_values($ins_hash)); 
?
Igäl ist offline  
Alt 15.08.2007, 13:30  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

in php5
PHP-Code:
class Foo{
  public static function 
quadrat($a){return $a*$a;}
}
print_r(array_map(array('Foo','quadrat'),array(1,2,3,4,5))); 
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 15.08.2007, 13:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

na also, geht doch

Versuch mal um deiner Effizienz willen, zuerst ins Manual zu schauen, wenn du eine Frage zu einer Funktion hast:
http://de.php.net/callback
Zitat:
// Aufruf einer statischen Klassenmethode ohne Instanzierung
// eines Objekts
call_user_func(array('MeineKlasse', 'meineCallbackMethode'));
Zergling-new ist offline  
Alt 15.08.2007, 14:11  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Ja das stimmt wohl. Allerdings wars grad so bequem auch gleich danach zu fragen ... Aber Danke Slava
Naja wie auch immer. Ich beschäftige mich zur Zeit einfach mit der Optimierung meiner Scripts, was man nicht einfach so ohne weiteres nachschlagen kann und wollte euch fragen, ob eine Update-Funktion wie die Folgende okay ist:


PHP-Code:
        //Funktion sql_check_fields aus oberem Beispiel wäre hier
    
function prepare_hash($val1$val2)    {
        return 
$val1."=".sql_check_fields($val2);
    }

    
//Beliebiger Hash im Stile $hash['RowName'] = "String" | int | float | etc.

    
$table "table";
        
$condition "ID=1";
    
$temp array_map("prepare_hash"array_keys($ins_hash), array_values($ins_hash));
    
$settings implode(","array_values($temp));
    
$sql "UPDATE ".$table." SET ".$settings." WHERE ".$condition;

    
//mysql_query, Error-Handling, etc. 
Ausgabe entspricht meinen Vorstellungen...
Igäl ist offline  
Alt 15.08.2007, 15:06  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja ist doch eine runde Sache dein Skript.
Zergling-new ist offline  
 


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
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Feldname aus Recordset auslesen PHP Tipps 2006 5 20.05.2006 19:24
Textdatei auslesen, aber ohne Komentare HSFighter PHP Tipps 2006 31 23.02.2006 10:07
Mehr als ein Feld mit Distinct in einem Query auslesen ?? Bouni PHP-Fortgeschrittene 9 19.12.2005 12:43
wert aus mysql auslesen PHP Tipps 2005-2 5 08.09.2005 20:13
Array nach Feld sortieren PHP Tipps 2005-2 2 07.08.2005 23:00
[mysql] tabelen name auslesen mack|dawg PHP Tipps 2005-2 3 01.07.2005 18:25
Name auslesen, auf den Windows registriert PHP-Fortgeschrittene 8 02.05.2005 09:47
Name der angeforderten Seite auslesen PHP-Fortgeschrittene 2 01.03.2005 04:13
[Erledigt] .txt - file mit xml aufbau auslesen PHP-Fortgeschrittene 1 15.02.2005 01:33
inhalt aus einem imput feld mit variablen Namen auslesen HTML, Usability und Barrierefreiheit 4 08.01.2005 00:43
Datei auslesen bis zu einem bestimmten zeichen. (Shoutbox) PHP Tipps 2005 7 01.01.2005 20:41
wert aus formular feld auslesen PHP Tipps 2004-2 1 11.11.2004 23:52
kann man text feld wert ohne post auslesen? PHP Tipps 2004 5 22.07.2004 12:27
ein feld aus datenbank auslesen ohne while PHP Tipps 2004 6 10.06.2004 15:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php hash auslesen, hash auslesen, hash auslesen php, hash mit php auslesen, hash ausgelesen was jetzt?, php hashwert auslesen, php hash namen auslesen, php hash name, hash php auslesen, php login hash auslesen, auslesen von name aus hash, hash tag auslesen php, php sprintf hash keys, feld hash, hashfeld ?, hash-feld, php hash wert auslesen, php hash name auslesen, hash auslesen js, php beste hash

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:53 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.