[PHP e MYSQLI] Sistema sotto categorie

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

[PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

Salve, ho questa tabella:
[code2=sql]CREATE TABLE `news_categorie` (
`id` bigint(8) unsigned auto_increment,
`id_parent` bigint(8),
`titolo` varchar(255),
`ordine` int,
`data` datetime,
`active` int ,
`_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY titolo(titolo)) ENGINE = MyISAM;[/code2]

Ho aggiunto id_parent,
come faccio ad gestire le sotto categorie con insert/update?
con questo form in allegato:

mi dite come posso fare? perché non sto capendo più nulla leggendo in inglese come fare..
ma non so come applicarlo al mio.

grazie mille e buona serata.
Allegati
news.PNG
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

ha scordavo anche la creazione della categoria con il mio form.
Allegati
Cattura.PNG
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

non trovo nessun tutorial decente.. ho perché sono io che non so il termine esatto o è google che va in tilt.

tanto cerco se trovo qualcosa, aspettando una riposta qui.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

eccomi ho trovato qualcosa di funzionante... solo che c'è da riparare qualcosa.

il codice è questo:

Codice: Seleziona tutto

<?php
 $db = new mysqli("localhost", "root", "","Sql429590_1");
?>
<?php
$first_level_cats = $db->query("SELECT * FROM news_categorie");
     echo '<ol>';
     while($row = $first_level_cats->fetch_array()) { ?>   
        <li><a href=""><?php echo $row['titolo']; ?></a></li>
        <?php
         $second_level_cats = $db->query("SELECT * FROM news_categorie WHERE id_parent = ".$row['id']."");
     echo '<ol>';
     while($row = $second_level_cats->fetch_array()) { ?>     

        <li><a href=""><?php echo $row['titolo']; ?></a></li>              
        <?php 
          $third_level_cats = $db->query("SELECT * FROM news_categorie WHERE id_parent = ".$row['id']."");
     echo '<ol>';
     while($row = $third_level_cats->fetch_array()) { ?>     

        <li><a href=""><?php echo $row['titolo']; ?></a></li>              
        <?php
            }
          echo '</ol>'; //third level close
        } 
         echo '</ol>'; // second level close
        }
   echo '</ol>';  // first level close
?>
ma mi fa in questo modo:
Cattura.PNG
Cattura.PNG (5.34 KiB) Visualizzato 191 volte
idee per riparare gli errori?

vi ringrazio molto.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da Zoff »

Aggiungi "WHERE id_parent IS NULL" nella prima query.

Considera però che così se bloccato ad al massimo 3 livelli di categorie.
Ti conviene fare una funzione ricorsiva.

Tipo:

Codice: Seleziona tutto

function menuCategoria( $db, $idParent = '' ){
	if( $idParent ){
		$where = "WHERE id_parent = " . intval($idParent);
	}else{
		$where = "WHERE id_parent IS NULL";
	}
	$cats = $db->query("SELECT * FROM news_categorie $where");
	$html = '<ol>';
	while($row = $cats->fetch_array()) {
		$html .= '<li>';
		$html .= '<a href="">' . $row['titolo'] . '</a>';
		if( $row['id_parent'] ){
			$html .= menuCategoria( $db, $row['id_parent'] );
		}
		$html .= '</li>';
	}
	$html .= '</ol>';
	return $html;
}
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

ok, appena posso provo.. e scusa del ritardo ma non mi era arrivata la notifica email....

ti ringrazio , verso sera provo.

buona giornata.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

scusa, ma come la richiamo la funzione??

grazie mille...
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da Zoff »

così:

Codice: Seleziona tutto

echo menuCategoria($db);
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

niente, mi da output:
nel sorgente "view source page" nel browser.

Codice: Seleziona tutto

<ol></ol>
come mai?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da Zoff »

Difficile dirlo, fai un po di debug.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

guarda zoff ho trovato questo tutorial e mi funziona .. l'unico se mi dai una mano ad mettere <li></li> invece dei ---

ti ringrazio molto e buona settimana, aspetto risposta..

Codice: Seleziona tutto

<?php 
$db = new mysqli('localhost', 'root', '','test');

/*
 * PHP code to traverse hierarchical data (adjacency list model)
 * http://salman-w.blogspot.com/2012/08/php-adjacency-list-hierarchy-tree-traversal.html
 */
$data = array();
$index = array();
$query = $db->query("SELECT id, id_parent, titolo FROM news_categorie ORDER BY data");
while ($row = $query->fetch_assoc()) {
    $id = $row["id"];
    $parent_id = $row["id_parent"] === NULL ? "NULL" : $row["id_parent"];
    $data[$id] = $row;
    $index[$parent_id][] = $id;
}
/*
 * Recursive top-down tree traversal example:
 * Indent and print child nodes
 */
function display_child_nodes($parent_id, $level)
{
    global $data, $index;
    $parent_id = $parent_id === NULL ? "NULL" : $parent_id;
    if (isset($index[$parent_id])) {
        foreach ($index[$parent_id] as $id) {
            echo str_repeat("-", $level) . $data[$id]["titolo"] . "<br>";
            display_child_nodes($id, $level + 1);
        }
    }
}
display_child_nodes(NULL, 0);
?>
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSQLI] Sistema sotto categorie

Messaggio da treled »

niente aiutino??

grazie e buona serata.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti