• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla w pętli json api php

0 głosów
924 wizyt
pytanie zadane 24 listopada 2019 w PHP przez Filipczak Gaduła (4,020 p.)

Witam, czy jest możliwość zrobienia pętli w pętli używając php?
 

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

include('inc/db.php');
include('inc/api.class.php');

$api = new API();

if(isset($_GET['name'])) && preg_match('/^[a-zA-Z0-9]{2,32}$/', $_GET['name']))
	{
		$data = $api->Name($_GET['name']);
		
		$results = array();
		
		foreach($data as $row)
		{
			array_push($results, array(
				'name' => $row['name'],
				'image' => $row['image'],
				'movie' => $row['movie']
				'info' => [
					'seasioncount' => $row['seasioncount'],
					'sectioncount' => $row['sectioncount']
				]
				'items' => [
					'seasion1' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link'],
					]
					'seasion2' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link'],
					]
					'seasion..' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link'],
					]
					'seasion100' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link'],
					]
				]
		}
		else
		{
			print_r(json_encode(array(
				'error' => 1,
				'response' => 'Nie prawidlowa nazwa'
			),	JSON_PRETTY_PRINT));
		}
			
			

chcę zrobić tak, żeby wyświetlały się w pętli sesion i section i żeby to brało z bazy danych odpowiednie linki, czy jest to możliwe do wykonania?

komentarz 25 listopada 2019 przez jpacanowski VIP (101,940 p.)
W PHP nie da się zrobić pętli. Do tego potrzebny jest framework "sznur" i podstawowa umiejętność zaplatania.

1 odpowiedź

0 głosów
odpowiedź 24 listopada 2019 przez michal_php Stary wyjadacz (13,700 p.)

Jedna pętla Ci wystarczy jeśli oczywiście jeśli nie masz relacyjnej bazy danych.

robisz coś takiego:

foreach ($pobraneBaza as $item){

    $table=[
        $item['imie'],
        $item['email'],
  ];
}

Oczywiście jest to przykład nie wiem jak masz zaprojektowaną bazę danych.I kwestia czy pobierasz też całą kolumnę z bazy danych czy tylko jeden wiersz.Bo przy pobieraniu jednego wiersza nie musisz iterować. 

komentarz 24 listopada 2019 przez Filipczak Gaduła (4,020 p.)

aktualnie jeszcze nie mam zrobionej bazy danych ponieważ chciałbym zrobić tak jak wcześniej mi pisałeś, żeby z inputów wsadzić do json'a. 
 

<form method="POST" action="json.php">
	<input type="text" name="name[]" class="admininput">
	<input type="text" name="image[]" class="admininput">
	input type="hidden" name="movie[]" value="0" class="admininput">
	<input type="text" name="seasioncount[]" class="admininput"> 
<div class="inputs">
	<input type="text" name="sectioncount[]" class="admininput">		         <button class="add_form_field">Add New Field &nbsp; </span></button>
</div>
	<input type="submit" name="add" class="button" value="add"/>
</form>

i chcę właśnie to wsadzić  w mniej więcej taki sposób i nie jestem pewny czy to ma prawo działać i czy będzie działać

komentarz 24 listopada 2019 przez michal_php Stary wyjadacz (13,700 p.)

Dobrze kombinujesz.Mała podpowiedź musisz jeszcze użyć jakiejś pętli aby pomnożyła Ci ilość input coś takiego: 

<form method="POST" action="json.php">
  <?php foreach $zmienna as $item 
echo "<input type="text" name="name[]" class="admininput">";
echo "<input type="text" name="image[]" class="admininput">";
?>
    input type="hidden" name="movie[]" value="0" class="admininput">
    <input type="text" name="seasioncount[]" class="admininput"> 
<div class="inputs">
    <input type="text" name="sectioncount[]" class="admininput">               <button class="add_form_field">Add New Field &nbsp; </span></button>
</div>
    <input type="submit" name="add" class="button" value="add"/>
</form>

np.: formularz wcześniej ustawiasz sobie wartość $zmienna do iteracji i tyle będziesz mieć input i wpisujesz i przesyłasz do zapisu.

