php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.04.2005, 18:31  
Gast
 
Beiträge: n/a
Standard geht das hier irgendwie?

Hallo, hab ein minderschweres Problem...

Code:
<?php
if($_POST['radiobutton'] == "1")
  include "suchergebnisse1.php"?=0;
else
  include "suchergebnisse2.php"?=0;
?>
Diese Zeilen funzen net, genauso als wenn ich das ?=0 vor die " setzen würde. Wie bekomm ich das hin? Eine Idee

Vielen Dank im voraus
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.04.2005, 18:33  
Gast
 
Beiträge: n/a
Standard

Zitat:
include "suchergebnisse1.php"?=0;
Ist eigentlich Schwachsinn, überleg mal genau was include() bedeutet.
 
Alt 20.04.2005, 18:33  
Gast
 
Beiträge: n/a
Standard

FAQ lesen!
11.1. Wie übergebe ich Variablen aus einem Formular an ein PHP-Script?
http://www.php-faq.de/q/q-formular-variablen.html
 
Alt 20.04.2005, 18:34  
Erfahrener Benutzer
 
Registriert seit: 14.04.2005
Beiträge: 1.004
search
Standard

was ist 0?
include ("./suchergebnisse1.php");


greez search
search ist offline  
Alt 20.04.2005, 18:38  
Gast
 
Beiträge: n/a
Standard

das is leider offline! verstehe das prob nicht! wenn ich diese endung weglasse, zeigt er mir nur 20 einträge an, aber nicht die möglichkeit weiterzublättern. gebe ich diese endungen an, funzt alles einwandfrei. das kann doch kein großes ding sein. bitte
 
Alt 20.04.2005, 18:39  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

also willst du eine Blätter-Funktion programmieren?
__________________
Aufstrebend, kompetent und werbefrei.
www.developers-guide.net
supertramp ist offline  
Alt 20.04.2005, 18:43  
Gast
 
Beiträge: n/a
Standard

das habe ich bereits. und das funzt auch. aber nur wenn ich nix eingebe. gebe ich was ein is die blätterfunktion verschwunden, deswegen...


Code:
<form method="POST" action="suchergebnisse.php"> 
	
    <table width="339" border="0" align="center"> 
      <tr> 
        <td width="270"><span class="Stil5 Stil8"><input name="radiobutton" type="radio" value="1" checked>
        Titel 
        <input type="radio" name="radiobutton" value="2">
        </span><span class="Stil5 Stil2">Interpret</span></td> 
        <td width="59"></td> 
      </tr>

Code:
<?php
if($_POST['radiobutton'] == "1")
  include "suchergebnisse1.php";
else
  include "suchergebnisse2.php";
?>
Code:
<?
  // Verbindung zur Datenbank herstellen
  include("../connect.php");

  $Zeilen_pro_Seite = 20;
?>

<?php
if (!isset($Anfangsposition)) {
  $Anfangsposition = 0;
}
?>

<?php
$sql="select * from lyrics where titel LIKE '%$titel%' 
     limit $Anfangsposition,$Zeilen_pro_Seite";
$result=mysql_query($sql);
$result1=mysql_query("select * from lyrics where titel LIKE '%$titel%'");

$Anzahl=mysql_num_rows($result1);
while ($row=mysql_fetch_array($result)) {
    $feld1=$row["name"];
    $feld2=$row["titel"];
    // Daten anzeigen. In der Praxis wird man hier eher eine Tabelle einbauen.
    echo $row["name"]." ";
	echo ''.$row["titel"].''."
";
}
echo "
";
?> 

<?php
if($Anfangsposition > 0) {
  echo "<a href=\'suchergebnisse.php?Anfangsposition=0'>[erste Seite]</a>"; echo " ";
  $back=$Anfangsposition-$Zeilen_pro_Seite;
  if($back < 0) {
    $back = 0;
  }
  echo "<a href=\"suchergebnisse.php?Anfangsposition=$back\">[eine Seite zur&uuml;ck]</a>"; echo " ";
}
?> 
<?php
if($Anzahl>$Zeilen_pro_Seite) {
  $Seiten=intval($Anzahl/$Zeilen_pro_Seite);
  if($Anzahl%$Zeilen_pro_Seite) {
    $Seiten++;
  }
}
?> 
<?php
for ($i=1;$i<=$Seiten;$i++) {
  $fwd=($i-1)*$Zeilen_pro_Seite;
  echo "<a href=\"suchergebnisse.php?Anfangsposition=$fwd\">$i</a>"; echo " ";
}
?> 
<?php
if($Anfangsposition < $Anzahl-$Zeilen_pro_Seite) {
  $fwd=$Anfangsposition+$Zeilen_pro_Seite;
  echo "<a href=\"suchergebnisse.php?Anfangsposition=$fwd\">[eine Seite weiter]</a>"; echo " ";
  $fwd=$Anzahl-$Zeilen_pro_Seite;
  echo "<a href=\"suchergebnisse.php?Anfangsposition=$fwd\">[letzte Seite]</a>"; echo " ";
}
?>

[/code]
 
Alt 20.04.2005, 19:04  
Gast
 
Beiträge: n/a
Standard

Wenn ich das so lasse, werden nur 20 Datensätze angezeigt und die Möglichkeit weiterzublättern ist nicht da. Gebe ich hingegen nix ein, dann is die Blättermöglichkeit da. Was stimmt hier nicht?
 
Alt 20.04.2005, 19:10  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Edgecombe
Was stimmt hier nicht?
Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.


Gruß
phpfan
 
Alt 09.05.2005, 08:42  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

gibt's denn eigentlich ein tutorial zu 'richtig debuggen'? wäre schön, denn man könnte sich einiges an tipperei im anfängerbereich sparen.

ich hätte noch einen alternativ- bzw. komplementärvorschlag zum debugging:

1. man bemerkt, dass ein skript nicht das tut, was es soll.
2. man schreibt die kleinstmögliche/einfachstmögliche funktion, die den original-code 'benutzt' und den fehler hervorruft.
3. man achtet darauf, dass die funktion fehlschlägt.
4. erst dann korrigiert man den code unter verwendung von phpfans algorihmus.
5. man korrigiert so lange, bis die test-funktion nicht mehr fehlschlägt.
6. sollten während des debugging weitere fehler auftauchen, lässt man sich davon nicht ablenken, sondern macht einen @TODO - kommentar an die besagte stelle und sucht trotzdem nur nach dem eigentlichen fehler.
7. man richtet die funktion derart ein, dass man sie mit einem einzigen klick verwenden kann.
8. während der weiteren entwicklung ruft man den test-code immer wieder auf, und guckt, dass alle tests, die man geschrieben hat, nicht mehr fehlschlagen.

vorteile:
1. oft / fast immer ist es so, dass man einen fehler findet, danach an einer anderen stelle arbeitet und den selben fehler wieder in den code einbringt. das ist mit dieser test-methode nicht mehr möglich, denn die 'alten tests' werden immer wieder während der entwicklung mit extrem hoher frequenz aufgerufen - oft im 10-minuten-takt. wenn ein alter test fehlschlägt, kann die ursache nur im code sein, den man in den letzten 10 minuten geschrieben hat.
2. diese test-methode ist sehr einfach.
3. optimalerweise implementiert man neue features/funktionalitäten gleich indem man erst test-code schreibt und dann erst die funktion implementiert, die die im test geforderte funktionalität aufweist.
4. man schreibt dadurch stabileren, transparenteren code
5. der 'arbeits'-code lässt sich leichter ändern -> refactoring.
6. die zusätzliche zeit, die man ins schreiben von test-code investiert, spart man beim debugging wieder ein - weil man die fehlerhafte stelle im code deutlich leichter eingrenzen kann.
7. man gewinnt vertrauen ins eigene können und ist weniger frustriert - ein nicht-fehlschlagender test bestätigt, dass man voraussichtlich vieles richtig gemacht hat. und falls man was falsch gemacht hat und trotzdem alle tests 'durchkommen', kann man einen neuen test schreiben, der den neuen fehler aufdeckt und diesen dann korrigieren. womit man den eigenen code wieder stärker gemacht hat.
8. der 'arbeitende' code ist nicht mehr so stark mit debug-bedingungen etc. verschmutzt

schlüsselwörter: phpUnit, test driven developement, unit tests, refactoring, extreme programming.

grüße
axo
axo 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


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 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.