[PHP]Select

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

[PHP]Select

Messaggio da Lucciano »

Salve qualcuno potrebbe darmi un chiarimento sulla seguente riga di codice:

Codice: Seleziona tutto

echo'<option value="'  .$row['movietype_id'].  '" selected="selected">';
perchè all'interno di option value dopo aver messo i doppi apici mette i singoli e poi concatena il tutto?

Non si può scrivere così?

Codice: Seleziona tutto

echo'<option value="$row['movietype_id']" selected="selected">';
Grazie
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Non puoi perché così non sostituiresti la variabile col suo valore.
Se non vuoi concatenare puoi fare così:

Codice: Seleziona tutto

echo "<option value=\"{$row['movietype_id']}\" selected=\"selected\">";
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Non ho ben capito Zoff. Gli apici singoli risolvono il valore della variabile in esso contenuto? Cioè se metto $row['movietypeid'] dentro apici singoli avrò il valore?

Per quanto riguarda questo codice

Codice: Seleziona tutto

$query='SELECT campo1,campo2,campo3
            FROM persone
            WHERE persone_id='.$_GET['id'];
noto che dopo la chiusura dell'apice singolo subito dopo l'uguale mette un punto e concatena $_GET['id']. Vale lo stesso discorso di prima?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

La questione è molto semplice:

Codice: Seleziona tutto

<?php

$var = 'ciao';

echo "$var" . PHP_EOL; //Stampa ciao
echo '$var' . PHP_EOL; //Stampa $var
Quello che conta è il primo apice utilizzato, se è singolo NON vengono sostituite le variabili.

Ma cosa più importante, le query non si costruiscono né concatenando né inserendo le variabili dentro le stringhe.
Si usano i prepared statement: http://php.net/manual/en/pdo.prepared-statements.php
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Quindi nel seguente codice:

Codice: Seleziona tutto

echo'<option value="'  .$row['movietype_id'].  '" selected="selected">';
dato che $row['movietype_id'] è contenuto in apici singoli il valore non viene sostituito?

Per quanto riguarda i prpared statement cerco di sostituire il tutto con il Pdo (se riesco). Ma con le mysqli procedurali non esiste il prepared statement?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

In quel codice la variabile non è dentro una stringa, ma è concatenata alla stringa con l'operatore punto.

Per mysqli http://php.net/manual/it/mysqli.prepare.php
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

si ma ci stà l'apice singolo..

Codice: Seleziona tutto

"'  .$row['movietype_id'].  '"
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Quella stampa equivale a:

Codice: Seleziona tutto

$var1 = '<option value="';
$var2 = $row['movietype_id'];
$var3 = '" selected="selected">';
echo $var1 . $var2 . $var3;
Non ci sono variabili dentro stringhe.
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Zoff ho il seguente codice (sto trasformando da myqli a Pdo)

Codice: Seleziona tutto

$query='SELECT campo1,campo2,campo3
            FROM colonna
            WHERE perosna_id='.$_GET['id'];
    $result=$pdo->query($query);
    extract (PDO::FETCH_ASSOC($result));
Tuttavia quando eseguo il codice mi dice:

Fatal error: Call to undefined method PDO::FETCH_ASSOC()

Ps: Ho fatto così e sembra funzionare:

$query='SELECT campo1,campo2,campo3
FROM colonna
WHERE persona_id='.$_GET['id'];
$result=$pdo->query($query);
$s=$result->fetchAll(PDO::FETCH_ASSOC);
extract ($s);

Anzi non funziona
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Perché non fai come indicato nella documentazione che ti ho linkato?

Codice: Seleziona tutto

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Io voglio usare il Pdo!
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

In pratca zoff il codice che mi da problemi dovrebbe essere questo:

Codice: Seleziona tutto

