Problema con pagina web

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Problema con pagina web

    In realtà mysqli prevede sia un'interfaccia procedurale, simile a quella di mysql (introdotta per renderla simile a mysql, ma che se non sbaglio è ugualmente deprecata) che una object oriented. PDO, invece, è solo object oriented.
    Se provi a cercare qualche esempio di codice scritto con PDO noterai subito che c'è una bella differenza di utilizzo fra le due modalità, procedurale e OO..

    In generale, comunque, l'interfaccia più usata è PDO, in quanto essa si pone ad un livello di astrazione maggiore e consente di lasciare il codice (quasi) inalterato in seguito ad un cambiamento di DB (es: passo da MySQL a MSSQL Server)

    In ogni caso se non hai intenzione di usare il tuo programma sul web puoi tranquillamente lasciare le cose così, mentre se hai intenzione di pubblicarlo ti consiglio caldamente di passare ad una delle 2 interfacce sopra descritte in quanto l'interfaccia mysql soffre di problemi di sicurezza (vedi SQL injection)
  • Re: Problema con pagina web

    Come devo rimpiazzare quindi le parti di mysql? Basta che cambio il nome della procedura o devo proprio modificare la struttura?
  • Re: Problema con pagina web

    No, se vuoi usare i meccanismi non deprecati devi modificare in maniera abbastanza significativa le parti in cui accedi al DB


    Sent from my iPhone using Tapatalk
  • Re: Problema con pagina web

    $db='mysql:dbname=medioeval;host=127.0.0.1';
    $conn= new PDO($db,'rec');
    
    //prendi denaro, livello, sazieta, occupato
    $query=	'SELECT gmerci.gmerce_quantity,users.level,users.hunger,users.busy,users.fitness,citta.city_name
    		FROM users
    			JOIN gmerci ON users.user_id = gmerci.user_ide
    			JOIN citta ON  users.city_ide = citta.city_id
    		WHERE gmerci.merce_ide=1
    		AND gmerci.gmerce_place=1
    		AND users.name="'. $_SESSION['username'].'"';
    
    $result= $conn->query($query);
    $row= $result->fetch(PDO::FETCH_ASSOC);
    ho fatto giusto?
  • Re: Problema con pagina web

    Si, indicativamente è giusto. In realtà se quella è una query che intendi fare più volte puoi creare uno statement in questo modo:
    
    //prendi denaro, livello, sazieta, occupato
    $query=  $conn->prepare( 'SELECT gmerci.gmerce_quantity,users.level,users.hunger,users.busy,users.fitness,citta.city_name
          FROM users
             JOIN gmerci ON users.user_id = gmerci.user_ide
             JOIN citta ON  users.city_ide = citta.city_id
          WHERE gmerci.merce_ide=1
          AND gmerci.gmerce_place=1
          AND users.name= :username');
    
    $query->bindValue('username', $_SESSION['username']);
    $result = $query->execute();
    
    In questo modo se devi fare più volte la query basta che chiami più volte la bindValue e la execute
  • Re: Problema con pagina web

    Avevo intuito questa possibilità, ogni pagina del mio sito ha quella query, io l'ho messa in un include e via
  • Re: Problema con pagina web

    <?php
    										$show = "" ;
    										$query=	'SELECT realm_id, realm_name, type_ide 
    												FROM regni 
    												WHERE realm_lang="it"';
    
    												$result= $conn->query($query);
    												$row=$result->fetch(PDO::FETCH_ASSOC);
    											
    												foreach ($row as $key=>$value) {	
    													extract($value);
    													$name = $value['realm_name'];
    													$pre = get_type($value['type_ide']);
    													$show .= '<option value="' . $value['realm_id'] . '">' . $pre . '&nbsp' . $name . '</option>';
    													}
    													echo $show;
    									?>
    non capisco dove sbaglio...
  • Re: Problema con pagina web

    Che errore ti da?


    Sent from my iPhone using Tapatalk
  • Re: Problema con pagina web

    Nessuno ma semplicemente non funziona... vi mando tutto il codice

    funzione da richiamare
    // concatena il select dei regni
    function get_type($id){
    
    	global $db;
    
    	$query='SELECT type_name
    			FROM type_r
    			WHERE type_id =' . $id;
    
    	$result = 		mysql_query($query, $db) or die(mysql_error($db));
    
    	$row = 			mysql_fetch_assoc($result);
    	extract($row);
    
    	return $type_name;
    codice che mi crea il select e mi concatena i vari campi della query
    $show = "" ;
    										$query=	'SELECT realm_id, realm_name, type_ide 
    												FROM regni 
    												WHERE realm_lang="it"';
    
    												$result = 		mysql_query($query, $db) or die(mysql_error($db));
    
    										
    												while ($row = mysql_fetch_assoc($result)) {
    													$name = $row['realm_name'];
    													$pre = get_type($row['type_ide']);
    													$show .= '<option value="' . $row['realm_id'] . '">' . $pre . '&nbsp' . $name . '</option>';
    													}
    													echo $show;
  • Re: Problema con pagina web

    Probabilmente non ti da errori perché se non ricordo male con PDO di default il reporting è disattivato. Per abilitarlo devi inserire le seguenti righe
    
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    Oppure al posto delle eccezioni puoi avere dei warning con PDO::ERRMODE_WARNING

    Sent from my iPhone using Tapatalk
  • Re: Problema con pagina web

    Non è un errore perche semplicemente mi construisce l'array in modo giusto, quello che non riesco è fare l'istruzione che mi inserisca in ogni select la riga dell'array.. mi scrive solo la prima e me la ripete 3 volte quando dovrebbero essere 3 diverse
  • Re: Problema con pagina web

    Select del form non della query
  • Re: Problema con pagina web

    Ok ho modificato tutto e funziona.. circa
    ora il codice è
    $show = "" ;
    										$query=	'SELECT regni.realm_id, regni.realm_name, type_r.type_name
    												FROM regni 
    												INNER JOIN type_r ON regni.type_ide=type_r.type_id
    												WHERE regni.realm_lang="it"';
    
    												$result= $conn->query($query);
    												$row=$result->fetch(PDO::FETCH_ASSOC);
    											
    												foreach  ($row as $sel){	
    													
    													$name = $sel['realm_name'];
    													$pre = $sel['type_name'];
    													$show .= '<option value="' . $sel['realm_id'] . '">' . $pre . '&nbsp' . $name . '</option>';
    													}
    													echo $show;
    più ottimale e semplice... maaaa al posto dei valori inseriti nel DB mi scrive solo 11, M M e D D.. perchè?
  • Re: Problema con pagina web

    Dunque così ad occhio vedo solo che manca il punto e virgola dopo il non breaking space: '&nbsp;'
    Inoltre $sel dovrebbe già contenere i valori!


    Sent from my iPhone using Tapatalk
  • Re: Problema con pagina web

    Era tutto giusto.. L'unuco errore era nella funzione pdo che crea l'array associativo.. Era fetchall e non solo fetch... Fetch converte in array solo la prima riga. Fecthall le converte tutte... Non ho capito il senso di fare questa distione tra funzioni ma vabbe ora va non ero io ignorante ma la funzione incompleta:)
Devi accedere o registrarti per scrivere nel forum
29 risposte