[PHP] Problem beim Ausgeben von $id im Link

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Aslan, 21. Juli 2008 .

Schlagworte:
  1. 21. Juli 2008
    Problem beim Ausgeben von $id im Link

    Hallo,

    unzwar hab ich ein Problem, da ich ja mich nich so ganz auskenne mit PHP aber schon etwas Programmiere, steh ich schon vorm ersten Problem.

    Unzwar, möchte ich das hier realisieren:

    1. Die Ausgabe muss in einer Tabelle sein
    2. Die Ausgabe muss mit der "id" (So heißt die Datenbank in MySQL) verlinkt sein z.B. "delete.php?del=33 (33 = $id)

    Code:
    PHP:
    <? php
    include  'mysql.php' ;

    $abfrage  "SELECT * FROM packs" ;
    $ergebnis  mysql_query ( $abfrage );
    while(
    $row  mysql_fetch_object ( $ergebnis ))

       {
    ?>
      
    </div>
    <p align="center" class="Stil2">&nbsp;</p>
    <p align="center" class="Stil2">&nbsp;</p>
    <p align="center" class="Stil2"><?  echo  " $row -> id " ?> | <?  echo  " $row -> ueberschrift " ?> | <?  echo  " $row -> hoster " ?> | <?  echo  " $row -> genre " ; ?><br>
    <?  echo  " $row -> link " ; } ?><br>
    <br>
    <span class="Stil3"><a href="delete.php?id=<?php $id  $row -> id ; echo  $id ?>">L&Ouml;SCHEN</a></span></p>
    Ich danke euch sehr wenn ihr mir bei meinem Problem helfen könnt
     
  2. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    hi, du kanns objekte auch direkt ausgeben^^
    PHP:
    echo  $obj -> index ;
    und " " drumrum brauchst auch ned...

    zu deinem prob: mach ne html-tabelle und erstell in der while-schleife die zeilen?

    PHP:
    <table><tbody>
    <?php  while( true ):  ?>
    <tr><td>hallo</td></td>welt</td></tr>
    <?php  break; endwhile;  ?>
    </tbody></table>
     
  3. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    hmm also wie mache ich das dann mit dem link?

    wenn ich es in der tabelle mache wie folgt kommt sowas raus:

    PHP:
    <table width="350" border="0" align="center">
      <tr>
        <td class="Stil2">ID</td>
        <td class="Stil2"><?  echo  " $row -> id " ?></td>
      </tr>
      <tr>
        <td class="Stil2">&Uuml;berschrift</td>
        <td class="Stil2"><?  echo  " $row -> ueberschrift " ?></td>
      </tr>
      <tr>
        <td class="Stil2">Hoster</td>
        <td class="Stil2"><?  echo  " $row -> hoster " ?></td>
      </tr>
      <tr>
        <td class="Stil2">Genre</td>
        <td class="Stil2"><?  echo  " $row -> genre " ; ?></td>
      </tr>
      <tr>
        <td class="Stil2">DownloadLink</td>
        <td class="Stil2"><?  echo  " $row -> link " ; } ?></td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
    </table>
     
  4. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    aus:

    PHP:
    <? echo  " $row -> link " ; } ?>
    WIRD

    PHP:
    <?=  $row -> link ?>
    <?= steht für <?php echo.
    Ist die Kurzform

    und das } war da falsch (glaube ich)


    Desweiteren rate ich dir, nicht mit mysql_fetch_object zu arbeiten!
    Objecte zu erzeugen brauch viel mehr ressourcen als eine Array.
    Aber auch hier solltest du auf die richtige Wahl achten, mysql_fetch_array speichert doppelt so viele Daten wie mysql_fetch_assoc!
    Denn bei mysql_fetch_array kannst du die Daten auch via $row[0] etc abrufen.
    Bei mysql_fetch_assoc jedoch nur mit den Spaltennamen, also hier zb $row['link'];

    Damit du auch gleich mal ein bisschen von Codeoptimierung Wind bekommst

    MfG
     
  5. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    Aus Kompatibilitätsgründen solltest du jedoch
    PHP:
    <? php
     
    echo  $row -> link // oder print. :-)
    ?>
    benutzen.
     
  6. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    @Cydoc: Das '}' beendet die while

    Ich würd die Ausgabe dennoch weiterhin so gestalten:
    <?php echo $row->id; ?>
    Der Grund: Dieser Tag funktioniert so nur (also <?= ), wenn in der php.ini short_open_tag aktiviert ist.

    Und zu deinem Optimierungstipp: Ich rate jedem, mysql_fetch_arr5ay zu verwenden. Als zweiten Parameter kann man dann MYSQL_ASSOC übergeben, und man erhält auch so die Spaltennamen als Keys
    Ist wesentlich flexibler.

    Ansonsten zum Problem:
    Die while-Schleife wird noch vor der Ausgabe der id beendet, bzw erneut gestartet.
    Dann ist klar, warum es nicht geht

    €:
    So sollte es funzen:
    PHP:
    </div>
    <?php
    include  'mysql.php' ;

    $abfrage  "SELECT * FROM packs" ;
    $ergebnis  mysql_query ( $abfrage );
    while(
    $row  mysql_fetch_object ( $ergebnis ))

       {
    ?>
    <p align="center" class="Stil2">&nbsp;</p>
    <p align="center" class="Stil2">&nbsp;</p>
    <p align="center" class="Stil2"><?php  echo  " $row -> id " ?> | <?php  echo  " $row -> ueberschrift " ?> | <?php  echo  " $row -> hoster " ?> | <?php  echo  " $row -> genre " ; ?><br>
    <?php  echo  " $row -> link " ?><br>
    <br>
    <span class="Stil3"><a href="delete.php?id=<?php  echo  $row -> id ?>">L&Ouml;SCHEN</a></span></p>
    <?php
    }
    ?>
    Mfg
     
  7. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link



    So zur Info: Haltet mich bloß nicht für dumm

    Ich weiß wohl, dass } das beendet, aber es ar, wie du auch dann sagtest, an einer ganz falschen Stelle.
    Da er nur einen Teilcode postete, habe ich das gesagt was ich sah und es ist richtig.
    Und natürlich, du kannst mysql_fetch_array mit der ASSOC Angabe machen, allerdings ist es dann genau dasselbe wie mysql_fetch_assoc und es spart wieder Code, aber wenn du gerne jedes mal die Angabe dazu machen willst, kein Problem. Wenn man die Indizies haben will, nimmt man halt wieder array....
    Nagut, wenn man nicht weiß wie man das umstellt, dann sollte man von Anfang an alles die richtigen Leute machen lassen.
    Es warn halt nur Optimierungstipps.
    print zb würde ich nicht nutzten, du kannst ganz leicht selber testen, dass print in der Ausgabe langsamer ist als echo, wobei viele genau das andere denken. Tatsache ist, das echo schneller ist.
     
  8. 21. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    Wer fortgeschritten entwickelt, nutzt Klassen. Und das bisschen Code mehr ist mehr oder weniger scheiss egal.
    Da gehts selbst bei großen Projekten nicht um jede Nanosekunde.
    Und man kann den ASSOC ganz leicht auf default legen und dann bspw die Keys nur dann abrufen, wenn man sie braucht.
    Spart einen kompletten PHP-Befehl.

    Und ich weiß nicht, was schneller ist.
    <?php echo "blabla"; ?> oder <?="blabla";?>
    Ich denke ersteres, da echo als Sprachkonstrukt bereits so übergeben wird - im Gegensatz zu <?=, wo PHP erst noch prüfen muss, ob die entsprechende Einstellung aktiviert ist?

    Und zu print vs. echo.
    Laut einem Benchmark (dem hier), liegt print vor echo.
    Getestet wurde noch mit einer PHP4-Version.
    Und hier liegt anscheinend echo ganz leicht vor print: klick hier.

    Ihmo kann man print oder echo benutzen. Beides sind Sprachkonstrukte. Eigtl sowieso völlig egal =P
     
  9. 22. Juli 2008
    AW: Problem beim Ausgeben von $id im Link

    du redest hier von zeitangaben die du ned mal merken würdest wenn alles in zeitlupe laufen würde.
    die einzigen unterschiede zwischen echo und print sind, dass echo beliebige viele argumente entgegen nehmen kann und print immer 1 zurückgibt (deswegen a weng langamer, aber mächtiger).

    PHP:
    echo  'foo' 'bar' 'baz' ;
    bei print hingegen würde das so aussehen (normale verkettung via ".")
    PHP:
    print  'foo'  'bar'  'baz' ;
    wenn du also lieber ein "," anstatt einem "." schreibst, kannst echo benutzen, andernfalls kannst wählen was dir besser gefällt.

    die benchmarks sind im grunde hinfällig, weil seit php5 kein merkbarer unterschied mehr besteht.

    PHP: print - Manual <- kommentare lesen

    ps: php5.3 hat keine short-tags mehr, nur mal so nebenbei.
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.