komentarz 24 listopada 2019 przez Filipczak Gaduła (4,020 p.)
<script>
$(document).ready(function() {
    var max_fields      = 1000;
    var wrapper         = $(".inputs"); 
    var add_button      = $(".add_form_field"); 
    
    var x = 1; 
    $(add_button).click(function(e){ 
        e.preventDefault();
        if(x < max_fields){ 
            x++; 
            $(wrapper).append('<div><input type="text" name="serial[]" class="admininput""/><a href="#" class="delete">Delete</a></div>'); //add input box
        }
		else
		{
		alert('You Reached the limits')
		}
    });
    
    $(wrapper).on("click",".delete", function(e){ 
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});
</script>

javascript odpowiada u mnie za dodawanie inputów wraz z tym przyciskiem 
 

<button class="add_form_field">Add New Field &nbsp; <span style="font-size:16px; font-weight:bold;">+ </span></button>

Tylko mam pytanie, czy jeśli przesłałbym to do tego skryptu 
 

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

include('inc/db.php');
include('inc/api.class.php');

$api = new API();

if(isset($_GET['name'])) && preg_match('/^[a-zA-Z0-9]{2,32}$/', $_GET['name']))
	{
		$data = $api->Name($_GET['name']);
		
		$results = array();
		
		foreach($data as $row)
		{
				'name' => $row['name'],
				'image' => $row['image'],
				'movie' => $row['movie']
				'info' => [
					'seasioncount' => $row['seasioncount'],
					'sectioncount' => $row['sectioncount']
				]
				'items' => [
					'seasion1' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion2' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion..' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion100' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
				]
		}
		else
		{
			print_r(json_encode(array(
				'error' => 1,
				'response' => 'Nie prawidlowa nazwa'
			),	JSON_PRETTY_PRINT));
		}
			
			

to będzie wtedy to działać i będzie można to już normalnie wyświetlać?
czy jakoś inaczej mam kombinować?

komentarz 24 listopada 2019 przez michal_php Stary wyjadacz (13,700 p.)
Dobrze kombinujesz. Możesz zrobić aby w danym widoku js dodawał automatycznie tyle pól ile chcesz w tedy sumie nie potrzebujesz pętli w widoku. Kwestia podejścia do tematu. Jak napiszesz cały projekt to sam widział gdzie jest jeszcze jakieś element wymagający modyfikacji.
komentarz 24 listopada 2019 przez Filipczak Gaduła (4,020 p.)

ok, chyba wymyśliłem jak zrobić tak aby dodawał do bazy danych rzeczy z inputów i wyświetlał to w jsonie, tylko nie jestem pewny czy to może działać

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

include('inc/db.php');
include('inc/api.class.php');

$api = new API();

		$array = [
			'id' => "",
			'name' => $_GET['name'],
			'image' => $_GET['image'],
			'movie' => $GET['movie'],
			'seasioncount' => $GET['seasioncount'],
			'sectioncount' => $GET['sectioncount'],
			for($i = 0; $i < $_GET['seasioncount']; $i++) {
				'seasion' . $i => 'seasion' . $i,
			}
			endfor;
			for($i = 0; $i < $_GET['sectioncount']; $i++) {
				'section' . $i => 'section' .$i,
			}
		]
		function insertjson($array){
			return json_encode($array);
		}
		function viewjson($con){
			$stmt = $con ->prepare("SELECT * FROM movie")
			$stmt->execute();
			$arr = array();
			while($opt = $stmt->fetch()){
				$arr[] = $opt;
			}
			echo json_encode($arr);
		}
		function insertmysql($con, $data){
			$stmt = $con->prepare("INSERT INTO movie VALUES (?,?,?,?,?,?,?,?,?)");
			$stmt->bindParam(1,$id);
			$stmt->bindParam(2,$name);
			$stmt->bindParam(3,$image);
			$stmt->bindParam(4,$movie);
			$stmt->bindParam(5,$seasioncount);
			$stmt->bindParam(6,$sectioncount);
			for($i = 0; $i < $_GET['seasioncount']; $i++) {
				$stmt->bindParam($x = 7; $x,$season . $i);
				$x++
			endfor;
			for($i = 0; $i < $_GET['sectioncount']; $i++) {
				$stmt->bindParam($z = $x; $z,$section . $i);
				$z++
			}
			
			$stmt->bindParam(8,$id);
			$stmt->bindParam(9,$id);
		}
		
		
		
		
		
		
		
if(isset($_GET['name'])) && preg_match('/^[a-zA-Z0-9]{2,32}$/', $_GET['name']))
	{
		$data = $api->Name($_GET['name']);
		
		$results = array();

		foreach($data as $row)
		{
			array_push($results, array(
				'name' => $row['name'],
				'image' => $row['image'],
				'movie' => $row['movie']
				'info' => [
					'seasioncount' => $row['seasioncount'],
					'sectioncount' => $row['sectioncount']
				]
				'items' => [
					'seasion1' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion2' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion..' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion100' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
				]
		}
		else
		{
			print_r(json_encode(array(
				'error' => 1,
				'response' => 'Nie prawidlowa nazwa'
			),	JSON_PRETTY_PRINT));
		}
			
			

 

komentarz 24 listopada 2019 przez michal_php Stary wyjadacz (13,700 p.)
No semantyczne kod je ok. Teraz tak na prawdę musisz zbudować ta aplikacje i zobaczy co z niej wyjdzie.Nie bój się błędów w kodzie to jedna z ważniejszych lekcji umiejętność czytana i rozumienia błędów interpretera. Ciężko mi powiedzieć bo nie widzę całego kodu.
komentarz 24 listopada 2019 przez Filipczak Gaduła (4,020 p.)

Index.php przez który wysyłam post

<form method="POST" action="json.php">
  <input type="text" name="name[]" class="admininput">
  <input type="text" name="image[]" class="admininput">
  <input type="hidden" name="movie[]" value="0" class="admininput">
  <input type="text" name="seasioncount[]" class="admininput"> 
  <div class="inputs">
	<input type="text" name="sectioncount[]" class="admininput">		       <button class="add_form_field">Add New Field &nbsp; <span style="font-size:16px; font-weight:bold;">+ </span></button>
  </div>
	<input type="submit" name="add" class="button" value="add"/>
				</form>

i json.php

<?php

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

include('inc/db.php');
include('inc/api.class.php');

$api = new API();

		$array = [
			'id' => "",
			'name' => $_GET['name'],
			'image' => $_GET['image'],
			'movie' => $GET['movie'],
			'seasioncount' => $GET['seasioncount'],
			'sectioncount' => $GET['sectioncount'],
			for($i = 0; $i < $_GET['seasioncount']; $i++) {
				'seasion' . $i => 'seasion' . $i,
			}
			endfor;
			for($i = 0; $i < $_GET['sectioncount']; $i++) {
				'section' . $i => 'section' .$i,
			}
		]
		function insertjson($array){
			return json_encode($array);
		}
		function viewjson($con){
			$stmt = $con ->prepare("SELECT * FROM movie")
			$stmt->execute();
			$arr = array();
			while($opt = $stmt->fetch()){
				$arr[] = $opt;
			}
			echo json_encode($arr);
		}
		function insertmysql($con, $data){
			$stmt = $con->prepare("INSERT INTO movie VALUES (?,?,?,?,?,?,?,?,?)");
			$stmt->bindParam(1,$id);
			$stmt->bindParam(2,$name);
			$stmt->bindParam(3,$image);
			$stmt->bindParam(4,$movie);
			$stmt->bindParam(5,$seasioncount);
			$stmt->bindParam(6,$sectioncount);
			for($i = 0; $i < $_GET['seasioncount']; $i++) {
				$stmt->bindParam($x = 7; $x,$season . $i);
				$x++
			endfor;
			for($i = 0; $i < $_GET['sectioncount']; $i++) {
				$stmt->bindParam($z = $x; $z,$section . $i);
				$z++
			}
			
			$stmt->bindParam(8,$id);
			$stmt->bindParam(9,$id);
		}
		
		
		
		
		
		
		
if(isset($_GET['name'])) && preg_match('/^[a-zA-Z0-9]{2,32}$/', $_GET['name']))
	{
		$data = $api->Name($_GET['name']);
		
		$results = array();

		foreach($data as $row)
		{
			array_push($results, array(
				'name' => $row['name'],
				'image' => $row['image'],
				'movie' => $row['movie']
				'info' => [
					'seasioncount' => $row['seasioncount'],
					'sectioncount' => $row['sectioncount']
				]
				'items' => [
					'seasion1' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion2' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion..' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
					'seasion100' => [
						'section1' => $row['link'],
						'section2' => $row['link'],
						'section..' => $row['link'],
						'section100' => $row['link']
					]
				]
		}
		else
		{
			print_r(json_encode(array(
				'error' => 1,
				'response' => 'Nie prawidlowa nazwa'
			),	JSON_PRETTY_PRINT));
		}
			
			

db.php 

<?php

require 'inc/settings.php';

try
{
    $con = new PDO('mysql:host=' . $config['HOST'] . ';dbname=' . $config['DB'] . ';charset=utf8', $config['USER'], $config['PASS']);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
    die($e->getMessage());
}

w settings jest login i hasło i baza danych do której się łączy

api.class.php

<?php

Class API
{
    public function Name($name)
    {
        global $con;

        $db = $con->prepare('SELECT * FROM leaks WHERE nickname LIKE ? ORDER BY date_added DESC');
        $db->execute(array(
            "%$name%"
        ));

        return $db->fetchAll(PDO::FETCH_ASSOC);
    }
}

 

Podobne pytania

+5 głosów
1 odpowiedź 602 wizyt
pytanie zadane 17 maja 2015 w JavaScript przez Comandeer Guru (607,060 p.)
0 głosów
1 odpowiedź 855 wizyt
pytanie zadane 15 września 2021 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)
+1 głos
2 odpowiedzi 1,293 wizyt

93,428 zapytań

142,423 odpowiedzi

322,652 komentarzy

62,789 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...