select php

enricocarli

Utente Attivo
26 Set 2014
46
0
6
buongiorno a tutti,

sto facendo un piccolo cms a scopo didattico, e mi trovo in difficoltà con il "modifica articolo";

qui un esempio:

http://testcode.in/studio/admin/articolo/modifica_articolo.php?id_articolo=2

nella select di categoria c'è quella riguardante l'articolo in questione,

mentre io le vorrei tutte, con quella dell'articolo selezionata;

forse è la query che è sbagliata, posto il codice nella speranza che qualcuno mi aiuti:

PHP:
<?php include("../include/header.php"); ?>
<div id="contenitore">
    		          
    	<?php
						
	    	$sql = "SELECT articoli.title, articoli.description, articoli.keywords, articoli.visibile, articoli.id, articoli.data, articoli.h1, articoli.h2, articoli.foto, articoli.testo, articoli.categoria_id, categorie.nome FROM articoli INNER JOIN categorie ON articoli.categoria_id = categorie.categoria_id WHERE id = '".$_GET['id_articolo']."'";
	    	$ret = mysqli_query( $db, $sql );
	    	while ($row = mysqli_fetch_assoc($ret)){
			print "
			<form method='post' action='update.php?id_articolo=".$_GET['id_articolo']."'>
			<p>categoria</p>
			<select name='categoria_id'>
				<option>".$row['nome']."</option>
			</select> 
			<p>title</p>
			<input name='title' type='text' value='".$row['title']."'>
			<p>description</p>
			<input name='description' type='text' value='".$row['description']."'>
			<p>keywords</p>
			<input name='keywords' type='text' value='".$row['keywords']."'>
			<p>data</p>
			<input name='data' type='text' value='".$row['data']."'>
			<p>h1</p>
			<input name='h1' type='text' value='".$row['h1']."'>
			<p>h2</p>
			<input name='h2' type='text' value='".$row['h2']."'>
			<p><a class='fancybox fancybox.iframe' href='".$base_url."/admin/upload/upload_lightbox.php'>Carica Foto</a></p>
			<input name='foto' type='text' value='".$row['foto']."'>
			<p>testo</p>
			<textarea name='testo' type='text' id='editor1'>".$row['testo']."</textarea>
			<input name='submit' type='submit' value='invia' id='conferma'>
			</form>
			";
	    	}
		?>
        
    
</div>
<?php include("../include/footer.php"); ?>

all'interno della select, dovrei inserire una cosa del genere:

PHP:
<?php

	
	    	$sql = "SELECT * FROM categorie";
	    	$ret = mysqli_query( $db, $sql );
	    	while ($row = mysqli_fetch_assoc($ret)){
			print "
			<option value=".$row['categoria_id'].">".$row['nome']."</option>
			";
	    	}
		?>

ma non va, forse perchè non si possono annidare le query?
ho provato anche altri sistemi ma senza risultato.

ringrazio in anticipo per le risposte
buon week end a tutti
 
Scusate se insisto, ma proprio non ci riesco, ho provato ad usare UNION, ma le tabelle sono molto diverse, ho provato a mettere AND ma niente, nessuno può aiutarmi? magari è semplice ma non ci arrivo proprio;
 
io non riesco a capire qual è il problema,
tu hai in mente bene ciò che stai facendo, io (noi) no ... e non lo spieghi
potresti fare un esempio di ciò che hai nel db e di cosa vuoi ottenere ?
grazie, ciao
Marino
 
Scusi Marino,

pensavo di essermi spiegato, vedo di essere più chiaro:

sto facendo un piccolo cms; ho un elenco di articoli, clicco su uno di questi per modificarlo e fin qui tutto ok;

ti incollo il codice:

PHP:
<?php include("../include/header.php"); ?>
<div id="contenitore">
    		          
    	<?php
						
	    	$sql = "SELECT articoli.title, articoli.description, articoli.keywords, articoli.visibile, articoli.id, articoli.data, articoli.h1, articoli.h2, articoli.foto, articoli.testo, articoli.categoria_id, categorie.nome FROM articoli INNER JOIN categorie ON articoli.categoria_id = categorie.categoria_id WHERE id = '".$_GET['id_articolo']."'";
	    	$ret = mysqli_query( $db, $sql );
	    	while ($row = mysqli_fetch_assoc($ret)){
			print "
			<form method='post' action='update.php?id_articolo=".$_GET['id_articolo']."'>
			<p>categoria</p>
			<select name='categoria_id'>
				<!-- qui vorrei tutte le categorie --> 
			</select> 
			<p>title</p>
			<input name='title' type='text' value='".$row['title']."'>
			<p>description</p>
			<input name='description' type='text' value='".$row['description']."'>
			<p>keywords</p>
			<input name='keywords' type='text' value='".$row['keywords']."'>
			<p>data</p>
			<input name='data' type='text' value='".$row['data']."'>
			<p>h1</p>
			<input name='h1' type='text' value='".$row['h1']."'>
			<p>h2</p>
			<input name='h2' type='text' value='".$row['h2']."'>
			<p><a class='fancybox fancybox.iframe' href='".$base_url."/admin/upload/upload_lightbox.php'>Carica Foto</a></p>
			<input name='foto' type='text' value='".$row['foto']."'>
			<p>testo</p>
			<textarea name='testo' type='text' id='editor1'>".$row['testo']."</textarea>
			<input name='submit' type='submit' value='invia' id='conferma'>
			</form>
			";
	    	}
		?>
        
    
</div>
<?php include("../include/footer.php"); ?>

se ci fa caso nel codice c'è un commento: <!-- qui vorrei tutte le categorie -->

per tirar fuori le categorie dal db in altre pagine faccio così:

PHP:
<?php

	
	    	$sql = "SELECT * FROM categorie";
	    	$ret = mysqli_query( $db, $sql );
	    	while ($row = mysqli_fetch_assoc($ret)){
			print "
			<option value=".$row['categoria_id'].">".$row['nome']."</option>
			";
	    	}
		?>

ma in quella pagina come faccio?
dovrei ragruppare le query?
ho provato con AND, UNION, LEFT JOIN virgole e puntievirgola ma nulla...
probabilmente è una cosa semplice, ma sono un novellino.

se qualcuno può aiutarmi ne sarei veramente felice, sto imparando
 
Ultima modifica:
ciao per prima cosa
scusa una domanda, ma a cosa ti serve il primo while? se id nella prima query è come penso l'id dell'articolo (primary key) col WHERE id = $_GET['id_articolo'] estrai un record solamente, quindi il while non serve.
seconda: sempre da quello che ho capito con la <select> vuoi eventualmete modificare la categoria dell'articolo, giusto?
se si devi dividere il form nel punto che ti interessa inserire le option. ti schematizzo
print prima parte del form
query estrazione categorie
while con la select
print seconda parte del form
attento però, devi dare alla option il selcted altrimenti, se non vuoi cambiare categoria, ti prende la prima option della select e te la cambia anche se non vuoi
 
ciao
prova questo schema
PHP:
<?php
require_once("../include/header.php");//esa il require
?>
<div id="contenitore">
<?php
//attento il GET può essere pericoloso, ti conviene fare delle verifiche prima di usarlo
$sql = "SELECT * FROM articoli WHERE id = '".$_GET['id_articolo']."' ORDER BY title";

$row = mysqli_fetch_assoc($ret);
?>
<form method='post' action='update.php?id_articolo=<?php echo $_GET['id_articolo']; ?>'>
<select name="categoria">
<?php
$sql_2="SELECT * FROM categorie ORDER BY categoria";
$ret_2 = mysqli_query( $db, $sql_2);
while ($row_2=mysqli_fetch_assoc($ret_2)){
	$slct="";
	if($row['categoria_id']== $row_2['categoria_id']){$slct=" selected ";}
	echo "<option value=".$row_2['categoria_id']." $slct >".$row_2['nome']."</option>";
}
?>
</select>
<!-- eccetera eccetera -->
</form>
poi io non userei il GET nel form ma le sessioni e verifica i nomi campi che posso aver sbagliato
 
ciao borgo italia,

ho fatto varie prove, mi restituisce le categorie ma i record relativi alla tabella articoli no, ti posto il codice...

grazie 1000 per le risposte e per la pazienza

buona serata



PHP:
<?php include("../include/header.php"); ?>
<div id="contenitore">

<?php

$sql = "SELECT articoli.title, articoli.description, articoli.keywords, articoli.visibile, articoli.id, articoli.data, articoli.h1, articoli.h2, articoli.foto, articoli.testo, articoli.categoria_id, categorie.nome FROM articoli INNER JOIN categorie ON articoli.categoria_id = categorie.categoria_id WHERE id = '".$_GET['id_articolo']."'";

