ciao a tutti,
ho un dubbio con un ciclo if:
qualcuno riescie a spiegarmi come funziona questa condizione?
if ($record) {
graciess
ciao a tutti,
ho un dubbio con un ciclo if:
qualcuno riescie a spiegarmi come funziona questa condizione?
if ($record) {
graciess
se $record esiste o è vera restituisce la condizione che gli dai.
Codice PHP:
$record=true;
if ($record) {
echo"E' vera";
}
else{
echo"E' falsa";
}
![]()
... ma soprattutto "if" non è un ciclo poichè esegue al più una sola istruzione :-)
(si parla di ciclo quando si eseguono più di una istruzione)
www.valarsoft.com (Free GNU/GPL softwares and games)
si scusa, intendevo dire condizione non ciclo, putroppo línserimento non avviene in maniera corretta in quanto la condizione serve per aggiornare i campi se gia presenti o inserirli posto il codice
$query = "SELECT id, obj_id FROM tabella WHERE obj_id='".$id."'";
$database->setQuery($query);
$database->loadObject($record);
if ($record) {
$rid = $record->id;
$query = "UPDATE tabella SET ";
$first = true;
foreach ($fields as $key=>$value) {
if (!$first) {
$query .= ",";
} else {
$first = false;
}
if (is_numeric($value)) {
$query .= $key."=".$value;
} else {
$query .= $key."=".$database->Quote($value);
}
}
$query .= " WHERE id=".$rid;
$database->setQuery($query);
$database->query($query);
} else {
$query = "INSERT INTO tabella (".implode(",",array_keys($fields)).") VALUES (";
$first = true;
foreach ($fields as $key=>$value) {
if (!$first) {
$query .= ",";
} else {
$first = false;
}
if (is_numeric($value)) {
$query .= $value;
} else {
$query .= $database->Quote($value);
}
}
$query .= ")";
$database->setQuery($query);
$database->query($query);
$rid = $database->insertid();
}
fai questa condizione
if ($record) {
ma $record non è stato impostato da nessuna parte; di conseguenza ti ritorna false (o errore)...
ma record e' stato impostato qui
$query = "SELECT id, obj_id FROM tabella WHERE obj_id='".$id."'";
$database->setQuery($query);
$database->loadObject($record);
quello che ho notato e' guardando il mio db (tramite phpmyadmin)
mi trovo gli ID non in ordine d' inserimento o essendo autoincrement progressivo ma
1,2,3,4,5,6,7,34,9,10,56.....ecc..ecc...
l' insert che vado a fare dei nuovi prodotti non dovrebbe rispettare il vaore ID successivo? e poi come mai mi cancella dei record???
e poi ad ogni import mi trovo la tabella con dei dati in eccesso
l'auto increment deve funzionare così, se hai:
1,2,3,4,5,6,7,8,9 e cancelli il record n° 9, il prossimo che inserirai sarà categorizzato al n° 10 proprio perchè è auto increment.
Poi record non l'hai impostato, impostato è quando scrivi:
$record=qualcosa allora l'if ti darà true se no darà esito negativo oppure la funzione record record(); dove alla fine di essa c'è un return true o false.
esatto il problema e' che in teoria non cancello nessun record quindi dovrei trovarli tutti in sequenza, e non
mischiati.
ma nel momento nel quale effettuo questa select
$query = "SELECT id, obj_id FROM tabella WHERE obj_id='".$id."'";
$database->setQuery($query);
$database->loadObject($record);------------------> con questo inizializzo $record
e poi faccio
if ($record) {
quindi se il record esiste faccio update altrimenti inserisco, non e' corretto?
allora, se il problema è solo l'ordinamento dei record la domanda è: che te ne importa?
fai un ORDER BY nella query e il problema non si pone;
per quanto riguarda if($record) che restituisce false, vuol dire che la query non ha trovato record...se fai un var_dump($record) dovrebbe darti NULL...oppure fai qualche var_dump e vediamo che esce, così capiamo perchè a $record non associa nulla...
sempre che $record venga inizializzato come dici tu...
$database->loadObject($record);------------------> con questo inizializzo $record
ho inserito
if (isset($record)) {
echo "Questa variabile è valorizzata ".$rid."-".$id2."-".$obj_id."
" ;
}
il mio problema e'che utilizzo un'applicazione che lavora con il valore ID, purtoppo per questo "problema" ogni volta che vado a fare l'mport dei dati, cambiano gli ID dei record e quindi mi sfasa tutto