Gast: Problem mit explode()

Hallo,
es geht um das Auslesen von MySQL Zeichenketten, die ich mit explode trenne:

Nur leider kommt immer "$element" zurück, obwohl dafür ja eigtl die Daten von MySQL übermittelt werden müssen.
Es besteht offenbar keine Verbindung zwischen dem obrigen und dem unteren Teil:

  
 <?php  
session_start();  
$username = $_SESSION['username'];  
?>  
<?php  
$user = $_GET['username'];  
?>  
<?php  
define ( 'MYSQL_HOST', 'localhost' );  
define ( 'MYSQL_BENUTZER', 'XX' );  
define ( 'MYSQL_KENNWORT', 'XX' );  
define ( 'MYSQL_DATENBANK', 'XX' );  
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);  
if ( ! $db_link )  
{  
    die('keine Verbindung zur Zeit möglich - später probieren ');  
}  
  
$db_sel = mysql_select_db(scrapen)  
    or die("Auswahl der Datenbank fehlgeschlagen");  
  
$sql = "  
    SELECT  
        *  
    FROM freunde  
    WHERE username = '$username'  
    ORDER BY id  
";  
  
$db_erg = mysql_query( $sql );  
if ( ! $db_erg )  
{  
    die('Ungültige Abfrage: ' . mysql_error());  
}  
$anzahl_eintraege = mysql_num_rows($db_erg);  
echo "<p>Deine Freunde:<b>$anzahl_eintraege </b> </p>";  
  
while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))  
{  
    extract($daten);  
    echo "                    $id  
                              $username  
                              $freund  
                              <br>  
  
    ";  
  
}  
 mysql_free_result( $db_erg );  
?>  
<?php  
$array = explode('-', $freund);  
foreach ($array as $element) {  
echo '$element<br>';  
}  
?>  

Wäre nett, wenn mir da jmd auf die Sprünge helfen könnte, wo mein Fehler liegt. (Das obere echo lasse ich natürlich später weg)

Viele Grüße

  1. Moin!

    echo '$element<br>';

    Du wolltest wie folgt notieren:

    echo "$element<br>";

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Danke, was für ein blöder Fehler ...

      Nun eine andere Frage:
      Ich möchte überprüfen, ob ein sich ein bestimmter Name in der Zeichenkette befindet - wie stelle ich das denn nun an?
      Bei einem einzelnen Eintrag in der Datenbank wäre das ja einfach - aber so kann ich jetzt hier ja nicht vorgehen, oder?

      Viele Grüße

      1. Hi!

        Ich möchte überprüfen, ob ein sich ein bestimmter Name in der Zeichenkette befindet - wie stelle ich das denn nun an?

        Du kannst prüfen, ob die Position dieses gesuchten Teilstrings in diesem String ungleich dem Wert für "nicht vorhanden" ist. Das ist eine grundlegende Stringverarbeitungsfunktionalität, die in eigentlich jeder grundlegenden Funktionsbibliothek enthalten ist und meist auf irgendwas mit "pos" hört. Für PHP ist es die Funktion strpos().

        Lo!

        1. Danke für die Antworten, ich hab allerdings NOCH eine Frage (hoffentlich die Letzte!!) zu explode().
          Ich möchte, dass wenn eine Freundschaftsanfrage gestellt wird, diese vom geaddeten Nutzer bestätigt wird.
          Dazu hatte ich mir überlegt, dass bei der Stellung der Freundschaftsanfrage eine weitere Spalte mit z.B. "1" gefüllt wird. 1 bedeutet dann, dass die Anfrage aussteht.
          Der Nutzer, der bestätigen soll, fügt einmal den anderen Nutzer in seine Freundschaftsspalte mit ein, sowie setzt 1 bei dem anderen Nutzer auf 2.
          2 Bedeutet, dass die Anfrage angenommen wurde.

          Jetzt ist nur eine Zeichenkette vorhanden .. wie ordne ich jedem Teilstück der Kette eine Zahl zu?? Und wie schaffe ich es, gleichzeitig in Tabelle A den Nutzer zu den Freunden hinzuzufügen und dann noch bei dem anderen Nutzer 1 auf 2 zu setzen?

          Ich hoffe ihr versteht mein Anliegen.. es ist etwas kompliziert ausgedrückt.
          Danke schonmal

      2. Hallo,

        Ich möchte überprüfen, ob ein sich ein bestimmter Name in der Zeichenkette befindet - wie stelle ich das denn nun an?
        Bei einem einzelnen Eintrag in der Datenbank wäre das ja einfach - aber so kann ich jetzt hier ja nicht vorgehen, oder?

        einfacher, zum Beispiel mit strpos() (Kasten beachten!) oder mit substr_count(). preg_match() ginge auch, nähme ich jedoch nicht ...

        Freundliche Grüße

        Vinzenz

        1. Hello,

          einfacher, zum Beispiel mit strpos() (Kasten beachten!) oder mit substr_count(). preg_match() ginge auch, nähme ich jedoch nicht ...

          Und dann sollten wir vielleicht noch darauf hinweisen, dass es auch Multibytefunktionen gibt, für den Fall, dass da jemand gar UTF-8-codierte Texte verarbeiten will :-))

          http://de.php.net/manual/de/function.mb-strpos.php

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Nur leider kommt immer "$element" zurück, ...
    echo '$element<br>';
    Wäre nett, wenn mir da jmd auf die Sprünge helfen könnte, wo mein Fehler liegt.

    Auch einem Blinden mit Krückstock müßte auffallen, daß nicht der Inhalt der Variable, wie der auch immer sein möge, ausgegeben wird, sondern ein string mit dem Variablennamen. Was soll es also mit dem Inhalt der Variable oder mysql-Krams zu tun haben?

    Du sagst dem Server er soll '$element<br>' ausgeben, willst aber, daß er den Inhalt von $element gefolgt von '<br>' ausgibt, also echo $element.'<br>'; oder echo "$element<br>";.

    Beschäftige dich mit den Grundlagen von php.
    z.B.:
    http://de.php.net/manual/de/
    http://tut.php-quake.net/de/

  3. Hello,

    da stecken aber noch eine Menge Fehler und Überflüssigkeiten im Script.

    <?php
    session_start();
    $username = $_SESSION['username'];
    $user = $_GET['username'];

    warum wurde hier umkopiert?

    den folgenden Block solltest Du auslagern, außerhalb der Document Root speichern

    und mit require_once() einlesen.

    define ( 'MYSQL_HOST', 'localhost' );
    define ( 'MYSQL_BENUTZER', 'XX' );
    define ( 'MYSQL_KENNWORT', 'XX' );
    define ( 'MYSQL_DATENBANK', 'XX' );

    $db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
    if ( ! $db_link )
    {
        die('keine Verbindung zur Zeit möglich - später probieren ');
    }

    #> $db_sel = mysql_select_db(scrapen)

    wohl eher:

    #   $db_sel = mysql_select_db('scrapen')

    oder

    $db_sel = mysql_select_db(MYSQL_DATENBANK)
         or die("Auswahl der Datenbank fehlgeschlagen");

    $sql = "
        SELECT
            *
        FROM freunde
        WHERE username = '$username'
        ORDER BY id
    ";

    wie ist $username in die Session gekommen?

    Ist die Variable bereits kontextgerecht behandelt worden?

    siehe [link:http://de3.php.net/manual/de/function.mysql-real-escape-string.php]

    und [link:http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel]

    $db_erg = mysql_query( $sql );
    if ( ! $db_erg )
    {
        die('Ungültige Abfrage: ' . mysql_error());
    }

    Scripte sollte man im produktiven Betrieb nicht sterben lassen und

    insbesondere keine Interna an den User ausgeben.

    mysql_error() gehört also ins Log, dem User sollte man eine kurze

    Entschuldigung mit Rücklink zum Projekt senden

    $anzahl_eintraege = mysql_num_rows($db_erg);
    echo "<p>Deine Freunde:<b>$anzahl_eintraege </b> </p>";

    while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
    {
        extract($daten);

    extract() ist hässlich. Greife direkt auf die Elemente des Ergenisarrays zu.

    echo "                    $id
                                  $username
                                  $freund
                                  <br>

    ";

    }
    mysql_free_result( $db_erg );
    $array = explode('-', $freund);
    foreach ($array as $element) {
    echo '$element<br>';
    }
    ?>

      
      
    Das, was ich angemeckert habe, muss nicht unbedingt alles gewesen sein, was Du korrigieren solltest, aber für den Anfang reicht es erstmal :-)  
      
      
      
      
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    <http://bergpost.annerschbarrich.de>