$row = mysqli_fetch_assoc($ret);
?>
<form method="post" action="update.php?id_articolo=<?php echo $_GET['id_articolo']; ?>">
<select name="categoria">
<?php
$sql_2="SELECT * FROM categorie";
$ret_2 = mysqli_query( $db, $sql_2);
while ($row_2=mysqli_fetch_assoc($ret_2)){
    $slct="";
    if($row['categoria_id']== $row_2['categoria_id']){$slct=" selected ";}
    echo "<option value=".$row_2['categoria_id']." $slct >".$row_2['nome']."</option>";
}
?>
</select> 
			<p>title</p>
			<input name="title" type="text" value="<?php $row['title']?>">
			<p>description</p>
			<input name="description" type="text" value="<?php $row['description']?>">
			<p>keywords</p>
			<input name="keywords" type="text" value="<?php $row['keywords']?>">
			<p>data</p>
			<input name="data" type="text" value="<?php $row['data']?>">
			<p>h1</p>
			<input name="h1" type="text" value="<?php $row['h1']?>">
			<p>h2</p>
			<input name="h2" type="text" value="<?php $row['h2']?>">
			<p><a class="fancybox fancybox.iframe" href="<?php echo $base_url ?>/admin/upload/upload_lightbox.php">Carica Foto</a></p>
			<input name="foto" type="text" value="<?php $row['foto']?>">
			<p>testo</p>
			<textarea name="testo" type="text" id="editor1"><?php $row['testo']?></textarea>
			<input name="submit" type="submit" value="invia" id="conferma">
			</form>

        
    
</div>
<?php include("../include/footer.php"); ?>
 
incredibile...

vedo i record riguardanti l'articolo e tutte le categorie, devo capire come mettere "selected" sulle option;

ti incollo il codice so che ci sono diverse imprecisioni sul codice, sono all'inizio però...

ma perchè non dovrei usare il GET?

grazie infinite

PHP:
 <?php include("../include/header.php"); ?>
<div id="contenitore">
                      
        <?php
                        
            $sql = "SELECT articoli.title, articoli.description, articoli.keywords, articoli.visibile, articoli.id, articoli.data, articoli.h1, articoli.h2, articoli.foto, articoli.testo, articoli.categoria_id, categorie.nome FROM articoli INNER JOIN categorie ON articoli.categoria_id = categorie.categoria_id WHERE id = '".$_GET['id_articolo']."'";
            $ret = mysqli_query( $db, $sql );
            while ($row = mysqli_fetch_assoc($ret)){
            print "
            <form method='post' action='update.php?id_articolo=".$_GET['id_articolo']."'>
            <p>categoria</p>
            <select name='categoria_id'>";?>

	<?php
	   	$sql2 = "SELECT * FROM categorie";
		$ret2 = mysqli_query( $db, $sql2 );
		while ($row2 = mysqli_fetch_assoc($ret2)){
			print "<option value=".$row2['categoria_id'].">".$row2['nome']."</option>";
		}
	?>
                    
            <?php print "</select> 
            <p>title</p>
            <input name='title' type='text' value='".$row['title']."'>
            <p>description</p>
            <input name='description' type='text' value='".$row['description']."'>
            <p>keywords</p>
            <input name='keywords' type='text' value='".$row['keywords']."'>
            <p>data</p>
            <input name='data' type='text' value='".$row['data']."'>
            <p>h1</p>
            <input name='h1' type='text' value='".$row['h1']."'>
            <p>h2</p>
            <input name='h2' type='text' value='".$row['h2']."'>
            <p><a class='fancybox fancybox.iframe' href='".$base_url."/admin/upload/upload_lightbox.php'>Carica Foto</a></p>
            <input name='foto' type='text' value='".$row['foto']."'>
            <p>testo</p>
            <textarea name='testo' type='text' id='editor1'>".$row['testo']."</textarea>
            <input name='submit' type='submit' value='invia' id='conferma'>
            </form>
            ";
            }
        ?>
        
    
</div>
<?php include("../include/footer.php"); ?>
 
funziona tutto... borgo italia non so come ringraziarti;

erano settimane che ci provavo; mi sto avvicinando ora a questo linguaggio, conosco bene l'html,
ma mi affascina molto il php per le potenzialità che offre; bazzico tra i forum e leggo le guide,
ho preso delle "ripetizioni" da un amico programmatore, ma cosa consiglieresti ad uno che vuole imparare questo linguaggio?

grazie mille ancora
buona serata
 

Discussioni simili