if ($_GET['action']=='edit')
{
    $query='SELECT campo1,campo2,campo3
            FROM persone
            WHERE persone_id='.$_GET['id'];
    $result=$pdo->query($query);
    extract($result->fetchAll(PDO::FETCH_ASSOC));
}else
{
    //Setta i valori a null
    $nome='';
    $cognome="";
    $anno=date("Y");
 
}
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Appunto.... la variabile $dbh è l'oggetto PDO.
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Si ma come applico extract? Tu fai l'esempio con il while
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Che c'entra extract con PDO?

In ogni caso extract vuole come argomento un array associativo, tu gli passi un array che contiene array associativi.
Per intenderci, fetchAll() resistuisce:

Codice: Seleziona tutto

[
    [ "campo1" => "val1", "campo2" => "val2", "campo3" => "val3"]
];
extract vuole solo:

Codice: Seleziona tutto

[ "campo1" => "val1", "campo2" => "val2", "campo3" => "val3"]
Ti consiglio vivamente di leggere la documentazione evitando di andare a caso.
Usa fetch() anziché fetchAll(), ma se non leggi la documentazione non sai scegliere i metodi giusti.
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Allora Zoff ti spiego. Quello che io devo fare è "trasformare" un esercizio dal mysql al pdo.

Ora nel mysql ho questo codice:

Codice: Seleziona tutto

<?php
$db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or 
    die ('Unable to connect. Check your connection parameters.');
mysql_select_db('moviesite', $db) or die(mysql_error($db));

if ($_GET['action'] == 'edit') {
    //retrieve the record's information 
    $query = 'SELECT
            movie_name, movie_type, movie_year, movie_leadactor, movie_director
        FROM
            movie
        WHERE
            movie_id = ' . $_GET['id'];
    $result = mysql_query($query, $db) or die(mysql_error($db));
    extract(mysql_fetch_assoc($result));
} else {
    //set values to blank
    $movie_name = '';
    $movie_type = 0;
    $movie_year = date('Y');
    $movie_leadactor = 0;
    $movie_director = 0;
}
?>
Io sto tentando di trasformarlo nel Pdo con il seguent codice:

Codice: Seleziona tutto

<?php

try {

    $pdo = new PDO('mysql:host=localhost;dbname=moviesite', 'root', '');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->exec('SET NAMES"utf8"');
}catch (PDOException $e)
{
    $errore='Impossibile connettersi al database'.$e->getMessage();
    echo $errore;
    exit();
}

if ($_GET['action']=='edit')
{
    $query='SELECT movie_name,movie_type,movie_year,movie_leadactor,movie_director
            FROM movie
            WHERE movie_id='.$_GET['id'];
    $result=$pdo->query($query);
    extract($result->fetchAll(PDO::FETCH_ASSOC));
}else
{
    //Setta i valori a null
    $movie_name='';
    $movie_type=0;
    $movie_year=date("Y");
    $movie_leadactor=0;
    $movie_director=0;
}
?>
Però ho l'impressione che qualcosa non va bene
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Te l'ho appena scritto cosa non va, però non sembri leggere le risposte che ti vengono date:
Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4881981#p4881981][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Che c'entra extract con PDO?

In ogni caso extract vuole come argomento un array associativo, tu gli passi un array che contiene array associativi.
Per intenderci, fetchAll() resistuisce:

Codice: Seleziona tutto

[
    [ "campo1" => "val1", "campo2" => "val2", "campo3" => "val3"]
];
extract vuole solo:

Codice: Seleziona tutto

[ "campo1" => "val1", "campo2" => "val2", "campo3" => "val3"]
Ti consiglio vivamente di leggere la documentazione evitando di andare a caso.
Usa fetch() anziché fetchAll(), ma se non leggi la documentazione non sai scegliere i metodi giusti.
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Grazie zoff.In pratica io gli passavo un arry multidimensionale, mentre extract vuole un semplice array
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP]Select

Messaggio da Zoff »

Ma la cosa piu' importante dovrebbe essere sostituire query() con prepare()+execute() altrimenti usi PDO ma continui ad avere TUTTI i problemi del driver base.
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
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [PHP]Select

Messaggio da Lucciano »

Si ma non riesco a farlo!!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti