Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] If in einer While schleifen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] If in einer While schleifen

    Hi,

    irgendwie hab ich n denkfehler.
    Ich hab eine While-schleife:
    PHP-Code:
    while ($zeile mysql_fetch_assoc($ergebnis)) {
    echo 
    $id=$zeile['id']." ";
    echo 
    $geschlecht=$zeile['geschlecht']." ";
    echo 
    $vorname=$zeile['vorname']." ";

    Die stellt die 3 Drei Spalten Zeile für Zeile einer DB da.
    Nun möchte ich, dass sobald ein bestimmter vorname auftaucht, er das melden soll.
    Deshalb dachte ich, ich bau da eine If-Anweisung rein:
    PHP-Code:
    while ($zeile mysql_fetch_assoc($ergebnis)) {
    echo 
    $id=$zeile['id']." ";
    echo 
    $geschlecht=$zeile['geschlecht']." ";
    echo 
    $vorname=$zeile['vorname']." ";
    if (
    $vorname == "Max")
    {
    echo 
    "shit"
    }

    Nach meiner Auffasung müsste er jetzt jedesmal, wenn max auftaucht dahinter shit schreiben.
    Wo ist da der Denkfehler??
    Gruß RedDragon

  • #2
    Wieso machst du eine Zuweisung IN einem echo??

    Außerdem brauchst du diese ganzen Variablen nicht.

    PHP-Code:
    <?php
    while ($zeile mysql_fetch_assoc($ergebnis)) {
        echo 
    $zeile['id'].' '.$zeile['geschlecht'].' '.$zeile['vorname'].' ';
        if (
    $zeile['vorname'] == 'Max') {
            echo 
    'shit'
        }
    }

    Kommentar


    • #3
      Wenn in $zeile['vorname'] "Max" steht, dann steht in $vorname "Max ".
      Und "Max " ist nicht das gleiche wie "Max".

      btw.: die Zuweisung und Ausgabe in der selben Zeile zu machen finde ich hässlich, wozu machst du das überhaupt?
      [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

      Kommentar


      • #4
        JA!...das war es. Ich hab die im echo definiert weil ich dann nur eine Zeile hatte und dann dementsprechen mit nur den variablen weiterarbeiten kann.
        Aber ich hab nich gemerkt, dass die Variable ja noch mit "" verlängert wurde.
        Danke!

        Kommentar


        • #5
          Achso und mein eigentliches Problem, war eigentlich, dass ich mittels einer While-Schleife in einer while-schleife, 2 Tabellen vergleich wollte.
          Das dachte ich kann man so machen:
          PHP-Code:
          # Adressen:
          $sql8="Select * from adressen1 order by id asc";
          $ergebnis=mysql_query($sql8,$verbindung) or die (mysql_error()." Kann Tabelle der Datenbank nicht lesen!");
          #plz:
          $sql18="Select * from plz order by id asc";
          $ergebnis2=mysql_query($sql18,$verbindung) or die (mysql_error()." Kann Tabelle der Datenbank nicht lesen!");

          while (
          $zeile mysql_fetch_assoc($ergebnis)) {
          echo 
          $zeile['id']." ";
          echo 
          $zeile['geschlecht']." ";
          echo 
          $zeile['vorname']." ";
          echo 
          $zeile['nachname']." ";
          echo 
          $zeile['strassenname']." ";
          echo 
          $zeile['postleitzahl']." ";
          echo 
          $zeile['ort']." ";
          while (
          $zeile2 mysql_fetch_assoc($ergebnis2))
                   {
                           if (
          $zeile['postleitzahl'] == $zeile2['postleitzahl'])
                           {
                           echo 
          $zeile2['ort']." ";
                           }

                   }


          Aber pustekuchen!
          Wie macht man das richtig?

          Kommentar


          • #6
            Gar nicht in PHP!

            Code:
            SELECT * 
            FROM adressen1 AS a1 
            LEFT JOIN adressen2 AS a2
            ON (a1.postleitzahl == a2.postleitzahl)
            ORDER BY id ASC
            Und dann kannst du ganz einfach in einer Schleife alle Werte auslesen.

            Warum dein Code oben nicht funktioniert, wenn du das erste mal die 2te Schleife durchgehst funktioniert noch alles, beim zweiten mal ist mysql_fetch_assoc() aber schon durchgelaufen für das $ergebnis2, daher müsste das erst wieder zurück gesetzt werden.

            Kommentar


            • #7
              Das ist absolut nicht realisierbar mit PHP???
              Und wie macht man das dann?
              Den Code den du gepostet hast wie soll ich den unterbringen. Es soll ja am Ende etwas entstehen, womit man als user einfach nur überprüfen kann, ob die in adressen1 eingegeben plz richtig sind.

              Kommentar


              • #8
                Mit PHP ist es schon möglich, wäre aber umständlich. Lässt sich viel einfacher mit einer DB Abfrage realisieren. Dazu solltest du dir mal JOINs in MySQL anschauen. Google mal nach Tutorials, gibt genug.

                Und dann kannst du eigentlich ganz einfach in einer While Schleife drauf zugreifen.

                PHP-Code:
                <?php
                while ($row mysql_fetch_assoc($query)) {
                    echo 
                $row['vorname']; // aus adresse1
                    
                echo $row['ort']; // aus adresse2
                }

                Kommentar


                • #9
                  Hardcore...das dauert voll lange die beiden zu joinen. Aber wenn cih dann 2mal die Spalte Ort habe und in PHP echo $zeile['ort'] steht dann gibt er nur den Eintrag der zweiten Tabelle aus. Wie schaff ich es, dass er beide ausgibt.
                  Also wie unterscheidet man in PHP die beiden Tabellen?

                  Kommentar


                  • #10
                    Du könntest im Query extra namen vergeben. Angenommen du hast adresse1 AS a1 (Abkürzung) und adresse2 AS a2 dann kannst du, wenn in beiden Adressen die Spalte "ort" existiert folgendes machen.
                    Code:
                    SELECT
                        a1.ort AS ort1
                        a2.ort AS ort2
                    [...]
                    Das kannst du natürlich mit allen Spalten machen.

                    Und was dauert so lange daran beide Spalten zu joinen? Das schreiben des Querys??

                    Kommentar


                    • #11
                      Zitat von Flor1an Beitrag anzeigen
                      Und was dauert so lange daran beide Spalten zu joinen? Das schreiben des Querys??
                      Ich vermute mal eher, er meint die Ausführzeit...
                      Und dann liegt's wohl daran, dass kein INDEX über der Spalte liegt...
                      [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                      Kommentar


                      • #12
                        Mag sein, die Frage ist überhaupt warum du beim User den Ort und die Postleitzahl speicherst und noch eine zweite Tabelle hast in dem nochmal die selben Daten stehen. Das geht gegen Normalisierung von Datenbanken. Außerdem gegen das DRY Prinzip. Man wie oft hab ich das heute schon gesagt xD

                        Kommentar


                        • #13
                          @agrajag da ich mein die Ausführzeit. Wie macht man das den mit INDEX?
                          @Flo ich mach das, weil ich ein Tabell mit kompletten Anschriften habe, die aber teilweise falsch sind. Nun hab ich eine Tabelle die nur Ort und den dazugehörigen PLZ enthält.
                          Insgesammt soll dann also die erste Tabelle mit hilfe der anderen "repariert" werden.

                          Zu dem SQL Befehl, um spalten zu bennen. Irgendwie haut das nicht hin. Ich weiß aber auch nicht genau wie ich das schreiben soll. Nachdem ich adressen1 = a1 hab, wie mache ich in SQL eine neue Variable

                          Kommentar


                          • #14
                            Nein du musst adressen1 AS a1 machen!

                            Ansonsten könntest du die Spalten auch so "umbennen".
                            Code:
                            SELECT
                                adressen1.ort AS ort1
                                adressen2.ort AS ort2
                            Also direkt die Tabellennamen nutzen.

                            Und die Ausführungszeit von einem JOIN sollte schneller sein als wenn du zwei Querys machst und dann in PHP diese noch vergleichst.

                            Kommentar


                            • #15
                              ja ich versteh was du meinst. Aber ich hab Sytax Probs. Wie du das schreibst bekomm ich Unknown table 'adressen1' in field list.
                              Eigentlich ist doch
                              SELECT * FROM adressen1 AS a1 //und dann// a1.ort AS o1 da fehlt mir doch n trennungszeichen. Sry aber hab mit SQL eigentlich so gut wie keine Erfahrung.

                              Kommentar

                              Lädt...
                              X