PHP Kann Variabel nicht hochzählen

_CH_K_1991_

Lieutenant
Registriert
Nov. 2008
Beiträge
772
Hallo zusammen

Ich erstelle aktuell ein kleines Newsboard.
Dazu habe ich eine kleine MySQL Datenbank eingerichtet und habe eine php Seite auf welcher ich mit Javascript nach 5s auf folgenden Code verlinke, jetzt möchte ich gerne, dass ich dort die GET Variable, welche mitgeliefert wird, ausgelesen und um eins erhöht wird.
Jedoch klappt das mit um eins erhöhen nicht.

ich hoffe ihr könnt mir hier weiterhelfen.

PHP:
<?php
  // Create connection
  $con=mysqli_connect(HIER KOMMT DER CONNECTION STRING);
  
  // Check connection
  if (mysqli_connect_errno($con))
  {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $result1 = mysqli_query($con,"SELECT count(*) FROM news");
  $count = mysqli_fetch_array($result1);
  $count1 = intval($count);
  
  $id = $_GET['id'];
  $id1 = intval($id);
  $id1++;
  
  if ($id1 == $count1)
  {
    header("Location: http://WEBSITE/news.php?id=1");
  }
  else
  {
    header("Location: http://WEBSITE/news.php?id=$id1");
  }
?>

​Besten Dank
 
Mach doch mal bitte in Print auf das GET Element und die count1 Variable, habe das Gefühl eins von beiden ist nicht gefüllt.
 
Zuletzt bearbeitet:
hallo zusammen
Jop ich habe mir beide schon ausgeben lassen
bei $count kommt eine 3 raus-> was auch richtig ist, ich habe in der DB drei Einträge.
bei $id kommt eine 1 raus -> was soweit ja auch richtig ist, denn zum Start wird ja die $_GET Variable auf ?id=1 gesetzt:

hier noch der Code welcher in der "ersten File" steht, dieser ruft dann den oberen Code auf.

Hier der Code welcher im Browser so ausgegeben wird:

PHP:
<header>
  <article id="header"><h1>TITEL</h1></article>
    <article id="timer">
        <!--CODE für Wechsel der html Seite-->
    <script type='text/javascript'>
    <!--      var homepage = "php_inc/timer.inc.php?id=";    var sekunden = 5;    var count = 0;

    document.write('<div ><span id="counter_span">' + sekunden + '</span><a href="' + homepage + '">' + homepage + '</a></div>');
        //-->    </script>      </article>  </header><section id="text" style="overflow-y:scroll;">

//HIER WIRD DER TEXT AUS DER DATENBANK EINGELESEN
      <script type='text/javascript'>
    <!--    document.write('<meter id="count" max="20" min="0" low="10" high="20" value="'+count+'">
</meter>');    //-->        function cWL()    {      sekunden--;      count++;     
 document.getElementById('counter_span').innerHTML = sekunden;
      document.getElementById('count').value = 20-sekunden;
      if ( !sekunden ) {        document.location.href = homepage;      }    }
    window.setInterval('cWL()',1000);
​    </script>  </section>

und noch der Code welcher in der ersten File steht (PHP Code):

PHP:
<?php include ("php_inc/head.inc.php"); ?>

<?php include ("php_inc/header.inc.php"); ?>

<section id="text" style="overflow-y:scroll;">
  <?php
  $id = $_GET['id'];
  
  // Create connection
  $con=mysqli_connect(DATENBANK CONNECTION STRING);
  
  // Check connection
  if (mysqli_connect_errno($con))
  {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $result = mysqli_query($con,"SELECT news FROM news WHERE ID_N = $id");
  $newstext = mysqli_fetch_array($result);
  
  print_r ($newstext);
  ?>
  
    <script type='text/javascript'>
    <!--
    document.write('<meter id="count" max="20" min="0" low="10" high="20" value="'+count+'"></meter>');
    //-->
    
    function cWL()
    {
      sekunden--;
      count++;
      document.getElementById('counter_span').innerHTML = sekunden;
      document.getElementById('count').value = 20-sekunden;
      if ( !sekunden ) {
        document.location.href = homepage;
      }
    }

    window.setInterval('cWL()',1000);
    </script>
  
</section>

<?php include ("php_inc/footer.inc.php"); ?>

​DANKE
 
Zuletzt bearbeitet: (leider hat es den oberen Code ein bisschen deformatiert... sry)
Code:
<?php
$con=mysqli_connect(HIER KOMMT DER CONNECTION STRING);
if (mysqli_connect_errno($con)){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); }

$result1 = mysqli_query($con,"SELECT count(*) FROM news");
$count   = mysqli_fetch_array($result1); 
$count1 = intval($count[0]);
$id         = $_GET['id'];
$id1       = intval($id);
$id1++;

$get_append = $id1 == $count1 ? 1 : $id1;
header("Location: http://WEBSITE/news.php?id=$get_append");

?>
mysql_fetch_array liefert ein array.
http://php.net/manual/de/function.mysql-result.php
 
Zuletzt bearbeitet:
Hmm kann keinen Fehler entdecken.
Ich vermute mal count1 und id1 hast schon mal versucht mit is_numeric zu prüfen ob die wirklich numerisch sind.
Funktioniert das normale erhöhen um 1? Id1 = id1 + 1;

Edit: omaliesschen er hat gesagt wenn er nen print macht sieht der Wert der Variable ok aus.
Weiß jetzt net genau ob man bei nur einem Ergebniss Wert auch die stelle im Array angeben muss bzw. Ob mysqli_fetch_array da ein Array überhaupt zurückliefert.
 
Zuletzt bearbeitet:
Danke für die Antworten.
@omaliesschen
Deshalb mache ich konvertiere ich ja das Ergebnis von $count mit Intval().
@echoDave
Nein, das mit isNumeric habe ich noch nicht geprüft, werde ich gleich probieren.
Das normale erhöhen habe ich ebenfalls schon ausprobiert.

​Danke

EDIT:\\ Ich habe soeben das mit dem is_numeric überprüft.
Ich bekomme bei den Variabeln $count1 und $id1 eine 1 zurück, sprich true.
 
Zuletzt bearbeitet: (ergebnis des test reingeschrieben)
was meinst du damit omaliesschen?

PHP:
echo intval(array($count));

​Das ergibt 1

EDIT:\\
Danke
Das da:
PHP:
echo intval($count);
ergibt auch eins.

Dann haben wir hier schon einen Fehler gefunden.
Wie kann ich denn das Array anders umwandeln?
 
Zuletzt bearbeitet:
Das ergibt "Null".

Kann es sein, dass $_GET ebenfalls ein Array oder was auch immer zurückgibt?
Denn wenn ich $count1 = 5; setzte, klapp das mit dem hochzählen auch nicht.

​Danke für die Antwort.

EDIT:\\
sorry
ich darf nicht var_dump($count1) machen sondern ich muss das ganze mit $count machen!
Das ergibt:
array(2) { [0]=> string(1) "3" ["count(*)"]=> string(1) "3" }
 
Lass das intval auf das count result weg.

Code:
$count   = mysqli_fetch_array($result1);
$count1 = $count[0];

oder

Code:
$count1 = mysqli_result($result1);

Ich hab keine Ahnung von Intval. Du wendest es allerdings auf ein array an und ich bezweifle dass das in der Form korrekt ist.


$_GET ist auch ein array. Deshalb ja $_GET['key']. Allerdings überträgst du ja den Wert in $id1.

Das hier:
Code:
echo intval(array($count));

Würde intval() auf ein mehrdimensionales array anwenden da count selbst ja schon ein array ist.
 
Zuletzt bearbeitet:
Danke für deine Antwort.

Wenn ich jetzt die $id1 Variabel manuell auf 1 setzte also so -> $id1 = 1;
Dann lädt er mir die nächste Seite.

Doch ich verstehe nicht ganz wie ich jetzt das auf mein GET anwenden muss
PHP:
$id = $_GET['id'];
  $id1 = intval($id);
  $id1++;

Ich übertrage ja im URL den Wert ?id1
Ich möchte jetzt aber nur die 1 haben als integer Wert.
Wie mache ich denn das hier?
 
Der get in der URL sieht so aus ?id=1

Wenn du jetzt

$id = $_GET["id"]

Machst steht in $id die 1 brauchst kein Intval ;)

Falls die Seite online gehen soll wurde ich halt ne sicherheitsabfrage machen ob get id ein int ist (is_numeric)
 
Wiederum Danke für die Antworten, aber er zählt immer noch nicht hoch.
Was ist mit dem typecast gemeint?


EDIT:\\
Habe noch ein bisschen am CODE hin und her geschraubt auch im Header wo das Javaschript die aktuelle id in die GET Variable füllt...
Dort passiert noch ein Fehler, wenn ich diese manuell setzte funktioniert es:

PHP:
<?php
$id1 = $_GET['id'];
?>
<!--CODE für Wechsel der html Seite-->
<script type='text/javascript'>
<!--
var homepage = "php_inc/timer.inc.php?id=1";
var sekunden = 5;
var count = 0;

Ich probiere genau das gleiche hier auch mal aus.

EDIT2:\\

Problem gelöst:

PHP:
<?php
$id = intval($_GET['id']);
?>
<!--CODE für Wechsel der html Seite-->
<script type='text/javascript'>
<!--
var homepage = "php_inc/timer.inc.php?id=<?php echo ($id); ?>";

werde ein Link mit dem kompletten Code hier noch reinstellen.
​Danke viel mal.
Ergänzung ()

Eine Frage habe ich noch:
Wie kann ich ein HTML Code ausgeben ohne Array ( [0] =>?

Danke
 
Zuletzt bearbeitet: (Lösung reingeschrieben)
Code:
    <?php
    $con=mysqli_connect(HIER KOMMT DER CONNECTION STRING);
    if (mysqli_connect_errno($con)){ echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
     
    $result = mysqli_query($con,"SELECT count(*) FROM news");
    $count = mysqli_result($result,0);
    $id = (int)$_GET['id'];
    $id++;
     
    $get_append = $id == $count ? 1 : $id;
    header("Location: http://WEBSITE/news.php?id=$get_append");
     
    ?>
 
sorry, hier habe ich wohl zu wenig erklärt.
Das ist der Header in der File welche dann in die andere aufruft, in welcher wir jetzt gearbeitet haben.
Ich mache das mit dem $_GET Abfragen dort nur, um immer die aktuelle id wieder der PHP File zurückzugeben, ansonsten würde der Vergleich von $id und $count ja nichts bringen, da bei dieser if Schlaufe immer die 1 zurückgegeben werden würde.

Kannst du mir noch sagen wie ich ein HTML Code ausgeben muss im PHP damit dieser korrekt interpretiert wird? Ohne Array = u.s.w.?
 
Was funktioniert denn nicht?

html embeded in php mittels alternative Syntax.

Ich will jetzt nicht alles auflisten. Geht es um einfache Array? Mehrdimensionale arrays?

Einfache arrays:

Code:
<!-- html -->
<div class="<?php echo $array['id']; ?>">text is <?php echo $array['text'];?></div>

zweidimensionales array:

Code:
<!-- html -->


<ul>

<?php foreach( $array as $r) : ?>

    <li id="li_<?php echo $r['id']; ?>"></li>

<?php endforeach; ?>

</ul>
 
Zuletzt bearbeitet:
Ich verstehe nicht, was der SQL Code soll, bzw. warum darauf eingegangen wird. Relevant sind nur die Zeilen 15-17.
 
Zurück
Oben