Vous n'êtes pas identifié(e).
Enfin une explication que j'ai pu comprendre (si, si, ça arrive).
Le lien, dans la doc php, était dans la page dont Maskime nous avait fournit le lien, il fallait juste aller jusqu'à là :
Retourner des références.
Donc c'est pour obtenir, dans une variable, une référence (donc une indirection) à un attribut d'une instance de classe. Ce qui permet d'interagir sur l'attribut en modifiant la variable. Disons que c'est pour une commodité d'écriture, car, sinon, je ne vois pas bien l'intérêt.
Dis comme ça, pour le newbie en POO, c'est de l'espéranto (voire de l'hébreu), mais l'exemple dans le lien est très simple et clair, et en français.
Bon, je vais pouvoir reprendre une activité normale.
Dankon Alain,
Ce point n'était pas ma plus grande interrogation (quoique), mais ça dégage l'esprit d'une préoccupation pour lui permettre de se concentrer sur le reste.
Le hasard veut que je sois en train de traduire l'Appendix A de «Learning PHP Data Objects (PDO)» Appendice qui est une «Introduction to OOP in PHP5». Je baigne donc en pleine POO d'où ma curiosité pour ce post de Maskime.
Je nage dans l'incompréhension
Vous souhaitez retourner une valeur par référence, pas par valeur.
Cela vous permet d'éviter de copier une variable.
Solution
La syntaxe permettant de retourner une valeur par réféence est similaire à celle
permettant de passer u argument par référence. Cependant, plutôt que de placer un
& devant le paramètre, il faut le placer devant le nom de la fonction :
*/
function &wrap_html_tag($chaine,$balise='b'){
return "<$balise>$chaine</$balise><br />";
}
/*
De même, vous devez utiliser l'opérateur d'assignation =& à la place de l'opérateur =
lorsque vous invoquez la fonction
*/
$texte='ceci est une chaine';// ça c'est moi qui l'ai ajouté
$html =& wrap_html_tag($texte);
//tout le reste c'est moi qui l'ai ajouté
echo $texte;
echo $html;
$html = wrap_html_tag($texte);
echo $texte;
echo $html;
/*
Discussion
A la différence du passage des valeurs aux fonctions, où un argument est
passé soit par valeur, soit par référence, vous pouvez facultativement choisir
de ne pas assigner une référence et de prendre simplement la valeur de retour
de la fonction. Utilisez simplement = à la place de =& et PHP atribuera la valeur
plutôt que la référence.
*/
et j'obtiens
Notice: Only variable references should be returned by reference in G:\www\PHPDeb\reference.php on line 19
ceci est une chainececi est une chaineNotice: Only variable references should be returned by reference in G:\www\PHPDeb\reference.php on line 19
ceci est une chainececi est une chaine
dont le source html est
ceci est une chaine<b>ceci est une chaine</b><br />
Bref, je ne suis pas plus avancé, l'avertissement semble contredire les auteurs et les deux syntaxes semblent fournir le même résultat.
Si vous pouviez m'expliquer :
1. pourquoi cet avertissement
2. à quoi tout cela rime-t'il
3. où j'ai merdé dans ce bout de script et pourquoi.
On verra ensuite pour comprendre l'utilisation de cette syntaxe dans le cadre d'une déclaration de méthode public static d'une classe, sujet intial de ce post.
Merci à quiconque saura éclairé mon vieux cerveau hébété.
D'autant que ce n'est pas du breton mais de l'espéranto, comme mon pseudo.
Zamenhof aurait dû te mettre sur la voie.
Ceci dit, la traduction était presque bonne.
Là ou où il y a de la lumière on trouve aussi de l'ombre. C'est l'éternelle histoire du ying et du yang, voire du côté obscur de la force.
Pour en revenir à ton problème, je crois que tu n'as pas saisi ma réponse :
Quant à LIKE il plaque son masque sur l'ensemble de la colonne.
C'est à dire que rien ne saurait détourner LIKE de sa recherche sur l'ensemble de la colonne, que celle-ci contienne ou non des balises html, fussent-elles des balises <br />
Alors je dois être très, mais très, très fatigué.
Ou d'un grosseur de nullité incommensurable.
Même après avoir lu la doc, j'avoue ne pas comprendre ce qu'est censée produire cette déclaration.
Je dois être fatigué, ou juste un gros nul.
Il y a plusieurs choses qui ne vont pas dans ton script.
La première me semble fondamentale.
Imagine que les réservations des places pour un vol, ou un spectacle soient réalisées comme tu le fais.
Si deux personnes se connectent quasi simultanément et qu'il ne reste plus qu'une place, celle-ci pourrait très bien être attribuée deux fois.
C'est pourquoi ce genre de choses doit se faire en mode transactionnel avec verrouillage de la table.
S'agissant du code de la boucle foreach, que sont censés contenir respectivement $row et $value (principalement $row) ?
Et $_POST[reference_produit] est un array, pas une valeur scalaire, donc tu ne peux pas t'en servir tel quel dans le SET de l'UPDATE.
En outre, il n'y a aucune corrélation entre le tableau parcouru par foreach et celui-ci, d'où tes problèmes.
Pour être tout à fait précis il faudrait dire :
.= signifie : concaténer au contenu de la variable à gauche de l'opérateur le contenu de celle de droite.
voire, si à droite on a une chaine et non une variable :
.= signifie : concaténer au contenu de la variable à gauche de l'opérateur la chaine à droite de celui-ci.
C'est plus par rejet des autres et par sa proximité avec MyQSL.
Une sorte de «baby duck syndrom»
En outre, SQLite n'est pas un vrai SGBDR, les autres sont des produits non OPEN SOURCE.
Si rien ne s'affiche, c'est plutôt bon signe, cela signifie que tout se passe bien, puisqu'à part les mysql_error(), ce script n'est censé provoquer aucun affichage.
Il te faudrait mettre, provisoirement, un or die(mysql_error()) derrière tes deux appels à mysql_connect() et à mysql_select_db(), pour qu'on ait un message plus parlant en provenance du serveur MySQL.
Saluton,
Personnellement, je vais m'orienter vers PostgreSQL. Mais il faudra bien en passer, la plupart du temps, par ce que proposerons les hébergeurs.
Une chose est certaine, l'abstraction de l'extension PDO rendra les migrations quasi indolores pour les scripts qui l'auront adoptée.
Un grand merci à luce qui se sera montrée tout à fait visionnaire sur ce coup-là.
J'ai bien regardé mon fichier httpd.conf l'extension php est bien mentionnée.
Ce n'est pas ce à quoi je me référais. Je pensais que le fait que le code PHP s'affiche en clair dans la page provenait de l'extension du fichier script demandé dans le navigateur.
Tout ce qui contient du php, script maître ou include, doit être sauvegardé avec une extension php.
Si tu as une page mapage.html, dans laquelle tu mets <?php include 'script.php'; ?>, d'une part script.php ne sera pas inclus (sauf directive différente dans le hhtpd.conf effectivement) mais <?php include 'script.php'; ?> restera dans le code source de la page affichée et, éventuellement, apparaîtra à l'écran.
Concernant l'adresse de mon serveur, j'ai essayé avec localhost et l'adresse Ip en précisant ou non le port, rien à faire. j'avoue ne pas savoir où chercher le problème.
Il ne peut donc s'agir que d'une erreur dans le couple USER PWD ou, mais je n'ose penser qu'il s'agisse de cela, que ton serveur MySQL n'est pas actif, ou que tu appelles la page via le pseudo protocole file et non http.
file://wamp5/www/monscript.php au lieu de http://localhost/monscript.php
Bravo, il commence à être tout à fait fréquentable ce forum.
Enfin, je ne parle que de la forme, de l'ergonomie et de la qualité des intervenants (surtout).
Parce que le contenu, est pour l'instant un peu, comment dire, léger ?
Est-il prévu de mettre des boutons d'insertion d'émoticone, de code, d'url, de citation ?
Oui, j'imagine dès que l'on en aura le temps ![]()
Bon, courage, je crois qu'on tient une quasi V2.
Et surtout MERCI !
Bien sûr, il faut juste me fournir le cahier des charges (charte graphique etc...).
Voilà mon problème, je tente désespérément de me connecter à a base. Je suis sous apache (WIndows), mes scripts sous php fonctionnent, je peux me connecter à mysql via phpmyadmin, mais dès que je tente de me connecter via une page en php ou en html avec le bon code il ne se passe rien? ou alors le code s'affiche en pleine page...*
Si le code PHP s'affiche en pleine page c'est que l'extension accolée au nom de la page n'est pas .php
Sinon, même diagnostic que moogli, probablement qu'il faut remplacer l'adresse IP par localhost, ou ajouter le port 3306 à la fin de l'adresse IP :
Enfin, puisque tu débutes en PHP, pourquoi ne pas tout de suite utiliser PDO, si tu es en PHP 5 ?
Saluton,
Il n'est pas normal qu'une colonne d'une table de base de données contienne des balises <br /> elle devrait contenir, à la place, des \n.
A l'affichage on fait echo nl2br(nomdecolonne) et les \n seront remplacés par des <br />.
Quant à LIKE il plaque son masque sur l'ensemble de la colonne.
Je serais toi je virerais déjà ce $pdf->Open(); qui ne me dit rien qui vaille.
Ensuite pourquoi un SELECT * La guerre des étoiles
ensuite utilises plutôt mysql_fetch_assoc() (voire, encore plus meilleur PDO)
et, surtout, pourquoi une requête dans la boucle foreach ?
Le moins qu'on puisse dire c'est que tu ne lésines pas sur les requêtes d'UPDATE.
Une seule requête finale reprenant toutes les id dans un IN et le tour était joué.
Je ne vois pas dans ton code ce qui instancie la classe PDF_Label, il est donc difficile de se prononcer sans l'intégralité du code.
Je reviens du site FPDF, as-tu essayé de faire tout bêtement comme dans l'exemple du script de LPA ?
// Format standard
$pdf = new PDF_Label('L7163');
$pdf->AddPage();
// On imprime les étiquettes
for($i=1;$i<=20;$i++) {
$text = sprintf("%s\n%s\n%s\n%s %s, %s", "Laurent $i", 'Immeuble Toto', 'av. Fragonard', '06000', 'NICE', 'FRANCE');
$pdf->Add_Label($text);
}
$pdf->Output();
?>
pour résumer, ton echo $data['nom'] te donne la chaine "TESTEUR - VERIFICATEUR" donc :
- cherche la position de " - "
- a gauche, récupère la valeur de ta var "TESTEUR"
- a droite, récupère la valeur de ta var "VERIFICATEUR"
Ou bien utilises list et explode.
Saluton,
Le problème est que tu utilises une extension de FPDF, FPDF_Label, et que je ne connais pas toutes les extensions (et loin de là) que propose leur site.
Pour celle-ci, de mémoire, je sais qu'il ne faut pas prendre à la lettre tout ce qui est mis dedans en commentaires, par exemple, les tailles ne sont pas en mm mais toujours en points.
Par contre, as-tu posé la question sur leur forum ?
Bah ! Et moi qui te croyais directeur.... pffff ^^
de conscience, mon fils, de conscience.
Envoies un courriel à Manicow car je ne sais pas comment s'organise c't'affaire de nos jours.
Ceci dit ce n'est pas l'Académie Française non plus, remarques, tu prendrais le siège de Raf...va falloir assurer ![]()
+1 : Ce serait un honneur que de vous assister !
T'aurais pas oublié de terminer ta phrase par MAAIIITRE ?